CS 200

Computer Science from Ada and Euclid to Quantum Computing and the World Wide Web 
cs200@cs.virginia.edu  
Schedule  Problem Sets  Exams  Notes  Lectures  Links 
Lectures
Flat List (without descriptions)
Lectures by Topic
Course Summary (with links to lectures)
Through Exam 1 What is Computer Science?Class 2: Formal Systems and Languages (Notes)
Euclid, Ada and Bill
Why Computer Science is Not Engineering
The Apollo Guidance Computer
Recursive Definitions and antifloccipoccinihilipilification
Drinking from the FirehoseSurvey ResultsClass 3: Rules of Evaluation (Notes)
Formal Systems
What are languages made of?
History of Computer Programming
Admiral Grace Hopper, John Backus
Describing Languages
BackusNaur Form
SchemeLanguage Elements  which are hardest to learn?Class 4: Evaluation and Recursion (Notes)
Rules of Evaluation
Guest visitor: Radhika Nagpal
Origami ProgrammingRules of Evaluation (example continued from Class 3Class 5: Beware the Bunnies! (Notes)
Problem Sets 1 and 2
Defining Recursive ProceduresProblem Set 1 (making procedures)Class 6: Recursing Recursively (GEB Chapter V) (Notes)
Fibonacci ExampleWhy begin is a Special FormClass 7: Do be do be (no slides) (Notes)
RTNs and BNFs
Music and RecursionDefining a procedure for what for loops are for and do loops doClass 8: Cons car cdr sdr wdr (Notes)History of Scheme (Lots of Insipid Silly Parentheses)Class 9: The Great Lambda Tree of Knowledge and Power (Notes)
From Pairs to Lists
Defining Sum using Lists
Defining insertlClass 10: Barista Assista (Notes only)
Programming with Lists
Lindenmayer Systems and PS 3Programing with Lists PracticeClass 11: All Sorts (Notes)SortingClass 12: Quicksorting (Notes)
Orders of Growth
Θ
BubblesortClass 13: Astrophysics and Cryptology (Notes)
Insertsort
Quicksort
How much work is Quicksort?Class 14: P = NP? (Notes)
DeGrasse Tyson's Science's Endless Golden Age
Cryptology
Goalden AgeClass 15: Intractable Problems (Smiley Puzzles and Curing Cancer) (Notes)
Permute Sort
O, Θ, and Ω
Problems and Procedures
Complexity Classes P and NPP and NPClass 16: Knapsack Problem (Exam Review) (Notes)
Why O(2^{n}) is intractable
Smileys Puzzle
3SAT
NPcomplete ProblemsClass 17: Exam 1
Through Exam 2 Mutation PrimitivesClass 19: Environments (Notes)
Differences between Functional and Imperative Programming
Advantages and Disadvantages of MutationExam 1Class 20: Objects (Notes)
Environments
Evaluation RulesPackaging State and ProceduresClass 21: Inheritance (Notes)
ObjectOriented Programming
Programming with ObjectsClass 22: Gödel's Theorem (Notes)
Inheritance
Problem Set 6Mechanizing ReasoningClass 23: Computability (Notes)
Gödel's TheoremProofs in Axiomatic SystemsClass 24: Problem Classification Practice (Notes only)
Undecidable Problems
The Halting Problem
Hard problems about how hard problems areClass 25: Metalinguistics (Notes)Problem Classification SummaryClass 26: The Metacircular Evaluator (Notes)
Metalinguistic AbstractionMetacicular EvaluatorClass 27: In Praise of Idleness (Notes)
Implementing EnvironmentsLazy EvaluationClass 28: Types of Types (Notes)
Quantum Mechanics for DummiesTypesClass 29: Typed Scheme (Notes from Class 28)
Type Checking MiniSchemeType Checking EvaluatorClass 30: Exam 2
After Exam 2 Class 31: Networks, The Internet and the World Wide Web (Notes)
Brief History of NetworkingClass 32: How to Build a Dynamic Web Site (Notes)
Latency and BandwidthDynamic Web SitesClass 34: Modeling Computation (Notes)
HTML, PHP and SQL
Modeling ComputationClass 35: Lambda Calculus (Notes)
Finite State Machines
Turing Machines
Universal Turing MachineLambda CalculusClass 36: The Meaning of Truth (Notes)
Substitution and Reduction
ChurchTuring ThesisLambda Calculus ReviewClass 37: Making Numbers, Lists and Recursion from Glue Alone (Notes)
Proving Lambda Calculus is equivalent to a Turing Machine
The Meaning of Truth
Lambda Calculus ReviewClass 38: Fixed Points and Biological Computing (Notes)
Making Numbers and Lists
Fixed Points, Y operatorFixed PointsClass 39: Review (Notes)
Computing with DNA
How Biology Programs
University of Virginia Department of Computer Science CS 200: Computer Science 
David Evans evans@virginia.edu Using these Materials 