Fundamentals of Computer Science I (CS151.02 2007S)

CS151.02 2007S 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
01Monday, January 22, 2007An Introduction to Algorithms
Introduction; What is CS? An Algorithm for Making Simple Sandwiches.
Assignments: Do Homework 1 (due tomorrow).
Read Linux and the MathLAN (also due tomorrow).
02Tuesday, January 23, 2007An Introduction to CSC151
Lessons from PB and J. Common parts of an algorithm. About the course. Lab. Some administrative details.
Due:HW 1
The Linux Environment in the MathLANGetting Started in the MathLAN
03Wednesday, January 24, 2007Working in DrScheme
Wrapping up the MathLAN lab. DrScheme lab.
The DrScheme Program-Development EnvironmentThe DrScheme Program-Development Environment
04Friday, January 26, 2007Beginning Scheme
Why use programming languages? Scheme basics. Scheme history. Lab.
Due:HW 2
Beginning SchemeBeginning Scheme
Week 02: Data Types
05Monday, January 29, 2007Symbols and Lists
Symbolic values. Lists. Lab.
Symbols in Scheme and Lists in SchemeSymbols and Lists
06Tuesday, January 30, 2007Numeric Values
Types. Review of Reading: Numbers, Kinds of Numbers, and Numeric Operations. Lab. Reflection.
Due:HW 3
Numeric ValuesNumeric Values
07Wednesday, January 31, 2007Characters and Strings
Additional lessons from yesterday. Short introduction to strings. Lab.
Characters in Scheme and Strings in SchemeCharacters and Strings
08Friday, February 2, 2007Procedure Definitions
Why define your own procedures? How to define your own procedures. Lab.
Due:HW 4
Defining Your Own ProceduresDefining Your Own Procedures
Week 03: Control Structures
09Monday, February 5, 2007Boolean Values and Predicates
Preparation. Lab.
Boolean Values and PredicatesBoolean Values and Predicates
10Tuesday, February 6, 2007Conditionals
Preliminary Notes on Conditionals. Lab. Reflections.
Due:HW 5
11Wednesday, February 7, 2007Recursion
Repetition. Recursion. Recursion in Scheme. Lab.
12Friday, February 9, 2007Recursion, Revisited
Q&A. Lab. Optional topics: Scheme's Evaluation Strategy; Another Example.
Due:HW 6
Week 04: Recursion, Revisited
13Monday, February 12, 2007Recursion with Lists
Q&A. Labs.
RecursionRecursion with Lists
14Tuesday, February 13, 2007Recursion with Natural Numbers (1)
Writing Recursive Procedures. Short Introduction to Numeric Recursion. Lab.
Numeric RecursionNumeric Recursion
15Wednesday, February 14, 2007Recursion with Natural Numbers (2)
Q & A. Lab. Reflection.
Numeric Recursion and Writing Recursive ProceduresNumeric Recursion
16Friday, February 16, 2007Local Bindings
Why name things. Naming things with let. Naming things with let*. Naming procedures. Lab.
Due:HW 7
Assignments: Exam 1
Naming Values with Local BindingsNaming Values with Local Bindings
Week 05: Miscellaneous
17Monday, February 19, 2007Documentation, Preconditions and Postconditions
The need for documentation. Verifying preconditions. Husk and Kernel programming. Lab.
Preconditions and PostconditionsPreconditions and Postconditions
18Tuesday, February 20, 2007Unit Testing
An Overview of Testing. Using Our Test Environment. Lab.
Unit TestingUnit Testing
19Wednesday, February 21, 2007Local Procedure Bindings
Why Have Local Procedures. Creating Local Procedures. An Example: Reverse. Lab.
Local Procedure Bindings and RecursionLocal Procedure Bindings and Recursion
20Friday, February 23, 2007Analyzing Procedures
Overview. Steps. Lab.
Due:Exam 1 Analyzing ProceduresAnalyzing Procedures
Week 06: Files
21Monday, February 26, 2007Discussion of Exam 1
Notes on exam 1.
22Tuesday, February 27, 2007Input and Ouptut
Interactive programs. Output in Scheme. Input in Scheme.
Output in Scheme and Input in SchemeInput and Output
23Wednesday, February 28, 2007Recursion with Files
Remaining I/O Topic: Repetitive Prompting. About Files. Key File Operations. File Recursion. Lab.
24Friday, March 2, 2007Simulation
The Problem of Simulation. Scheme's random procedure. Simulating the roll of dice. Lab.
Due:HW 8
Due:HW 9
Week 07: First Project: Generating Text
25Monday, March 5, 2007Project: Text Generation (Part One)
The Project. Strategies. Dividing the Work. Lab.
Project: Text Generation (Part One)Project: Text Generation (Part One)
26Tuesday, March 6, 2007Project: Text Generation (Part Two)
Improving Our Text Generation Strategy. Questions. Lab.
Due:HW 10
Project: Text Generation (Part Two)Project: Text Generation (Part Two)
27Wednesday, March 7, 2007Project: Text Generation (Part Three)   
28Friday, March 9, 2007Project: Text Generation (Part Four)   
Fall Break
Week 08: Data Structures
29Monday, March 12, 2007Pairs and Pair Structures
Memory and Naming. Pairs and Cons cells. Why care? Lab.
Pairs and Pair StructuresPairs and Pair Structures
30Tuesday, March 13, 2007Deep Recursion
Lists, revisited. Trees, introduced. Deep recursion, considered. Lab.
Deep Recursion 
31Wednesday, March 14, 2007Deep Recursion Laboratory
Deep RecursionDeep Recursion
32Friday, March 16, 2007Vectors
Problems with lists. A solution: Vectors. Lab.
Due:Project Report 1
Week 09: Scripting Graphics in the GIMP
33Monday, April 2, 2007GIMP Basics
About the GIMP. This week. Getting started with the GIMP. Lab.
The GNU Image Manipulation ProgramThe GNU Image Manipulation Program
34Tuesday, April 3, 2007Getting Started with Script-Fu
About Script-Fu. Lab. Reflection.
Scripting the GIMP with Script-FuGenerating GIMP Images with Script-Fu
35Wednesday, April 4, 2007Writing Script-Fu Procedures
Reflections on the first Script-Fu Lab. Writing procedures for Script-Fu. Lab.
Writing Script-Fu ProceduresWriting Script-Fu Procedures
36Friday, April 6, 2007Randomized Images
Randomized Drawing - Some Theory. Randomized Drawing - Some Practice. Lab.
Due:Exam 2
Randomized DrawingRandomized Drawing
Week 10: Higher Order Procedures
37Monday, April 9, 2007Algorithmic Art
Color grids. Example. Anonymous Procedures. Lab.
Algorithmic ArtAlgorithmic Art
38Tuesday, April 10, 2007Discussion of Exam 2
General issues. Problem 4. Problem 3. Problem 2. Problem 1.
Due:HW 11
39Wednesday, April 11, 2007Manipulating Images with Script-Fu
Primary image-manipulation procedures. color transformations. Lab.
Manipulating Images with Script-FuManipulating Images with Script-Fu
40Friday, April 13, 2007Drawing with Script-Fu
Representing drawings. Transforming drawings. Lab.
Due:HW 12
Drawing with Script-FuDrawing with Script-Fu
Week 11: Algorithms (1): Searching
41Monday, April 16, 2007Higher-Order Procedures, Summarized
Background: Guiding Principles. Background: Writing Similar Code. Procedures as Parameters. Anonymous Procedures. Procedures as Return Values. Encapsulating Control. Final Thoughts.
Higher-Order Procedures 
42Tuesday, April 17, 2007Association Lists and Searching
Databases and dictionaries. Lists as dictionaries. assoc, a procedure for searching lists. Variants of Association Lists. Lab.
Due:HW 13
Association ListsAssociation Lists
43Wednesday, April 18, 2007Binary Search
About common algorithms. Searching. Binary search. Lab.
Searching MethodsBinary Search
44Friday, April 20, 2007Introduction to Sorting
The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, etc. Formalizing the problem.
Due:HW 15
Week 12: Sorting
45Monday, April 23, 2007Insertion Sort
Preparation. Lab. Reflection.
SortingInsertion Sort
46Tuesday, April 24, 2007Merge Sort
Key Ideas. Lab. Reflection.
Due:HW 15
Merge SortMerge Sort
47Wednesday, April 25, 2007Quicksort
The key ideas of Quicksort. Lab.
48Friday, April 27, 2007Variable-Arity Procedures
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Due:HW 16
Variable-Arity ProceduresVariable-Arity Procedures
Week 13: Object-Oriented Programming in Scheme
49Monday, April 30, 2007Object Basics
Representing Compound Values. Introduction to Objects. Procedures as Objects. Adding State.
Modeling Objects in Scheme 
50Tuesday, May 1, 2007An Object Example
Review of reading. Extended example.
Modeling Objects in Scheme 
51Wednesday, May 2, 2007Objects Lab
Review of reading. Lab.
Modeling Objects in SchemeModeling Objects in Scheme
52Friday, May 4, 2007Metaprogramming
Code vs. Data in Scheme. Rewriting Named let structures. Generating Code for Objects.
Due:Exam 3
Week 14: Wrapup
53Monday, May 7, 2007Discussion of Exam 3
General Observations. Specific Problems.
54Tuesday, May 8, 2007What is Computer Science, Revisited?
What is CS? Subfields of CS. Related Disciplines.
55Wednesday, May 9, 2007Wrapup
The subject matter of the course. Evaluation forms. Final comments.
56Friday, May 11, 2007Review for Final
Grading. The Final. Preparting for the Final.

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 Sep 13 20:54:04 2007.
The source to the document was last modified on Wed Apr 25 10:46:41 2007.
This document may be found at

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

Samuel A. Rebelsky,

Copyright © 2007 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.