CS200: Computer Science, Spring 2002
Notes: 26 April 2002
- Monday, 29 April: Problem Set 8 (Final)
- Monday, 6 May (5pm): Final Due (will be handed out Monday 29 April)
Course Evaluation Surveys
To be eligible for Jeopardy prizes Monday, you must return the course improvement survey handed out today. Please also do the SEAS official course evaluation survey, and also do the Cavalier Daily course evaluation.
The final will be handed out Monday, and due on Monday, 6 May at 5pm. It will be take home, open book and notes. You will not be permitted to use a computer.
The final covers the entire course, as summarized by the course summary. You should expect it to include questions about languages; programming with procedures, recursion and lists; mutation, environments, and objects; metalinguistic abstraction; computability; complexity; and models of computation.
You should expect to have questions that involve:
- Producing a BNF grammar that describes a language
- Defining a Scheme procedure that uses recursion
- Defining a Scheme procedure that uses procedures are parameters and results
- Programming with lists
- Programming with objects
- Drawing an environment diagram
- Arguing if a problem is decidable or undecidable
- Arguing if a problem is in NP
- Defining new languages
- Describing a Turing Machine
- Determining if a model of computation is equivalent to a Turing Machine
- Reducing a Lambda Calculus term to normal form
- Defining a "primitive" using Lambda Calculus
From what I've read, I get the impression this book was written in a rush, and with the purpose of cramming tons of nonsense and filler in just to have an excuse to present Scheme (a pathetic language). The authors claim to present a view of programming that's widely applicable, and state that top-down (i.e. procedural) programming is by far not the best way to think about programs abstractly. Well, they don't stick to their promise. They present a biased, one sided promotion of scheme as the best language out there. No attempt is made to make comparisons between functional languages like scheme and normal languages like C. The end result, you come out knowing scheme and a few boring applications of it, but can't apply any of it to real programming tasks. This proves this book is just a fancy concotion of some egghead professor who has no idea what happens in the real world. I found many explanations to be incoherent and contradictory. The whole approach is divorced from the computing practice. This is no 21 day book, in fact, you can spend 21 months on it and still not learn a thing, because there's nothing but worthless garbage here.
Amazon.com review of SICP (see other reviews)
University of Virginia
Department of Computer Science
CS 200: Computer Science
Using these Materials