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

CS151.01 2006F At A Glance

This handout is also available in PDF.

This is an 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.

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