aalok thakkar: introduction to computer science

summer 2025: cs-1102

"Induction is a Computer" - Subhashis Banerjee

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