| |
Harvey Mudd College
Computer Science 60
Principles of Computer Science
Spring 2010
|
|
Course Information
| Section 1: MW 1-2:30, Beckman B134 |
|
Section 2: TTh 1-2:30, Parsons 1285 |
| Grading: 60% homeworks; 30% exams; 10% participation |
Prereqs: CS 5 or come see us... |
| Languages used: Scheme, Java, Prolog, and JFLAP |
| Instructors: |
Name |
Office |
Phone |
Email |
AIM |
Hours |
| |
Bob Keller |
Olin 1253 |
x18483 |
keller at cs |
MuddProf |
MW 2:30-4:00 (to 5:30 some days) |
| |
Zach Dodds |
Olin 1255 |
x71813 |
dodds at cs |
aimless |
Fri. 2-4:30 in lab |
New! CS 60 practice problems for the
final exam...
New! CS 60 solutions to the
above practice problems .
New! CS 60 final exam study guide for the
final exam You may take the final on your choice of Monday 5/10 at 2pm or Friday 5/14 at 2pm.
There will be a review session (using the practice problems, above, as a starting point) on Sunday 5/9 at 7pm.
Old CS 60 midterm study guide for the
midterm in-class on Wed. and Thu. 3/24 and 3/25.
Brief Overview:
In CS 60, Principles of Computer Science, students will complete a
broad, hands-on overview of the science of computer science.
In several conceptual areas CS 60's depth prepares students to apply
key CS principles to any endeavor or project, with any computational interface
or language. After CS 60, both CS majors and non-majors will be able to
design, program, test, and evaluate novel computational solutions to problems across
CS, mathematics, science, engineering, and other fields.
Here is a link to the complete course syllabus.
Assignments, slides, resources, other links...
Assignments will be posted here; note that assignments are customarily due at 11:59 p.m. on the day indicated. Please submit your files through our web-based submission system.
Your submission password has been reset to the default, but please set it to something memorable!
If you forget the default password, email me at dodds@cs.hmc.edu... .
Assignment 14 Optional, extra-credit assignment: Seam Carving!
Due Sunday, May 9, 2010, by 11:59 pm.
Assignment 13 Fast algorithms via dynamic programming!
Due Sunday, May 2, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw13 is due by
11:59pm on Monday, May 3.
- Filenames: You'll submit three files this week. They are named
- change.scm, change.java, and FloydWarshall.java
- HW links, slides, etc.:
Assignment 12 Uncomputability proofs, run-time analysis, and
a bit of review...
Due Sunday, April 25, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw12 is due by
11:59pm on Monday, April 26.
- Filenames: You'll submit a few files this week. They are named
- hw12.txt, hw12.scm, hw12.pl, and hw12.java
- HW links, slides, etc.:
Assignment 11 Computational Models: FSMs and Turing Machines
Due Sunday, April 18, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw11 is due by
11:59pm on Monday, April 19.
- Filenames: You'll submit many small files this week. They are named
- part1.jff, part2.jff, part3.txt, part4.jff, part5.jff, part6.jff, part7.txt, part8.txt, part9.jff, part10.jff, and
optionally excr1.jff, excr2.jff, excr2.txt, and excr3.txt.
- HW links, slides, etc.:
- Euro reminder: if you use a Euro, then Hw10 is due by
11:59pm on Monday, April 12.
- Filenames: You'll submit a10.pl for this week.
- HW links:
Assignment 9 Constraint Solving and Backtracking
Due Sunday, April 4, 2010, by 11:59 pm.
Assignment 8 Prolog: yes!
Due Sunday, March 28, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw8 is due by
11:59pm on Monday, March 29.
- Filenames: You'll submit at least one file for Hw #8:
- [Pair or Indiv.] movies.pl Starter file: movies.txt - rename to
.pl or .pro
- helper file movies_db.pl Starter file: movies_db.txt - rename to
.pl or .pro
- [Pair or indiv. extra!] lists.pl Starter file: lists.txt - rename to .pl
or .pro
- HW links:
- SWI Prolog download page
Prolog is available for Windows (with a graphical IDE) and Mac OS X and Linux (command-line)
from the site linked above.
Note For Max OS X, you don't need to worry about xquartz or the developer tools - as
far as I can tell, you'll need to run Prolog from the command-line anyway. Do get the
version that matches your operating system, however!
- Lectures 15-16 slides 3/10-3/11 and 3/22-3/23 (6-up version)
- Prolog Examples:
- Lectures 17 slides 4/5 (6-up version)
Assignment 7 The double-ended spamcruncher: Spampede!
Due Friday, March 12, 2010, by 4:59 pm.
- Filenames: You'll submit at least these files for Hw #7:
- [Pair or Indiv.] Maze.java (The updated Maze class)
- [Pair or Indiv.] SpamMaze.java (The SpamMaze class,
derived from Maze!)
- [Pair or Indiv.] Spampede.java (The applet code)
- Be sure to submit any additional files needed to run your code, too. You can submit
them by clicking the "support file" checkbox on the submission site.
Support files and starter versions of some of these files are
available from these links:
- HW links:
- Lecture 13 (W/Th slides) 3/3-3/4
- Lecture 14 (M/T slides) 3/8-3/9
Assignment 6: Spam-sweeping and -seeking!
Due Wednesday, March 3, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw6 is due by
9:59pm on Thursday, March 4.
- Filenames: You'll submit (at least) one file for each problem:
- [Indiv. or pair programming] Spamsweeper.java (The Spamsweeper game)
- [Individual Only!] Queue.java (Your closed-list Queue class)
- [Individual Only!] Maze.java (Your maze-solver)
- (Extra credit): SpamsweeperApplet.zip (the web version)
Note that problems 2 and 3 (Queue and Maze) are to be done individually this week.
Support files and starter versions of some of these files are
available from these links:
- HW links:
- Lecture 11 (W/Th slides) 2/24-2/25
- Lecture 12 (M/T slides) 3/1-3/2
Assignment 5: Tokenize - Parse - Evaluate!
Due Wednesday, February 24, 2010, by 11:59 pm.
- Euro reminder: if you use a Euro, then Hw5 is due by
9:59pm on Thursday, February 25.
- Filenames: You'll submit a zip file named
hw5.zip with at least these five files:
- Quantity.java (quantity lists and Unicalc)
- Tokenizer.java (the tokenizer)
- Parser.java (the parser)
- Evaluator.java (the evaluator)
- OpenList.java (an OpenList class from Hw#4)
Starter versions of these files (and a tester named QuantityTester.java) are
already in hw5.zip, below:
- HW links:
- Lecture 9 (W/Th slides)
- Lecture 10 (M/T slides)
Assignment 4: Conversational Java!
Due Wednesday, February 17, 2010, by 11:59 pm.
Assignment 3: Unicalc CLI
Due Wednesday, February 10, 2010, by 11:59 pm.
Assignment 2: Unicalc API
Due Wednesday, February 3, 2010, by 11:59 pm.
Assignment 1: Fun with functional programming!
Due Wednesday, January 27, 2010, by 11:59 pm.
Tutoring Schedule
All of these tutoring hours are in the LAC computer lab now, even Fridays 2-4pm.
which will be held in the CS Labs in Beckman B102 and/or Beckman B105.
| By time | Grader name |
| Mondays, 8pm-10pm | Jeep S. |
| Mondays, 8pm-10pm | Greg Fong |
| Mondays, 6pm-8pm | Dan Halloran |
| Tuesdays, 9pm-11pm | Lilian DeGreef |
| Tuesdays, 7pm-9pm | David Huie |
| Wednesdays, 9pm-11pm | Bonnie Guang |
| Wednesdays, 8pm-10pm | HamsterBob Stewart |
| Wednesdays, 6pm-8pm | Dan Halloran |
| Wednesdays, 6pm-8pm | Steve Matsumoto |
| Fridays, 2pm-4pm | Michael Leece |
| Saturdays, 1pm-3pm | Brianna Blanchard |
| Saturdays, 1pm-3pm | Russell Transue |
| Saturdays, 2pm-4pm | Paul Hobbs |
| Sundays, 7pm-9pm | Tobe Wood |
| Sundays, 1pm-3pm | Sabreen Lakhani |
| Sundays, 3pm-5pm | Eric Aleshire |
| Sundays, 3pm-5pm | Bea Metitiri |
| Sundays, 3pm-5pm | Benson Khau |
| Sundays, 7pm-9pm | Skye Berghel |
| Sundays, 7pm-10pm | Leif Gaebler |
| Sundays, 8pm-10pm | Alexa Keizur |
| Sundays, 10pm-12am | Aaron Gable |
| Sundays, 10pm-12am | Ryan Brewster |
| Sundays, 10pm-12am | Kathryn Lingel |
| Sundays, 10pm-12am | Aaron Gable |
|
|
| By grader (first) name | Time |
| Aaron Gable | Sundays, 10pm-12am |
| Alexa Keizur | Sundays, 8pm-10pm |
| Bea Metitiri | Sundays, 3pm-5pm |
| Benson Khau | Sundays, 3pm-5pm |
| Bonnie Guang | Wednesdays, 9pm-11pm |
| Dan Halloran | Mondays, 6pm-8pm |
| Dan Halloran | Wednesdays, 6pm-8pm |
| David Huie | Tuesdays, 7pm-9pm |
| Eric Aleshire | Sundays, 3pm-5pm |
| HamsterBob Stewart | Wednesdays, 8pm-10pm |
| Jeep S. | Mondays, 8-10pm |
| Greg Fong | Mondays, 8-10pm |
| Kathryn Lingel | Sundays, 10pm-12am |
| Leif Gaebler | Sundays, 7pm-10pm |
| Lilian DeGreef | Tuesdays, 9pm-11pm |
| Michael Leece | Fridays, 2pm-4pm |
| Paul Hobbs | Saturdays, 2-4pm |
| Russell Transue | Saturday, 1pm-3pm |
| Ryan Brewster | Sundays, 10pm-12am |
| Sabreen Lakhani | Sundays, 1pm-3pm |
| Skye Berghel | Sundays, 7pm-9pm |
| Steve Matsumoto | Wednesdays, 6pm-8pm |
| Tobe Wood | Sundays, 7pm-9pm |
|
Overview Schedule
| Days |
Lecturer |
Topics |
| 1/19-1/20 |
[ZD] | Introduction to CS 60 |
| 1/19-1/20 |
[BK] |
Mental Models for Computation and their Importance
Functional Programming
Introduction to the Scheme Language
Functions and Domains
Functions as Associations: assoc
Conditionals: if
Equations vs. Assignment: let, let*
|
| 1/25-1/26 |
[BK] |
Higher-Order Functions: sort, map, foldl, foldr
Lambda Expressions
Function-Returning Functions
Currying
|
| 1/27 |
Assignment 1 due, 11:59 pm |
Functional Programming Warm-Up |
| 1/27-1/28 |
[BK] |
Recursion
Tail Recursion and Accumulators
Mutual Recursion
McCarthy's Transformation
|
| 2/1-2/2 |
[BK] | Unicalc Arithmetic and Database
Unicalc database
| |
| 2/3 |
Assignment 2 due, 11:59 pm |
Unicalc! |
| 2/3-2/4 |
[BK] | Boxes and Pointers vs. Arrays |
| 2/8-2/9 |
[BK] | Language Interpretation |
| 2/10 |
Assignment 3 due, 11:59 pm |
Unicalc Command-line Interpreter |
| 2/10-2/11 |
[ZD] | Java: Introduction to object-oriented programming |
| 2/15-2/16 |
[ZD] | Java: Porting, Queues, Grammars |
| 2/17 |
Assignment 4 due, 11:59 pm |
Introduction and OpenList in Java |
| 2/17-2/18 |
[ZD] | Java: Parsing and functional thinking in an OO language |
| 2/22-2/23 |
[ZD] | Java: Trees and BFS vs. DFS |
| 2/24 |
Assignment 5 due, 11:59 pm |
Unicalc and Unilang parsing in Java |
2/24-2/25 |
[ZD] | Java: Interfaces and Inheritance |
| 3/1-3/2 |
[ZD] | Java: Events and graphics |
| 3/3 |
Assignment 6 due, 11:59 pm |
Spamseeker/spamsweeper |
| 3/3-3/4 |
[ZD] | Java: Spampede or DESC |
| 3/8-3/9 |
[BK/ZD] | Parallelism; Garbage Collection |
| 3/10-3/11 |
[BK] | Midterm Exam ~ in-class |
3/12 |
Assignment 7 due, 4:59 pm |
Spampede/DESC Applet |
| 3/15-3/16 |
Spring break | Scheme programming for fun! |
| 3/17-3/18 |
Spring break | Java programming for fun! |
| 3/21 |
No assignment due 3/21 | |
| 3/22-3/23 |
[BK] | Prolog and Predicate Logic |
| 3/24-3/25 |
[BK] | Unification and Search |
| 3/28 |
Assignment 8 due, 11:59 pm |
Using Prolog for Databases |
| 3/29-3/30 |
[BK] | Backtracking and Non-Determinism |
| 3/31-4/1 |
[BK] | Constraint Solving |
| 4/4 |
Assignment 9 due, 11:59 pm |
Backtracking and Constraint-Solving |
| 4/5-4/6 |
[BK] | Definite-Clause Grammars and Parsing in Prolog |
| 4/7-4/8 |
[ZD] | Models of computation: DFA |
| 4/11 |
Assignment 10 due, 11:59 pm | Parsing in Prolog |
| 4/12-4/13 |
[ZD] | DFA == NFA == RE |
| 4/14-4/15 |
[ZD] | Turing Machines and JFLAP; Computability |
| 4/18 |
Assignment 11 due, 11:59 pm | JFLAP |
| 4/19-4/20 |
[ZD] | algorithm-efficiency analysis and big-O |
| 4/21-4/22 |
[ZD] | more big-O (i.e., bigger-O!) |
| 4/25 |
Assignment 12 due, 11:59 pm | big-O and Wally; Uncomputability |
| 4/26-4/27 |
[ZD] | Sorting: the fruit fly of CS |
| 4/28-4/29 |
[ZD/BK] | CS's (and CS60's!) grand challenges |
| 4/29 |
Assignment 13 due, 4:59 pm | Floyd-Warshall Algorithm |
Draft for Hw#7:
|