cs150  Spring 2007

cs150: Computer Science
from Ada and Euclid to Quantum Computing and the World Wide Web


Coach
David Evans
evans@virginia.edu

Assistant Coaches
Kinga Dobolyi
Richard Hsu
Dan Marcus

Class Meetings
Mondays, Wednesdays, and Fridays, noon-12:50 in Olsson 005
Office Hours (OLS 236A)
Wednesdays: 1-2pm
Thursdays: 3:30-4:30pm

Classes

Lecture slides are available as either the original PowerPoint slides (download the PPT link) or PDF for printing (6 slides per page).

Classes 1-18

Class 1: Introduction [PPT, PDF] (Notes)

What is Computer Science?
   Euclid, Ada and Bill
Computer Science and the Liberal Arts
   The Apollo Guidance Computer
Course Expectations, Drinking from the Firehose
Recursive Definitions and antifloccipoccinihilipilification
Class 2: Formal Systems and Languages [PPT, PDF] (Notes)
Formal Systems
What are languages made of?
History of Computer Programming
   Admiral Grace Hopper, John Backus
Describing Languages
   Backus-Naur Form
Scheme
Class 3: Rules of Evaluation [PPT, PDF] (Notes)
Learning Languages
Rules of Evaluation
Class 4: The Value of Everything [PPT, PDF] (Notes)
Problem Set 1
Rules of Evaluation
Class 5: Procedures Practice (Notes)

Class 6: Programming with Data [PPT, PDF] (Notes)

Making data
cons, car, cdr
Making lists
Class 7: List Recursion Practice (Notes)
list?, sumlist, map
Class 8: Recursing Lists (Notes)
More list recursion examples: list-cruncher, find-closest-number

Class 9: Recursing Recursivey [PPT, PDF] (Notes)

Recursive Procedures
Fibonacci
RTNs and BNFs
Music and Recursion

Class 10: Puzzling Pegboards [PPT, PDF] (Notes)

PS2 and PS3
Pegboard Puzzle
Class 11: One Percent Luck [PPT, PDF] (Notes)
Finishing the Pegboard Puzzle
Class 12: Something About Sneezewort [PPT, PDF] (Notes)
Measuring Cost
Cost of Fibonacci Procedures
Best-First Sorting
Class 13: Cost of Sorts [PPT, PDF] (Notes)
Measuring Cost
O, Ω, and Θ
Class 14: Asymptotic Growth [PPT, PDF] (Notes)
O, Ω, and Θ
Sort Procedures
Class 15: Quicker Sorting [PPT, PDF] (Notes)
insert-sort
Analyzing Sorts

Class 16: Quickest Sorting [PPT, PDF] (Notes)

Sorting with trees

Class 17: Double Deltas and Banburismus [PPT, PDF] (Notes)

Cryptography at Bletchley Park

Class 18: The Story So Far [PPT, PDF] (Notes)

Finishing Tree Sorting
Roadmap: the story so far
Classes 19-

Class 19: Programming with State [PPT, PDF] (Notes)

Set expressions
Name, places, frames, and environments
How mutation changes evaluation rules

Class 20: Sex, Religion, and Politics [PPT, PDF] (Notes)

Endless Golden Ages
Golden Catastrophes, Malthus
Class 21: Think Locally, Mutate Globally [PDF] (Notes)
Environments
Procedure Application Rule with state
Class 22: Objectifying Objects [PPT, PDF] (Notes)
Objects
Building an object system
Databases (PS5)
Class 23: Programming with Objects [PPT, PDF] (Notes)
Object-Oriented Programming
Inheritance
Class 24: Gödel's Proof [PPT, PDF]

Class 25: Gödel and Computability [PPT, PDF] (Notes)

Finishing Gödel's Proof
Quiz Answers
John Backus
Alan Turing
The Halting Problem
Class 26: Proving Uncomputability [PPT, PDF] (Notes)
The Halting Problem
Proving Uncomputability
Other Uncomputable Problems
Class 27: Viruses and Object-Oriented Programming [PPT, PDF] (Notes)
Uncomputability of Virus Detection Problem
History of Object-Oriented Programming
Class 28: Implementing Interpreters [PPT, PDF]
Why learn Python?
Computability in Theory and Practice (Ali G Problem)
Implementing Interpreters
Class 29: Charme School (Notes)
Disecting the Charme Interpreter
Class 30: Lazy Evaluation [PPT, PDF] (Notes)

Class 31: Types of Types [PPT, PDF] (Notes)

Finishing LazyCharme
Quiz 2 results
Static Type Checking
Class 32: Truthiness [PPT, PDF] (Notes)
Static Type Checking
StaticCharme
Class 33: Networking [PPT, PDF] (Notes)

Class 34: Guest Lecture by Gary McGraw

Class 35: Semi-Secure Websites

Buffer overflows
Cross-site scripting
Authentication
Hashing
Class 36: Modeling Computing [PPT, PDF]
Turing's Model
Finite State Machines
Class 37: Universal Computers [PPT, PDF] (Notes)
Universal Turing Machine
Church-Turing Thesis
Class 38: "Career Day"
Kinga Dobolyi: Discovering the Need for Software Engineering [PPT]
Richard Hsu: Getting Lost in CS [PPT]
Adrienne Felt: Disk Level Virus Detection [PDF]
Class 39: Lambda Calculus [PPT, PDF] (Notes)

Class 40: Computing with Glue and Photons [PPT, PDF]

Class 41: P = NP? [PPT, PDF] (Notes)

[an error occurred while processing this directive]