Fundamentals of Computer Science I (CS151 2003F)

CS151 2003F 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) Thursday, 28 August 2003
An Introduction to Algorithms
Introduction; What is CS? An algorithm for making sandwiches. The parts of an algorithm.
(02) Friday, 29 August 2003
An Introduction to CSC151
Lessons from PB and J. Common parts of an algorithm. Some administrative details. Lab: Getting Started in the MathLAN.
Assignments: Take The introductory survey (due Mon).
(03) Monday, 1 September 2003
HTML, A Formal Markup Language
Lab: Getting Started in the MathLAN. About Markup Languages. Logical vs. Physical Markup. The Basics of HTML. A Sample HTML document.
Assignments: Read Sam's quick HTML reference.
(04) Tuesday, 2 September 2003
Questions on HTML. Lab. Reflection.
Assignments: Read Cascading Style Sheets.
(05) Thursday, 4 September 2003
Cascading Style Sheets
Reflection on HTML Lab. Questions and Comments. Lab. Reflection.
Assignments: Begin Homework 1: An Argumentative Web Site (due Tue). Read Beginning Scheme (due Fri).
(06) Friday, 5 September 2003
An Introduction to Scheme
Scheme basics. Scheme history. Lab: DrScheme. Lab: Beginning Scheme. Reflection.
Assignments: Read Symbolic Values in Scheme. Read Lists in Scheme.
Week 2: Scheme Basics
(07) Monday, 8 September 2003
Symbols and Lists
Symbolic values. Lists. Lab: Symbols and Lists.
Assignments: Read Numeric Values in Scheme.
(08) Tuesday, 9 September 2003
Types. Numbers, Kinds of Numbers, and Numeric Operations. Lab on Numbers in Scheme. Reflection.
Due: Homework 1: Web Site. Assignments: Read Writing Your Own Procedures in Scheme.
(09) Thursday, 11 September 2003
Procedure Definitions
Why define your own procedures? How to define your own procedures. Lab.
Assignments: Read Conditional Evaluation in Scheme. Write up The lab on procedures. Please follow the guidelines on laboratory writeups.
(10) Friday, 12 September 2003
A problem: Turning numbers into letters (in English and Scheme). Making life easier: Conditionals. Conditionals in Scheme. Problem, Revisited.
Assignments: Lab writeup 1: Procedures.
Week 3: Scheme and the Web
(11) Monday, 15 September 2003
Conditionals Lab
Basic comparisons. Predicates. Boolean functions. The cond operations. Lab: Conditionals.
Assignments: Read Character Values in Scheme. Read String Values in Scheme.
(12) Tuesday, 16 September 2003
Conditionals (3)
Lab on Conditionals. Reflection.
Due: Lab Writeup 1: Procedures.
(13) Thursday, 18 September 2003
Characters and Strings
Short introduction to strings. Lab: Characters and Strings.
(14) Friday, 19 September 2003
Talk Like a Pirate Day
Techniques for changing dialect. Sample changes for piratization. Useful Scheme. Lab.
Assignments: Read Repetition with Recursion. Homework 2: Piratizer (due Thu).
Week 4: Repetition and Recursion (1)
(15) Monday, 22 September 2003
Repetition through Recursion
Repetition. Recursion. Examples. Recursion in Scheme. Lab: Repetition through Recursion.
Assignments: Homework 2: From Landlubber to Pirate. Exam 1: Scheme Fundamentals.
(16) Tuesday, 23 September 2003
Recursion Lab
Q&A on recursion. Lab. Reflection.
(17) Thursday, 25 September 2003
Recursion with Lists (1)
Reflections on Recursion. Lab: List Recursion, Revisited.
Due: Homework 2: A Landlubber to Pirate Translator. Assignments: Read Preconditions and Postconditions.
(18) Friday, 26 September 2003
Recursion with Lists (2)
Lab. Reflection: member? and more.
Week 5: Repetition and Recursion (2)
(19) Monday, 29 September 2003
Preconditions and Postconditions
The need for documentation. Verifying preconditions. An example: Greatest in list. Husk and Kernel programming. Other uses of Husk and Kernel. Lab.
Assignments: Numeric Recursion (due tomorrow). Lab writeup 2: Numeric Recursion (due Tuesday, 7 October 2003).
(20) Tuesday, 30 September 2003
Recursion with Natural Numbers (1)
Short introduction to numeric recursion. Lab.
Due: Exam 1: Scheme Basics (due at midnight).
(21) Thursday, 2 October 2003
Recursion with Natural Numbers (2)
Review. Lab. Reflection.
(22) Friday, 3 October 2003
Preconditions and Postconditions: Lab
Review. Lab. Reflection.
Assignments: Read Local Bindings with let.
Week 6: Local Bindings
(23) Monday, 6 October 2003
Discussion of Exam 1
Notes on exam 1.
(24) Tuesday, 7 October 2003
Introduction to Local Bindings
Why name things. Naming things with let. Naming things with let*. Naming procedures.
Due: Lab writeup 2: Numeric Recursion.
(25) Thursday, 9 October 2003
Local Bindings Laboratory
Assignments: Read Local Procedure Bindings.
(26) Friday, 10 October 2003
Local Procedure Bindings
Why have local procedures. Creating local procedures. Lab.
Assignments: Read Pairs and Pair Structures.
Week 7: Pairs
(27) Monday, 13 October 2003
Detour: Intersection
The problem of intersecting two lists. Formalizing the problem. A simple solution. Improving the solution: Eliminating duplicates. Detour: A strange solution. An alternate strategy: Permitting certain duplicates.
Assignments: Reread the last few sections of Pairs and Pair Structures.
(28) Tuesday, 14 October 2003
Pairs and Pair Structures
Behind the scences in Scheme: Memory. Pairs and Cons cells. Dotted pairs. Why care. Lab.
(29) Thursday, 16 October 2003
Deep Recursion
Lists, revisited. List recursion, revisited. Trees, introduced. Deep recursion, considered. Group design example 1: count-elements. Group design example 2: depth. Lab.
Assignments: Have a great break. Behave yourselves. Read Vectors.
(30) Friday, 17 October 2003
Early Break
Fall Break
Week 8: Miscellaneous (1)
(31) Monday, 27 October 2003
Problems with lists. A solution: Vectors. Side note: The begin construct. Lab.
Assignments: Read Output in Scheme. Read Input in Scheme.
(32) Tuesday, 28 October 2003
Input and Output
Interactive programs. Output in Scheme. Input in Scheme. Lab.
Assignments: Exam 2 (due next Tuesday). Read Files in Scheme.
(33) Thursday, 30 October 2003
Pause for Breath
Assignments: Read Variable-Arity Procedures.
(34) Friday, 31 October 2003
Reflection. Files and ports. Reading values. Reading characters and lines. Lab.
Week 9: Higher Order Procedures
(35) Monday, 3 November 2003
Procedures as Values (1)
Design patterns, revisited. Key ideas of higher-order procedures. Two key higher-order procedures: map and apply. Other higher-order structures: filter, section, ...
Assignments: Read Higher-Order Procedures. Read More On Higher-Order procedures.
(36) Tuesday, 4 November 2003
Procedures as Values (2)
Review. Lab. Reflect.
Due: Exam 2 (Recursion and Structures).
(37) Thursday, 6 November 2003
Procedures as Values (3)
Procedures that build procedures. Why use higher-order procedures? Lab.
Assignments: Write up the second lab on higher-order procedures. Read Variable-Arity Procedures.
(38) Friday, 7 November 2003
Procedures as Values (4)
Lab. Reflection.
Assignments: Write up the second lab on higher-order procedures (due Tue). Read Variable-Arity Procedures (due Tue).
Week 10: Miscellaneous (2)
(39) Monday, 10 November 2003
Discussion of Exam 2
Problem 1: Memory. Problem 2: in-tree and Deep Recursion. Problem 3: list-of-symbols->string and List Recursion. Problem 5: number->digits and Numeric Recursion. Problem 4: Verifying Preconditions.
(40) Tuesday, 11 November 2003
Variable-Arity Procedures
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Assignments: Read Tail Recursion.
(41) Thursday, 13 November 2003
Tail Recursion
Kinds of recursion. Why do tail recursion. Generating lists tail-recursively. Lab: Tail Recursion.
Assignments: Read Association Lists.
(42) Friday, 14 November 2003
Association Lists
Databases and dictionaries. Lists as dictionaries. assoc, a procedure for searching lists. Variants of Association Lists. Lab.
Assignments: Write up the lab on tail recursion.
Week 11: Searching and Sorting
(43) Monday, 17 November 2003
Basics of Searching
Algorithms for common problems. Two key problems: Searching and Sorting. Searching Examples. Sequential Search. Binary Search. Searching in Scheme.
Assignments: Read Searching. Continue to write up the lab on tail recursion (due Thursday).
(44) Tuesday, 18 November 2003
Binary Search
Quick review of the reading. Lab. Reflection.
(45) Thursday, 20 November 2003
Sorting Techniques
The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, etc. Formalizing the problem.
Due: Lab on tail recursion. Assignments: Read Sorting.
(46) Friday, 21 November 2003
Sorting Lab
Assignments: Read Merge Sort. Complete the number guessing game from the binary search lab.
Week 12: Pre-Break
(47) Monday, 24 November 2003
Merge Sort
Lab. Reflection.
Assignments: Continue the guessing game. Read CGI Sciprting in Scheme.
(48) Tuesday, 25 November 2003
CGI Scripting
What is CGI? Giving input to CGI programs. Reading input in CGI programs. Lab: CGI.
Due: Projects.
Thursday, 27 November 2003
Thanksgiving Break
Friday, 28 November 2003
Thanksgiving Break
Week 13: Objects
(49) Monday, 1 December 2003
Project: A Simple CGI Application
Short discussion. Review. Project.
Assignments: Read Records in Scheme. Begin Exam 3: Algorithms and Design.
(50) Tuesday, 2 December 2003
Grouping Data. The Record. Records in Scheme. Lab.
Assignments: Read Objects in Scheme.
(51) Thursday, 4 December 2003
Object Basics
Extending Objects. Procedures as Objects. Adding State. Lab.
(52) Friday, 5 December 2003
Object Lab
Lab: Objects in Scheme.
Week 14: Wrapup
(53) Monday, 8 December 2003
Abstract Data Types (ADTs). Stacks. Implementing Stacks in Scheme. Some Applications.
Assignments: Read Stacks. Read Queues.
(54) Tuesday, 9 December 2003
Stacks Lab
Due: Exam 3 (Algorithms and Data Structures).
(55) Thursday, 11 December 2003
(56) Friday, 12 December 2003
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]


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 Tue Dec 9 13:58:43 2003.
The source to the document was last modified on Mon Nov 3 11:40:04 2003.
This document may be found at

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

Samuel A. Rebelsky,