Fundamentals of Computer Science I (CS151.01 2006F)

CS151.01 2006F Syllabus

This handout is also available in PDF.

This is an alternate abbreviated course syllabus. Like everything else in this course, it is likely to change.

Weeks: 1, 2, 3, 4, 5, 6, 7, break, 8, 9, 10, 11, 12, 13, 14.

  Date Subject Work Reading Lab
Week 01: Getting Started
01Friday, 25 August 2006An Introduction to Algorithms
Introduction; What is CS? An Algorithm for Making Simple Sandwiches.
Assignments: Do Homework 1 (due Monday).
Read Linux and the MathLAN (also due Monday).
02Monday, 28 August 2006An Introduction to CSC151
Lessons from PB and J. Common parts of an algorithm. Lab. Some administrative details.
Due: HW1: Administrivia.
The Linux Environment in the MathLANGetting Started in the MathLAN
03Tuesday, 29 August 2006Working in DrScheme
Wrapping up the MathLAN lab. DrScheme lab.
Assignments: Homework 2: Solving Quadratics.
The DrScheme Program-Development EnvironmentThe DrScheme Program-Development Environment
04Wednesday, 30 August 2006Beginning Scheme
Why use programming languages? Scheme basics. Scheme history. Lab.
Beginning SchemeBeginning Scheme
05Friday, 1 September 2006Symbols and Lists
Symbolic values. Lists. Lab.
Due: HW2.
Assignments: HW3: Reconfiguring Lists.
Symbols in Scheme and Lists in SchemeSymbols and Lists
Week 02: Data Types
06Monday, 4 September 2006Numeric Values
Types. Review of Reading: Numbers, Kinds of Numbers, and Numeric Operations. Lab. Reflection.
Numeric ValuesNumeric Values
07Tuesday, 5 September 2006Characters and Strings
Additional lessons from yesterday. Short introduction to strings. Lab.
Due: HW3.
Assignments: HW4.
Characters in Scheme and Strings in SchemeCharacters and Strings
08Wednesday, 6 September 2006Procedure Definitions
Why define your own procedures? How to define your own procedures. Lab.
Defining Your Own ProceduresDefining Your Own Procedures
09Friday, 8 September 2006Boolean Values and Predicates
The Components of an Algorithm, Revisited. Lab.
Due: HW4.
Assignments: HW5.
Boolean Values and PredicatesBoolean Values and Predicates
Week 03: Repetition and Recursion
10Monday, 11 September 2006Conditionals
Notes on HW4. Preliminary Notes on Conditionals. Lab. Reflections.
11Tuesday, 12 September 2006Recursion
Repetition. Recursion. Recursion in Scheme. Lab.
12Wednesday, 13 September 2006Recursion, Revisited
Detour: Scheme's Evaluation Strategy. Example: Difference. Q&A. Lab.
13Friday, 15 September 2006Recursion with Lists
Q&A. Labs.
Due: HW5.
Assignments: HW6.
RecursionRecursion with Lists
Week 04: Miscellaneous
14Monday, 18 September 2006Recursion with Natural Numbers (1)
Writing Recursive Procedures. Short Introduction to Numeric Recursion. Lab.
Numeric RecursionNumeric Recursion
15Tuesday, 19 September 2006Recursion with Natural Numbers (2)
Q & A. Lab. Reflection.
Assignments: HW7.
Due: HW6.
Numeric Recursion and Writing Recursive ProceduresNumeric Recursion
16Wednesday, 20 September 2006Recursion with Files
About files. Key file operations. File recursion. Lab.
17Friday, 22 September 2006Recursion with Files
About files. Key file operations. File recursion. Lab.
Due: HW7.
Assignments: Exam 1 (due next Friday).
Week 05: Local Bindings
18Monday, 25 September 2006Documentation, Preconditions and Postconditions
The need for documentation. Verifying preconditions. Husk and Kernel programming. Other uses of Husk and Kernel.
Preconditions and PostconditionsPreconditions and Postconditions
19Tuesday, 26 September 2006Unit Testing
An Overview of Testing. Using Our Test Environment. Lab.
Unit TestingUnit Testing
20Wednesday, 27 September 2006Introduction to Local Bindings
Why name things. Naming things with let. Naming things with let*. Naming procedures. Lab.
Naming Values with Local BindingsNaming Values with Local Bindings
21Friday, 29 September 2006Local Procedure Bindings
Why Have Local Procedures. Creating Local Procedures. An Example: Reverse. Lab.
Due: Exam 1.
Assignments: Homework 8: Intersection.
Local Procedure Bindings and RecursionLocal Procedure Bindings and Recursion
Week 06: First Project: Generating Text
22Monday, 2 October 2006Discussion of Exam 1
Notes on exam 1. Time to work on the Local Procedures Lab.
23Tuesday, 3 October 2006Simulation
The Problem of Simulation. Scheme's random procedure. Simulating the roll of dice. Lab.
Due: HW8.
Assignments: HW9.
24Wednesday, 4 October 2006Project: Text Generation (Part One)
The Project. Strategies. Dividing the Work. Lab.
Project: Text Generation (Part One)Project: Text Generation (Part One)
25Friday, 6 October 2006Project: Text Generation (Part Two)
Improving Our Text Generation Strategy. Questions. Lab.
Due: HW9.
Assignments: First Project Report.
Project: Text Generation (Part Two)Project: Text Generation (Part Two)
Week 07: Data Structures
26Monday, 19 October 2006Project: Text Generation (Questions)
How do I verify structure files? How do I build sentences? How do I add indefinite articles?
27Tuesday, 10 October 2006Pairs and Pair Structures
Memory and Naming. Pairs and Cons cells. Why care? Lab.
Pairs and Pair StructuresPairs and Pair Structures
28Wednesday, 11 October 2006Deep Recursion
Lists, revisited. Trees, introduced. Deep recursion, considered. Lab.
Deep RecursionDeep Recursion
29Friday, 13 October 2006Vectors
Problems with lists. A solution: Vectors. Lab.
Due: Project 1 Writeup.
Fall Break
Week 08: Scripting Graphics in the GIMP
30Monday, 23 October 2006GIMP Basics
About GIMP. This week. Getting started with GIMP. Lab.
Assignments: Homework 10: Survey.
The GNU Image Manipulation ProgramThe GNU Image Manipulation Program
31Tuesday, 24 October 2006Getting Started with Script-Fu
About Script-Fu. Lab. Reflection.
Due: HW10.
Scripting the GIMP with Script-FuGenerating GIMP Images with Script-Fu
32Wednesday, 25 October 2006Writing Script-Fu Procedures
Writing procedures for Script-Fu. Lab.
Writing Script-Fu ProceduresWriting Script-Fu Procedures
33Friday, 27 October 2006Algorithmic Art: Demonstration
Random art. Color grids. Example. Anonymous Procedures. Lab.
Assignments: Exam 2.
Due: HW11.
Algorithmic ArtAlgorithmic Art
Week 09: Higher Order Procedures
34Monday, 30 October 2006Algorithmic Art: Lab
Q&A. Lab.
Algorithmic ArtAlgorithmic Art
35Tuesday, 31 October 2006Manipulating Images with Script-Fu
Primary image-manipulation procedures. Lab.
Manipulating Images with Script-FuManipulating Images with Script-Fu
36Wednesday, 1 November 2006Drawing with Script-Fu
Representing drawings. Transforming drawings. Lab.
Drawing with Script-FuDrawing with Script-Fu
37Friday, 3 November 2006Higher-Order Procedures, Summarized
Background: Guiding Principles. Procedures as Parameters. Anonymous Procedures. Procedures as Return Values. Encapsulating Control.
Due: Exam 2.
Week 10: Algorithms (1): Searching
38Monday, 6 November 2006Discussion of Exam 2
General issues. Problem 1. Problem 2. Problem 3. Problem 4.
39Tuesday, 7 November 2006Association Lists and Searching
Databases and dictionaries. Lists as dictionaries. assoc, a procedure for searching lists. Variants of Association Lists. Lab.
Due: HW12.
Association ListsAssociation Lists
40Wednesday, 8 November 2006Binary Search
About common algorithms. Searching. Binary search. Lab.
Searching MethodsBinary Search
41Friday, 10 November 2006Introduction to Sorting
The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, etc. Formalizing the problem.
Due: HW13.
Week 11: Sorting
42Monday, 13 November 2006Insertion Sort
Preparation. Lab. Reflection.
SortingInsertion Sort
43Tuesday, 14 November 2006World Usability Day
Usability, introduced. Lab/Study. Reflection.
Due: HW14.
44Wednesday, 15 November 2006Merge Sort
Key Ideas. Lab. Reflection.
Merge SortMerge Sort
45Friday, 17 November 2006Quicksort
The key ideas of Quicksort. Lab.
Due: HW15.
Week 12: Objects
46Monday, 20 November 2006Variable-Arity Procedures
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Variable-Arity ProceduresVariable-Arity Procedures
47Tuesday, 21 November 2006Object Basics
Representing Compound Values. Introduction to Objects. Procedures as Objects. Adding State.
Due: HW16.
Objects in Scheme 
48Wednesday, 22 November 2006Objects Lab
Assignments: Exam 3 distributed.
Objects in SchemeObjects in Scheme
  Friday, 24 November 2006 Thanksgiving Break
Week 13: Second Project: Visualizing Data
49Monday, 27 November 2006Stacks
Abstract Data Types (ADTs). Stacks. Implementing Stacks in Scheme. Some Applications. Lab.
50Tuesday, 28 November 2006Multivariate Data Visualization (1)
Short introduction to data visualization. Lab.
Multivariate Data VisualizationMultivariate Data Visualization
51Wednesday, 29 November 2006Multivariate Data Visualization (2)
Short reflection on previous class. Lab.
More Multivariate Data VisualizationMore Multivariate Data Visualization
52Friday, 1 December 2006Multivariate Data Visualization (3) Due: Exam 3.
Week 14: Wrapup
53Monday, 4 December 2006Discussion of Exam 3   
54Tuesday, 5 December 2006What is Computer Science, Revisited?   
55Wednesday, 6 December 2006Review for Final   
56Friday, 8 December 2006Wrapup
Evaluation forms. The subject matter of the course. Final comments.
Due: Project Writeup 2.

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Thu Nov 30 21:42:46 2006.
The source to the document was last modified on Mon Aug 28 14:13:21 2006.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky,

Copyright © 2006 Samuel A. Rebelsky. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.