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
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
Basic comparisons. Predicates. Boolean functions. The
Assignments: Read Character Values in Scheme. Read String Values in Scheme.
|(12) Tuesday, 16 September 2003
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
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)
|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
|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
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
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
Lists, revisited. List recursion, revisited. Trees, introduced. Deep recursion, considered. Group design example 1:
Assignments: Have a great break. Behave yourselves. Read Vectors.
|(30) Friday, 17 October 2003
|Week 8: Miscellaneous (1)|
|(31) Monday, 27 October 2003
Problems with lists. A solution: Vectors. Side note: The
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:
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)
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:
|(40) Tuesday, 11 November 2003
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Assignments: Read Tail Recursion.
|(41) Thursday, 13 November 2003
Kinds of recursion. Why do tail recursion. Generating lists tail-recursively. Lab: Tail Recursion.
Assignments: Read Association Lists.
|(42) Friday, 14 November 2003
Databases and dictionaries. Lists as dictionaries.
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
Quick review of the reading. Lab. Reflection.
|(45) Thursday, 20 November 2003
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
Assignments: Read Merge Sort. Complete the number guessing game from the binary search lab.
|Week 12: Pre-Break|
|(47) Monday, 24 November 2003
Assignments: Continue the guessing game. Read CGI Sciprting in Scheme.
|(48) Tuesday, 25 November 2003
What is CGI? Giving input to CGI programs. Reading input in CGI programs. Lab: CGI.
|Thursday, 27 November 2003
|Friday, 28 November 2003
|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
Extending Objects. Procedures as Objects. Adding State. Lab.
|(52) Friday, 5 December 2003
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
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]
Course at a Glanceform.
Tuesday, 7 Janaury 2003 [Samuel A. Rebelsky]
Tuesday, 14 January 2003 [Samuel A. Rebelsky]
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