CS 200 
Computer Science
from Ada and Euclid to Quantum Computing and the World Wide Web
Schedule - Problem Sets - Exams - Notes - Lectures - Links


Flat List (without descriptions)
Lectures by Topic
Course Summary (with links to lectures)

Through Exam 1

Class 1: Introduction (Notes)

What is Computer Science?
   Euclid, Ada and Bill
Why Computer Science is Not Engineering
   The Apollo Guidance Computer
Recursive Definitions and antifloccipoccinihilipilification
Drinking from the Firehose
Class 2: Formal Systems and Languages (Notes)
Survey Results
Formal Systems
What are languages made of?
History of Computer Programming
   Admiral Grace Hopper, John Backus
Describing Languages
   Backus-Naur Form
Class 3: Rules of Evaluation (Notes)
Language Elements - which are hardest to learn?
Rules of Evaluation
Guest visitor: Radhika Nagpal
   Origami Programming
Class 4: Evaluation and Recursion (Notes)
Rules of Evaluation (example continued from Class 3
Problem Sets 1 and 2
Defining Recursive Procedures
Class 5: Beware the Bunnies! (Notes)
Problem Set 1 (making procedures)
Fibonacci Example
Class 6: Recursing Recursively (GEB Chapter V) (Notes)
Why begin is a Special Form
RTNs and BNFs
Music and Recursion
Class 7: Do be do be (no slides) (Notes)
Defining a procedure for what for loops are for and do loops do
Class 8: Cons car cdr sdr wdr (Notes)
History of Scheme (Lots of Insipid Silly Parentheses)
From Pairs to Lists
Defining Sum using Lists
Class 9: The Great Lambda Tree of Knowledge and Power (Notes)
Defining insertl
Programming with Lists
Lindenmayer Systems and PS 3
Class 10: Barista Assista (Notes only)
Programing with Lists Practice
Class 11: All Sorts (Notes)
Orders of Growth
Class 12: Quicksorting (Notes)
Class 13: Astrophysics and Cryptology (Notes)
How much work is Quicksort?
DeGrasse Tyson's Science's Endless Golden Age
Class 14: P = NP? (Notes)
Goal-den Age
Permute Sort
O, Θ, and Ω
Problems and Procedures
Complexity Classes P and NP
Class 15: Intractable Problems (Smiley Puzzles and Curing Cancer) (Notes)
P and NP
Why O(2n) is intractable
Smileys Puzzle
NP-complete Problems
Class 16: Knapsack Problem (Exam Review) (Notes)

Class 17: Exam 1

Through Exam 2

Class 18: Mutation (Notes)

Mutation Primitives
Differences between Functional and Imperative Programming
Advantages and Disadvantages of Mutation
Class 19: Environments (Notes)
Exam 1
Evaluation Rules
Class 20: Objects (Notes)
Packaging State and Procedures
Object-Oriented Programming
Class 21: Inheritance (Notes)
Programming with Objects
Problem Set 6
Class 22: Gödel's Theorem (Notes)
Mechanizing Reasoning
Gödel's Theorem
Class 23: Computability (Notes)
Proofs in Axiomatic Systems
Undecidable Problems
The Halting Problem
Class 24: Problem Classification Practice (Notes only)
Hard problems about how hard problems are
Class 25: Metalinguistics (Notes)
Problem Classification Summary
Metalinguistic Abstraction
Class 26: The Metacircular Evaluator (Notes)
Metacicular Evaluator
Implementing Environments
Class 27: In Praise of Idleness (Notes)
Lazy Evaluation
Quantum Mechanics for Dummies
Class 28: Types of Types (Notes)
Type Checking Mini-Scheme
Class 29: Typed Scheme (Notes from Class 28)
Type Checking Evaluator
Class 30: Exam 2

After Exam 2

Class 31: Networks, The Internet and the World Wide Web (Notes)

Brief History of Networking
Latency and Bandwidth
Class 32: How to Build a Dynamic Web Site (Notes)
Dynamic Web Sites
Class 34: Modeling Computation (Notes)
Modeling Computation
Finite State Machines
Turing Machines
Universal Turing Machine
Class 35: Lambda Calculus (Notes)
Lambda Calculus
Substitution and Reduction
Church-Turing Thesis
Class 36: The Meaning of Truth (Notes)
Lambda Calculus Review
Proving Lambda Calculus is equivalent to a Turing Machine
The Meaning of Truth
Class 37: Making Numbers, Lists and Recursion from Glue Alone (Notes)
Lambda Calculus Review
Making Numbers and Lists
Fixed Points, Y operator
Class 38: Fixed Points and Biological Computing (Notes)
Fixed Points
Computing with DNA
How Biology Programs
Class 39: Review (Notes)

Class 40: Jeopardy (Notes)

CS 655 University of Virginia
Department of Computer Science
CS 200: Computer Science
David Evans
Using these Materials