CS 151, Fundamentals of CS I (with Scheme)  Spring, 1999  Tentative Class Schedule  Page 1
Monday  Tuesday  Wednesday  Friday
January 25  January 26  January 27  January 29
Introduction  The Scheme Environment  Editing and XEmacs  XEmacs and Chez Scheme
Laboratory Exercise 1  Laboratory Exercise 2  Laboratory Exercise 3 ^{[Req]}  Laboratory Exercise 4
Logging On & Mechanics  Chez Scheme  Simple Editing Operations  Scheme within XEmacs
Problem-Solving Process  Numbers  Save and Load  Symbols as Values
Some Simple Examples  Arithmetic Expressions  String Literals  Quote-expressions
Read: S/F: Sec. 1.1-1.2  Examples  More Examples  Comments

Read: S/F: Sec. 1.3

February 1  February 2  February 3  February 5
*Lists  Boolean Expressions  *User-Defined Procedures  More Procedures
Laboratory Exercise 5 ^{[Req]}  Laboratory Exercise 6  Lambda-expressions  Laboratory Exercise 7 ^{[Req]}
cons, car, cdr  Type predicates  Procedure definitions  Procedures
List literals  Equivalence predicates  list, append  Examples
The empty list  Arithmetic predicates  Read: S/F: Sec. 2.1-2.2  Due: Laboratory Exercise 5
length, reverse, list-ref  The not procedure
Read: S/F: 1.4-1.5 (to p. 25)  Read: S/F: 1.5 (remainder)

Due: Laboratory Exercise 3

February 8  February 9  February 10  February 12
Conditionals  *Recursion: The Basics  *Variations on Recursion  More Experience with Recursion
Laboratory Exercise 8  Laboratory Exercise 9  Laboratory Exercise 10 ^{[Req]}  Laboratory Exercise 11 ^{[Req]}
Conditional Execution: If  Recursion on Strings, Lists  Recursion on  Polynomial Evaluation
Conditional Evaluation  Examples  natural numbers  Problem Solving Hints
And-, Or-expressions  Read: S/F: Sec. 2.4  memq, memv, member  A Continuation of
Read: S/F: Sec. 2.3  Read: S/F: Sec. 3.1-3.2  the Previous Lab

Due: Laboratory Exercise 7

February 15 February 16 February 17 February 19
*Random Number Generators Simple Simulations  *Testing Preconditions
Laboratory Exercise 12  Laboratory Exercise 13  Laboratory Exercise 14  Hour Test 1
random in Chez Scheme  Simulation  Error procedure
Read: Chez Scheme: Sec. 7-4  Examples  Error Recovery
Due: Laboratory Exercise 10-11  in Chez Scheme

Read: Chez Scheme: Sec. 3-1

Monday  Tuesday  Wednesday  Friday
February 22  February 23  February 24  February 26
Side Effects and Sequencing  Patterns  Flat Recursion  Deep Recursion
Laboratory Exercise 15 ^{[Req]}  Laboratory Exercise 16 ^{[Opt]}  Laboratory Exercise 17  Laboratory Exercise 18
display, newline  Comparing Procedures  On lists  Examples
Begin-expressions  Applications to  Examples  Problem Solving Hints
Tracing Using Output  Problem Solving  Read: S/F: Sec. 4.1-4.2  Read: S/F: Sec. 4.3
Read: S/F: Sec. 2.5  Due: Suppl. Prob. (2 or 3) and 4
March 1  March 2  March 3  March 5
Pairs, Pair Structures  *Trees  Local Bindings  Local Binding/Recursive Proc.
Laboratory Exercise 19 ^{[EC]}  Laboratory Exercise 20 ^{[Opt]}  Laboratory Exercise 21 ^{[Opt]}  Laboratory Exercise 22 ^{[Req]}
pair?, cxr  Hierarchical View  Let, Let*  Let, Let*, Letrec
assq, assv, assoc  Representation in Scheme  Read: S/F: Sec. 5.1-5.2  Read: Clinger: Sec. 4.2.2
Read: S/F: Sec. 4.4  Structural Recursion  Due: Problem 5

Due: Laboratory Exercise 15

March 8  March 9  March 10  March 12
Approaches to Problem Solving Local Procedures  Application: Expert Systems  Character Data
Laboratory Exercise 23 ^{[EC]}  Laboratory Exercise 24 ^{[EC]}  Laboratory Exercise 25
Tail recursion  Student Placement Problem  Literals
Named let-expressions  Rule-Based Systems  Character Predicates
Examples  Processing Text Files  Read: Clinger: Sec. 6.6

Due: Laboratory Exercise 22

March 15  March 16  March 17  March 19
Strings  More Characters and Strings  Review and Discussion
Laboratory Exercise 26 ^{[Req]}  Built-in Operations  Due: Laboratory Exercise 26  Hour Test 2
Literals  Examples
Zero-based Indexing  Read: S/F: Sec. 6.3-6.4

Predicates, Procedures

Ordering Predicates

Read: S/F: Sec. 6.1-6.2

March 22  March 23  March 24  March 26
Break  Break  Break  Break
March 29  March 30  March 31  April 2
Break  Break  Break  Break

Monday  Tuesday  Wednesday  Friday
April 5  April 6  April 7  April 9
Input/Output  Introduction to Files  Processing Lines in Files  More File Processing
Laboratory Exercise 27 ^{[Req]}  Laboratory Exercise 28  Laboratory Exercise 29  Laboratory Exercise 29
Interactive Scheme Prog.  Files as Streams  Reading a Line  Streams and Line-by-Line
Read, Write  Reading File Data  Line-by-Line Processing  Processing
Sentinels  Writing to Files  Examples  Due: Laboratory Exercise 27

Read: S/F: Sec. 6.3-6.4

April 12  April 13  April 14  April 16
Beginning a File Library  File I/O and Libraries  *Procedures as Values  More Proc. as Values
Laboratory Exercise 30  Laboratory Exercise 30  Laboratory Exercise 31  Laboratory Exercise 31
Reading a Fixed-Length  Elements of a  procedure? predicate  Procedures that
String  File I/O Library  map, for-each, apply  Return Procedures
Other Useful Procedures  Read: S/F: Sec. 7.1-7.2  Due: Problem 6
April 19  April 20  April 21  April 23
Procedures of Variable arity  *Currying and Uncurrying  *Data Conversions
Laboratory Exercise 32  Laboratory Exercise 33 ^{[EC]}  Laboratory Exercise 34  Hour Test 3
Defining procedures  Currying  char->integer, integer->char
Read: Clinger: Sec. 5.2  Uncurrying  with strings
Operator sections  Formatted Output Files
Read: S/F: Sec. 7.3  String manipulation

Creating libraries

Read: Clinger: Sec. 6.4, 6.5.6

April 26  April 27  April 28  April 30
*Vectors  *Structure Mutation  Scope  HTML and CGI
Laboratory Exercise 35  Laboratory Exercise 36 ^{[Req]}  Laboratory Exercise 37  Laboratory Exercise 38
Literals  Set!-expressions  Experimentation with  HTML Format
Predicates  Assignments to parameters  Globals and Locals  Intro. to CGI Programming
Standard Procedures  Read: S/F: Sec. 11.1-11.2  with Scheme
Due: Problem 7  Due: Laboratory Exercise 36

Monday  Tuesday  Wednesday  Friday
May 3  May 4  May 5  May 7
Project  Project  Do-expressions  *Sorting
Laboratory Exercise 39 ^{[Req]}  Laboratory Exercise 39  Laboratory Exercise 40  Laboratory Exercise 41 ^{[EC]}
CGI Programming  CGI Programming  Do-expressions  Insertion Sort
Environmental Variables  Read: Clinger: Sec. 4.2.4  Read: S/F: Sec. 10.1, 10.2.1

Due: Laboratory Exercise 39

May 10  May 11  May 12  May 14
Sorting  Searching  Object-Oriented Programming Course Review
Laboratory Exercise 42 ^{[Opt]}  Laboratory Exercise 43 ^{[EC]}  Laboratory Exercise 44 ^{[EC]}  End-of-course Evaluations
Merge sort  Linear Search  Handling Complexity
Read: S/F: Sec. 10.2.2  Binary Search  Classes and Objects  No Work Accepted
Read: S/F: Sec. 10.3  Read: S/F: Sec. 12.1-12.3  After 5:00 pm

Due: Problem 8