This is a highly approximate syllabus. Expect topics, assignments, ordering, and almost everything else to change.
Class 01 (Monday, January 22, 2001) Introduction to the Course
- Definitions: Computer science, computer programming, computing, algorithm, more
- Course basics
- Administrative issues
- Scan through the course web.
- Fill out the introductory survey.
Class 02 (Wednesday, January 24, 2001) Algorithms: Thinking Formally
- An algorithm for making sandwiches
- Generalizing: What techniques did we use?
- Lab: Getting started in the MathLAN.
- Lab: Getting stared with Blackboard.
- Introductory survey
- Consideration of course web
Class 03 (Thursday, January 25, 2001) HTML: A Formal Markup Language
- About HTML
- Logical vs. Physical Markup
- Lab: Writing Documents for the World Wide Web
Class 04 (Friday, January 26, 2001) Starting Scheme
- Read Atoms and Lists
Class 05 (Monday, January 29, 2001) Symbols and Lists
- A short history of Scheme
- Symbolic values
- Read Numbers in Scheme
Class 06 (Wednesday, January 31, 2001) Numbers
- Read Procedures
Class 07 (Thursday, February 1, 2001) Procedure Definitions
- Why define your own procedures?
- How to define your own procedures
Class 08 (Friday, February 2, 2001) Conditionals
- A problem: Turning numbers into letters.
- In English
- In conditional-less Scheme
- Making life easier: Conditionals
Class 09 (Monday, February 5, 2001) Conditionals Lab
- The grading problem, revisited.
- Lab: Conditionals
Class 10 (Wednesday, February 7, 2001) Pause for Breath
- Program design
- Comments (at least two types!)
- Two digits after decimal
- Read Characters and Strings.
Class 11 (Thursday, February 8, 2001) Characters and Strings
- Short introduction
- Read CGI Scripting.
Class 12 (Friday, February 9, 2001) CGI Scripting
- Notes on strings.
- Notes on CGI.
- Lab: CGI.
Class 13 (Monday, February 12, 2001) CGI Scripting, Continued
- Short discussion.
Class 14 (Wednesday, February 14, 2001) Repetition with Recursion
- Recursion in Scheme
- Examples: Sum
Class 15 (Thursday, February 15, 2001) Recursion with Lists
Class 16 (Friday, February 16, 2001) More Recursion with Lists
- Recursively-defined types
- Squaring a list of values
- Lab: Repetition with Recursion
Class 17 (Monday, February 19, 2001) Recursion with Natural Numbers
- Reflections on recursion
- Introduction to numeric recursion
Class 18 (Wednesday, February 21, 2001) Pairs
- Behind the scences in Scheme: Memory
- Pairs and Cons cells
- Dotted pairs
- Read Association Lists.
Class 19 (Thursday, February 22, 2001) Association Lists
- Lists as databases
assoc, a procedure for searching lists
Class 20 (Friday, February 23, 2001) Pause for Breath
- Counting cons cells
- Returning more than one kind of value from a recursive procedure
- Exam discussion
- Exam 1 distributed.
Class 21 (Monday, February 26, 2001) Preconditions and Postconditions
- The need for documentation
- Verifying preconditions
- An example: Sum of squares
- Husk and Kernel programming
Class 22 (Wednesday, February 28, 2001) Local Bindings
- Why name things
- Naming things with
- Naming things with
- Naming procedures
Class 23 (Thursday, March 1, 2001) Laboratory: Local Bindings
- Read input and output.
Class 24 (Friday, March 2, 2001) Program Input and Output
- Exam 1.
Class 25 (Monday, March 5, 2001) Introduction to Files
- Files and ports
- Reading values
- Examples: Summing values
- Reading characters and lines
Class 26 (Wednesday, March 7, 2001) Discussion of Exam 1
- Notes on exam 1
- Files lab
Class 27 (Thursday, March 8, 2001) Vectors
- Problems with lists
- A solution: Vectors
- Common vector procedures
Class 28 (Friday, March 9, 2001) Pause for Breath
Class 29 (Monday, March 12, 2001) Simulation
- The Problem of Simulation
- Simulating the roll of dice
Class 30 (Wednesday, March 14, 2001) Local Procedure Bindings
- Why have local procedures
- Creating local procedures
Class 31 (Thursday, March 15, 2001) Procedures as Values
- Design patterns, revisited
- A problem: Applying a procedure to all values in a list
- Various solutions
- A key technique: Procedures as parameters
- Common higher-order procedures:
- Another key technique: Anonymous procedures
- A final key technique: Procedures as return values
Class 32 (Friday, March 16, 2001) Procedures as Values, Continued
- Questions on readings
Break runs from 5:00 p.m. on Friday, March 17, 1998 to 8:00 a.m. on Monday, April 3.
Class 33 (Monday, April 2, 2001) Introduction to GIMP
Class 34 (Wednesday, April 4, 2001) Script-Fu Basics
Class 35 (Thursday, April 5, 2001) Complete Scripts
Class 36 (Friday, April 6, 2001) Script-Fu Concluded
- Exam 2 distributed.
Class 37 (Monday, April 9, 2001) Tail Recursion
- Kinds of recursion
- Why do tail recursion
- Generating lists tail-recursively
Class 38 (Wednesday, April 11, 2001) Tail Recursion, Continued
- A few more notes on tail recursion
Class 39 (Thursday, April 12, 2001) Variable-Arity Procedures
- Definition of arity
- Why have variable-arity procedures
- How to write variable-arity procedures
Class 40 (Friday, April 13, 2001) Multiple-Valued Procedures
- Why return multiple values from procedures
- How to return multiple values from procedures
- What to do with those multiple values
- An alternative
Class 41 (Monday, April 16, 2001) Laboratory: Multiple-Valued Procedures
Class 42 (Wednesday, April 18, 2001) Basics of Searching and Sorting
Class 43 (Thursday, April 19, 2001) Searching: Laboratory
Class 44 (Friday, April 20, 2001) Searching Lab, Continued
Class 45 (Monday, April 23, 2001) Sorting Techniques
- The problem of sorting, revisited
- Formalizing the problem
- Writing sorting algorithms
- Insertion sort
- Selection sort
- Quick sort
- Merge sort
Class 46 (Wednesday, April 25, 2001) Insertion Sort
Class 47 (Thursday, April 26, 2001) Merge Sort
Class 48 (Friday, April 27, 2001) A Web Service
- The goals of the service
- The standard service architecture
- Some limits from our server
Class 49 (Monday, April 30, 2001) Discussion of Exam2
- General Issues
- Problem 1: Grading
- Detecting end of file
- Problem 2:
- Efficiency: Don't recompute things
- Problem 3: Currying
- Many ways of looking at a curried procedure.
Class 50 (Wednesday, May 2, 2001) Records
Class 51 (Thursday, May 3, 2001) Object Basics
- Extending Objects
- Procedures as Objects
- Adding State
Class 52 (Friday, May 4, 2001) Objects, Continued
- Take-home Exam 3 Distributed.
Attendance is particularly important this week.
Class 53 (Monday, May 7, 2001) Exam 3
Class 54 (Wednesday, May 9, 2001) Administrivia
- Exam 3
Class 55 (Thursday, May 10, 2001) Project Presentations
Class 56 (Friday, May 11, 2001) Course Evaluation
- Final project presentations
- About evaluations
- Final statements
The history will not include small changes to the summaries of individual classes or perhaps even on the arrangement of courses. You can find more information on such changes in the individual outlines.
Friday, 12 January 2001
Disclaimer: I usually create these pages on the fly. This means that they are rarely proofread and may contain bad grammar and incorrect details. It also means that I may update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.
This page was generated by Siteweaver on Thu Aug 29 14:16:50 2002.
This page may be found at
You may validate this page's HTML.
The source was last modified Wed Jan 24 23:49:40 2001.