Programming Paradigms

Lecture videos

CoSc 450

Lecture 1.1: Programming in Scheme
Lecture 1.2: Recursion I
Lecture 1.3: Recursion II
Lecture 1.4: Tail Recursion
Lecture 1.5: Tail Recursion, Correctness Proofs
Lecture 1.6: Fermat and Perfect Numbers
Lecture 1.7: Perfect Numbers, The Golden Ratio
Lecture 1.8: The Josephus Problem, Fractals, Higher-Order Procedures
Lecture 1.9: Higher-Order Procedures, The Halting Problem
Lecture 1.10: Procedure Factories, The Game of Nim
Lecture 1.11: Nim with Integer Implementation
Lecture 1.12: Nim with Procedure Implementation
Lecture 1.13: Lists, The Interleave Problem
Lecture 1.14: Interleave, Map, and Reverse
Lecture 1.15: Efficient Reverse, Merge Sort
Lecture 1.16: A Counting Problem, Tree Traversals
Lecture 1.17: Expression Trees, Review

Lecture 2.1: Introduction to Prolog, Facts
Lecture 2.2: Rules, Backtracking, Data Objects
Lecture 2.3: Unification
Lecture 2.4: Lists in Prolog
Lecture 2.5: List Predicates and Permutations
Lecture 2.6: Arithmetic, Structured Databases
Lecture 2.7: Structured Databases, Finite State Machines
Lecture 2.8: Finite State Machines, Cuts
Lecture 2.9: Using Cuts
Lecture 2.10: Negation as Failure
Lecture 2.11: Testing the Types of Terms
Lecture 2.12: Constructing, Decomposing, and Comparing Terms
Lecture 2.13: Input and Output
Lecture 2.14: Review

Lecture 3.1: Concurrency as Interleaving Statement Executions
Lecture 3.2: Multiprogramming, Multiprocessing, Atomic Statements
Lecture 3.3: Safety, Liveness, Limited Critical Reference
Lecture 3.4: Volatile Variables, C--, Java
Lecture 3.5: Java Concurrency, Processes, Threads
Lecture 3.6: Java Exceptions
Lecture 3.7: Discussion of Assignment 17, The try-catch-finally Statement
Lecture 3.8: Discussion of Assignment 18, try-catch-finally, Critical Sections
Lecture 3.9: Critical Section Problem, Attempt 1
Lecture 3.10: Critical Section Problem, Attempts 2, 3, 4
Lecture 3.11: Hardware Solutions, Mutual Exclusion of Attempt 3
Lecture 3.12: An Equational Deductive System for Linear Temporal Logic I
Lecture 3.13: An Equational Deductive System for Linear Temporal Logic II
Lecture 3.14: Discussion of Assignment 21, Verification of Dekker's Algroithm
Lecture 3.15: Semaphores, C-- Semaphores
Lecture 3.16: Java Semaphores, Semaphore Invariants, The Producer-Consumer Problem
Lecture 3.17: The Dining Philosophers Problem, Introduction to Monitors
Lecture 3.18: A Monitor Implementation of Semaphores
Lecture 3.19: Monitor Classification
Lecture 3.20: Monitor Solution to Producer-Consumer Problem
Lecture 3.21: Discussion of Assignment 24, The Readers and Writers Problem
Lecture 3.22: Concurrency in C++ 11