Fundamentals of Computer Science 1 (CS151 2003S)

CS151 2003S At A Glance

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, 8, break, 9, 10, 11, 12, 13, 14.

Week 1: Getting Started
(01) Monday, 20 January 2003
Introduction to the Course
Topics: Definitions: Computer science, computer programming, computing, algorithm, and more. Course basics. Getting started with the ECA. Administrative issues.
Assignments Scan through the various administrative handouts (due Tue). Fill out the introductory survey (due Tue). Take the administrivia quiz (due Tue).
(02) Tuesday, 21 January 2003
Algorithms: Thinking Formally
Topics: Introduction; What is CS? An algorithm for making sandwiches. The parts of an algorithm.
Due: Introductory survey. Consideration of course web. Administrivia survey. Assignments Read SamR's Quick HTML Reference.
(03) Wednesday, 22 January 2003
HTML: A Formal Markup Language
Topics: About HTML. Logical vs. Physical Markup. Lab: Getting Started in the MathLAN. Lab: Writing Documents for the World Wide Web.
Due: SamR's Quick HTML References. Assignments Read Beginning Scheme (due Fri). Scan (but do not do) The DrScheme Lab (due Fri). Start Homework 1: A CS151 Web Site (due next Wed).
(04) Friday, 24 January 2003
An Introduction to Scheme
Topics: Scheme basics. Scheme history. Lab: DrScheme. Lab: Beginning Scheme. Reflection.
Week 2: Scheme Basics
(05) Monday, 27 January 2003
Cascading Style Sheets
Topics: What are style sheets? Why style sheets? Style sheets for HTML. Lab.
(06) Tuesday, 28 January 2003
Starting Scheme
Topics: Review: Scheme Syntax. Lab: DrScheme. Lab: Beginning Scheme. Reflection
Assignments Read Symbolic Values in Scheme. Read Lists in Scheme.
(07) Wednesday, 29 January 2003
Symbols and Lists
Topics: Symbolic values. Lists. Lab: Symbols and Lists.
Due: Homework 1. Assignments Read Numbers in Scheme.
(08) Friday, 31 January 2003
Topics: Types. Numbers, Kinds of Numbers, and Numeric Operations. Lab on Numbers in Scheme. Reflection.
Assignments Read Defining Procedures in Scheme.
Week 3: Control Structures
(09) Monday, 3 February 2003
Procedure Definitions
Topics: Why define your own procedures? How to define your own procedures. Lab.
(10) Tuesday, 4 February 2003
Topics: A problem: Turning numbers into letters (in English and Scheme). Making life easier: Conditionals
Assignments Laboratory Writeup 1: Procedures and Conditions. Read Boolean Values and Predicates.
(11) Wednesday, 5 February 2003
Conditionals Lab
Topics: The grading problem, revisited. Lab: Conditionals.
Assignments Read Characters in Scheme. Read Strings in Scheme.
(12) Friday, 7 February 2003
Characters and Strings
Topics: Short introduction to strings. Lab: Characters and Strings.
Assignments Read CGI Scripting in Scheme.
Week 4: Recursion
(13) Monday, 10 February 2003
CGI Scripting
Topics: What is CGI? Giving input to CGI programs. Reading input in CGI programs. Lab: CGI.
Due: Lab writeup 01.
(14) Tuesday, 11 February 2003
CGI Scripting, Continued
Topics: Short discussion. First Lab. Second Lab. Reflection.
Assignments Homework 2: Mad Libs.
(15) Wednesday, 12 February 2003
Repetition with Recursion
Topics: Repetition. Recursion. Examples. Recursion in Scheme.
Assignments Read Repetition with Recursion.
(16) Friday, 14 February 2003
Recursion Lab
Topics: Q&A on recursion. Lab. Reflection.
Week 5: Recursion, Revisited
(17) Monday, 17 February 2003
Recursion with Lists (1)
Topics: Reflections on Recursion. Lab: List Recursion, Revisited.
Due: Homework 2. Assignments Lab Writeup 2 (optional).
(18) Tuesday, 18 February 2003
Recursion with Lists (2)
Assignments Read Recursion with Natural Numbers.
(19) Wednesday, 19 February 2003
Recursion with Natural Numbers (1)
Topics: Introduction to numeric recursion. Lab.
Assignments Exam 1.
(20) Friday, 21 February 2003
Recursion with Natural Numbers (2)
Assignments Read Preconditions and Postconditions.
Week 6: Miscellaneous
(21) Monday, 24 February 2003
Preconditions and Postconditions
Topics: The need for documentation. Verifying preconditions. An example: Sum of squares. Husk and Kernel programming. Other uses of Husk and Kernel. Lab.
Assignments Read Local bindings with let.
(22) Tuesday, 25 February 2003
Local Bindings
Topics: Why name things. Naming things with let. Naming things with let*. Naming procedures.
(23) Wednesday, 26 February 2003
Laboratory: Local Bindings
Topics: Lab.
Assignments Read Local Procedure Bindings and Recursion.
(24) Friday, 28 February 2003
Local Procedure Bindings
Topics: Why have local procedures. Creating local procedures. Lab.
Due: Lab Writeup 2 (optional). Exam 1. Assignments Homework 3: Web Services. Read Pairs and Pair Structures.
Week 7: More Data Structures
(25) Monday, 3 March 2003
Topics: The Problem of Simulation. Scheme's random procedure. Simulating the roll of dice. Lab.
(26) Tuesday, 4 March 2003
Topics: Behind the scences in Scheme: Memory. Pairs and Cons cells. Dotted pairs. Lab.
Assignments Read Association Lists.
(27) Wednesday, 5 March 2003
Association Lists
Topics: Databases and dictionaries. Lists as dictionaries. assoc, a procedure for searching lists. Lab.
Assignments Read Vectors.
(28) Friday, 7 March 2003
Topics: Problems with lists. A solution: Vectors. Side note: The begin construct. Lab. Due: Homework 3: Web Services.
Week 8: Procedures, Revisited
(29) Monday, 10 March 2003
Deep Recursion
Topics: List recursion, revisited. Deep recursion, considered. Group design example 1: count-elements. Group design example 2: depth.
Assignments Read the reading on higher-order procedures.
(30) Tuesday, 11 March 2003
Procedures as Values
Topics: Design patterns, revisited. Key ideas of higher-order procedures. Two key higher-order procedures: map and apply. Lab.
Assignments Read More Higher-Order Procedures.
(31) Wednesday, 12 March 2003
Procedures as Values, Continued
Topics: Procedures that build procedures. Building predicates. Building recursive procedures. Why use higher-order procedures? Old lab, continued. New lab, initiated.
(32) Friday, 14 March 2003
Early Break
Spring Break
Week 9: Graphics
(33) Monday, 31 March 2003
Introduction to the GNU Image Manipulation Program
Topics: About the Gimp. This week. Getting started with the Gimp. Lab. Wrapup.
Assignments Exam 2: Recursion (due April 8). Read Scripting the Gimp with Script-Fu.
(34) Tuesday, 1 April 2003
Script-Fu Basics
Topics: About Script-Fu. Lab. Reflection.
Assignments Exam 2.
(35) Wednesday, 2 April 2003
Complete Scripts
Topics: Writing Script-Fu Procedures. An example: Drawing a circle. Project: Drawing a Random Circle. Project: Creating a New Image. Project: Drawing a Star. Project: Tracing a Picture. Project: Choose Your Own.
(36) Friday, 4 April 2003
Algorithmic Art
Topics: About Images. Algorithmically generating and modifying images. Lab.
Assignments Read Output in Scheme. Read Input in Scheme.
Week 10: A Web Service
(37) Monday, 7 April 2003
Input and Output
Topics: Interactive programs. Output in Scheme. Input in Scheme. Lab.
Assignments Read Files in Scheme.
(38) Tuesday, 8 April 2003
Topics: Files and ports. Reading values. Reading characters and lines. Lab.
Due: Exam 2. Assignments Read Variable-Arity Procedures.
(39) Wednesday, 9 April 2003
Variable-Arity Procedures
Topics: Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
(40) Friday, 11 April 2003
Discussion of Exam 2
Topics: General Issues.
Due: Project Proposal. Assignments Read Tail Recursion. Start the first implementation phase of the project.
Week 11: Algorithms
(41) Monday, 14 April 2003
Tail Recursion (1)
Topics: Kinds of recursion. Why do tail recursion. Generating lists tail-recursively. Lab: Tail Recursion.
(42) Tuesday, 15 April 2003
Tail Recursion (2)
Topics: A note on timing. Lab: Tail Recursion.
Due: Project, Phase 1 Assignments Project, Phase 2
(43) Wednesday, 16 April 2003
Basics of Searching and Sorting
Topics: Algorithms for common problems. Two key problems: Searching and Sorting. Searching Examples. Sequential Search. Binary Search. Searching in Scheme.
Assignments Read Searching.
(44) Friday, 18 April 2003
Binary Search
Week 12: Sorting
(45) Monday, 21 April 2003
Sorting Out Sorting
(46) Tuesday, 22 April 2003
Searching Lab
Topics: Lab.
(47) Wednesday, 23 April 2003
Sorting Techniques
Topics: Binary Search, Revisited. The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, Quick, Merge. Formalizing the problem.
Assignments Read Sorting.
(48) Friday, 25 April 2003
Sorting Lab
Topics: The Six P's of Sorting. Lab.
Week 13: Object Oriented Programming
(49) Monday, 28 April 2003
Project Presentations
Topics: Overview of Projects. The Grinnell Stress Test. Buy, Sell, Free. Poker. Triangle.
Assignments Start Exam 3 (due next Tuesday). Read Merge Sort (due this Tuesday).
(50) Tuesday, 29 April 2003
Merge Sort
Topics: Lab. Reflection.
Assignments Read Records in Scheme.
(51) Wednesday, 30 April 2003
Topics: Grouping Data. The Record. Records in Scheme. Lab.
Assignments Read Objects in Scheme.
(52) Friday, 2 May 2003
In Class Exam 3
Week 14: Wrapup
(53) Monday, 5 May 2003
Object Basics
Topics: Extending Objects. Procedures as Objects. Adding State. Lab: Object-Oriented Programming.
Assignments Read About End-of-course Evaluations (due Wed). Fill out the development evaluation (distributed in paper form) (due Wed).
(54) Tuesday, 6 May 2003
Object Lab
Topics: Lab: Objects in Scheme.
(55) Wednesday, 7 May 2003
Course Evaluation
Topics: Evaluations.
Due: Exam 3.
(56) Friday, 9 May 2003
Topics: The subject matter of the course. Final comments.



This document is automatically generated from a number of other documents. Hence, I may not always remember to update the history.

Friday, 12 January 2001 [Samuel A. Rebelsky]

Tuesday, 7 Janaury 2003 [Samuel A. Rebelsky]

Tuesday, 14 January 2003 [Samuel A. Rebelsky]

Thursday, 13 February 2003 [Samuel A. Rebelsky]


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 Fri May 9 09:31:27 2003.
The source to the document was last modified on Thu Feb 13 20:13:18 2003.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Samuel A. Rebelsky,