CS 42: Principles and Practice of Computer Science
CS 42: Principles and Practice of Computer Science
Fall 2012
Description
The purpose of CS 42 is to provide an accelerated introduction
for first-year students who are advanced and who possess more than
average background in computer science. If you've completed this
course, you will have learned the topics in both the general
introductory course CS 5, as well as the second course
CS 60, and possibly more. You are then eligible to take any
course having CS 60 as the prerequisite.
Official Catalog Description
Accelerated breadth-first introduction to computer science as a discipline for students (usually first-year) who have some programming background. Computational models of functional, object-oriented, and logic programming. Data structures and algorithm analysis. Computer logic and architecture. Grammars and parsing. Regular expressions. Computability. Extensive practice constructing applications from principles, using a variety of languages. Successful completion of this course satisfies the Computer Science 5 core requirement and Computer Science 60 coursework.
More Information
Mid-Term Review
Hopefully you can find everything else you need to know about the class by following the links below.
Grutor hours (LAC computer lab):
| Saturday 3-5 | Suzy Beeler |
| Sunday 1-3 | Rohit Bagaria |
| Sunday 3-5 | Rojesh Koirala |
| Monday 7-9 | Tyler Marklyn |
| Tuesday 7-9 | Ben Johnson |
| Wednesday 7-9 | Henry Huang |
| Wednesday 9-12 | Natasha Parikh |
| Thursday 7-9 | Spike Harris |
Prof. Keller's office hours are MTW 2:45-4. You can arrange a meeting with him at other times as well.
- Python Exercise (17 December 2012)
- Assignment 10 (Due Wed. night, 12 December 2012)
- Assignment 9 (Due Wed. night, 5 December 2012)
- Assignment 8 (Due Wed. night, 28 November 2012)
- Assignment 7 (Due Thursday night, 15 November 2012, 10:00 PM, i.e. another free Euro)
- Assignment 6 (Due Wednesday night, 7 November 2012, 11:59 PM)
- Assignment 5 (Due Wednesday night, 17 October 2012, 11:59 PM)
- Assignment 4
- Assignment 3 (Due Wednesday night, 3 October 2012, 11:59 PM)
- Assignment 2 (Due Wednesday night, 26 September 2012, 11:59 PM)
- Assignment 1 (Due Wednesday night, 19 September 2012, 11:59 PM)
- freebies and tests for assignment 1
- symbolsAndStrings.rkt
- Assignment 0 (Due Monday night, 10 September 2012, 11:59 PM)
- Lecture 1 Slides (2-up version)(6-up version)
- Racket code from Lecture 2 (save with extension .rkt rather than .txt)
- Lecture 2 -3 Slides (2-up version)(6-up version)
- Unit Testing in Racket (2-up version)(6-up version)
- Lecture 4-5 Slides (2-up version)(6-up version)
- Racket code from Lecture 5
- Towers of Hanoi solver
- Towers of Hanoi demo applet
- Racket code from Lecture 6
- Lecture 7 Slides (2-up version)(6-up version)
- parser1.rkt
- parser2.rkt
- parser3.rkt
- parser4.rkt
- unicalc-grammar.rkt
- uniparse-tests.rkt
- uniparse-tests2.rkt (These have the (success residue ...) wrappers added.)
- repl.rkt (Sample read-eval-print-loop for the Unicalc Command Line Interface)
- Java code so far for Open Lists and Rockit
- Java code for Open Lists and Rockit, Phase 4
- Environments and Bindings Slides (2-up version)(6-up version)
- Closed Lists and Other Data Structures
- Computational Complexity (2-up version)(6-up version)
- Logic (2-up version)(6-up version)
- Logic Circuits (2-up version)(6-up version)
- Architecture (2-up version)(6-up version)
- Logic Programming and Prolog (2-up version)(6-up version)
- Computabilit and Uncomputability (2-up version)(6-up version)
- Python
- Advanced Prolog
- Tips on Logisim
- Reference card for Racket (4 pages)
- A very brief guide to HtDP Unit Testing
- The Racket Guide (tutorial)
- The Racket Reference (more complete)
- How to Design Programs (htdp, on-line book, published by MIT Press)
- Lecture Sequence and Problem Topics (Rough intent, don't take too literally)
- Submission Site (Submit all of your homework here!)
- Almost everything (else) you need to know about the course.!
- Assignment Submission Policy (Read and understand this policy!)
- References (Useful links providing information on the languages used in this course. If you're feeling lost, look here.)
- Prof. Keller's home page