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