Schedule

This schedule is tentative. Readings and labs will be posted as the semester progresses. Check this page frequently for updates.

Readings should be completed before the class for which they are assigned. Assignments are due at the start of class.

Skip to week: Current 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Final

Week   Date Topic Reading Lab Assignments
1 Mon Jan 22 An introduction to algorithms  
   
Tue Jan 23 An introduction to CS 151 The MathLAN environment Getting started in the MathLAN Due: Homework 1
Wed Jan 24 Working in DrScheme The DrScheme programming environment Finish yesterday's lab
Working in DrScheme
 
Fri Jan 26 Beginning Scheme Beginning Scheme Beginning Scheme Due: Homework 2
2 Mon Jan 29 Symbols and lists Symbols
Lists 
Symbols and lists
(Also: Partners assigned)
Tue Jan 20 Numeric values Numeric values in Scheme
Numbers Due: Homework 3
Wed Jan 31 Characters and strings Character values in Scheme
String values in Scheme
Characters and strings   
Fri Feb 2 Procedure definitions Defining your own Scheme procedures Defining procedures Due: Homework 4
3 Mon Feb 5 Boolean values and predicates Boolean values and predicate procedures Booleans and predicates
(New partners assigned)
 
Tue Feb 6 Conditionals Conditional evaluation in Scheme Conditional expressions Due: Homework 5
Wed Feb 7 Recursion (1) Repetition through recursion Recursion  
Fri Feb 9 Recursion (2)
Detour: Scheme's evaluation strategy
Review Repetition through recursion Continue Recursion (if time) Due: Homework 6
4 Mon Feb 12 More recursion with lists Review Repetition through recursion Finish Recursion
Do More recursion with lists
 
Tue Feb 13 Recursion with natural numbers (1) Numeric recursion Numeric recursion
(New partners assigned)
Due: Homework 7
Wed Feb 14 Recursion with natural numbers (2) Writing recursive procedures Finish Numeric recursion  
Fri Feb 16 Introduction to local bindings Naming values with local bindings Naming values with local bindings Due: Homework 8
Distributed: Exam 1
5 Mon Feb 19 Procedures as contracts Procedures as contracts Documentation, preconditions, and postconditions
(New partners assigned)
 
Tue Feb 20 Unit testing Unit testing Unit testing   
Wed Feb 21 Local procedure bindings and recursion Local procedure bindings and recursion Local procedure bindings and recursion  
Fri Feb 23 Analyzing procedures Analyzing procedures Analyzing procedures Due: Exam 1
6 Mon Feb 26 Discussion of Exam 1 None!  
Tue Feb 27 Input and output Generating extra output
Input for interactive programs
Input and output
(New partners assigned)
Due: Homework 9
Extended to Friday
Wed Feb 28 Recursion with files Files Files
Fri Mar 2 Simulation Randomness and simulation Randomness and simulation Due: Homework 9
Due: Homework 10
7 Mon Mar 5 Project 1: Text generation (Part 1) Text generation (1) Text generation (1)
(Choose your own partners!)
 
Tue Mar 6 Project 1: Text generation (Part 2) Text generation (2) Text generation (2)  Due: Homework 11
Wed Mar 7 Project 1: Text generation (Part 3) None! Finish Text generation (2)
Work on your project
 
Fri Mar 9 Project 1: Text generation (Part 4) None! Work on your project Due: Homework 12
8 Mon Mar 12 Pairs and pair structures Pairs and pair structures Pairs and pair structures  
Tue Mar 13 Deep recursion Deep recursion Deep recursion  
Wed Mar 14 Vectors Vectors  Vectors  Due: Project 1
Fri Mar 16 Usability Usability Usability testing  
Spring break
9 Mon Apr 2 The GIMP The GNU Image Manipulation Program Getting Started with the GIMP   
Tue Apr 3 Script-Fu Scripting the GIMP with Script-Fu Generating GIMP Images with Script-Fu   
Wed Apr 4 Writing Script-Fu procedures Writing Script-Fu procedures Writing Script-Fu procedures   
Fri Apr 6 Random drawings Random drawings Random drawings Due: Exam 2
10 Mon Apr 9 Algorithmic art Algorithmic art Algorithmic art  
Tue Apr 10 Discussion of Exam 2 None!   Due: Homework 13
Wed Apr 11 Image filtering Image filtering with Script-Fu Image filtering  
Fri Apr 13 Line drawings Representing line drawings Making line drawings Due: Homework 14
11 Mon Apr 16 Higher-order Programming, Summarized None! Lecture: Higher-order procedures
Finish the lab on
Making line drawings
Tue Apr 17 Association lists and searching Association lists Association lists Due: Homework 15
Wed Apr 18 Binary search Search algorithms Binary search
Fri Apr 20 Introduction to sorting None!   Due: Homework 16
12 Mon Apr 23 Insertion sort Insertion sort Insertion sort  
Tue Apr 24 Merge sort Merge sort Merge sort Due: Homework 17
Wed Apr 25 Quicksort Quicksort Quicksort  
Fri Apr 27 Variable-arity procedures Variable-arity procedures Variable-arity procedures Due: Homework 18
13 Mon Apr 30 Objects  Objects Objects  
Tue May 1 Abstract data types & stacks Stacks Stacks  
Wed May 2 Queues Queues Queues  
Fri May 4 Queues lab   Queues Due: Exam 3
14 Mon May 7 Discussion of Exam 3      
Tue May 8 What is computer science?, revisited      
Wed May 9 Review for final     Due: Project report 2
Fri May 11 Wrap-up      

Fri May 18 Final exam, 9 a.m.      

Janet Davis (davisjan@cs.grinnell.edu)

Created January 19, 2007
Last revised
May 4, 2007
With thanks to Sam Rebelsky: http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2007S/Handouts/glance.html