summer 2025: cs-1102

Course Outline and Lectures:
The following is a tentative outline for the classes, lectures, and assignments for the course:
Module 1: A Functional Model of Computation
Lecture 1: Introduction, Logistics, and Course Outline
Lecture 2: Natural Numbers and the Axiom of Induction
Lecture 3: Multiplication and Division
Lecture 4: An Algorithm of Panini
Lecture 5: Place-Value and Fixed Size Representations
Lecture 6: An Algebra of Lists
Lecture 7: Map, Filter, Fold
Lecture 8: Iteration is Tail Recursion (Haskell)
Module 2: A Procedural Model of Computation
Lecture 9: Mutability in Programming (C)
Lecture 10: Pointers and Memory Management (Rust)
Lecture 11: Programs as Procedures
Lecture 12: A Horrifying Programming Paradigm (Python)
Lecture 13: Invariants and Inductive Proofs
Lecture 14: The While Loop
Module 3: Sorting and Searching
Lecture 15: Arrays and Elementary Sorting
Lecture 16: Correctness and Complexity of Insertion Sort
Lecture 17: Divide and Conquer
Lecture 18: A Hybrid Sorting Algorithm
Lecture 19: Quicksort and Its Analysis (Kotlin)
Lecture 20: Applications of Sorting and Binary Search
Module 4: Advanced Topics
Lecture 21: Combinatorial Search Methods (Prolog)
Lecture 22: Special Topics in Computer Science
Lecture 23: The Limits of Computation