#### Lab Index:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46

Computer Science 151 is a laboratory-based course that uses collaborative learning extensively. The following list outlines each laboratory exercise for the course.
Laboratory
Exercise Title and Description
Lab. 1 Getting Started:
• Logging in
• Use of Windows
• Lab. 2 Beginning Scheme:
• Symbols and Expressions
• Quote Procedure
• Lab. 3 Editing Scheme Files:
• Due Friday, September 3
• Simple Editing Operations
• Symbol and Expression Definition
• Recording a Workstation Session
• Lab. 4 Scheme within XEmacs :
• Symbols as Values
• Quote Expressions
• Lab. 5 An Introduction to Lists in Scheme:
• List Constructors: Cons, Car, Cdr
• List Literals
• Common List Operations
• Lab. 6 User-Defined Procedures:
• Due Tuesday, September 14
• Lambda Expressions
• Procedure Definitions
• Examples
• Lab. 7 Simple Scheme Predicates:
• Type Predicates
• Equivalence Predicates
• Arithmetic and Boolean Predicates
• Lab. 8 Conditional Execution in Scheme:
• cond statement
• if statement
• Boolean Expressions with and and or
• Lab. 9 Recursion: The Basics:
• Introduction to Recursion
• Recursion on Strings and Lists
• Examples
• Lab. 10 Variations on Recursion:
• Due Friday, September 17
• Recursion for writing filters
• Recursion for list processing
• Recursion for numeric processing
• Lab. 11 Testing Preconditions:
• Error Procedure
• Error Recovery in Chez Scheme
• Examples
• Lab. 12 Random Number Generators:
• Use in Chez Scheme
• Use to Simulate Rolling a Die
• Use to Simulate Flipping a Coin
• Lab. 13 Simulations:
• Multiple Rolls of Dice
• Flipping a Coin Several Times
• Lab. 14 Side Effects and Sequencing:
• Output
• Tracing
• Begin-expressions
• Lab. 15 Flat Recursion:
• List Processing
• Examples
• Problem Solving
• Lab. 16 Deep Recursion:
• Due: Friday, October 1
• List Processing
• Mutual Recursion
• Examples
• Lab. 17 Patterns:
• Comparing Procedures
• Applications for Problem Solving
• Examples
• Lab. 18 Pairs:
• Box-and-Pointer Representation
• Dot Notation
• Association Lists
• Lab. 19 Local Bindings:
• Local Variables
• Let, Let*
• Examples
• Lab. 20 Local Binding and Recursion:
• Due: Monday, October 11
• Binding
• Recursive Procedures
• Let, Let*, Letrec
• Lab. 21 Local Procedures:
• Due: Tuesday, October 12
• Named Let Procedures
• Recursion and Tail Recursion
• Examples
• Lab. 22 Character Data:
• Literals
• Character Predicates
• Examples
• Lab. 23 Strings:
• Due: Tuesday, October 26
• String Predicates
• Zero-Based Indexing
• Examples
• Lab. 24 Application: Placing Students Using An Expert Systems:
• The Student Placement Problem
• Rule-Based Systems
• Processing Text Files
• Lab. 25 Input and Output:
• Interactive Scheme Programs
• Sentinels
• Lab. 26 An Introduction to Files:
• Files as Streams
• Writing Data to Files
• Lab. 27 Processing Lines in Files:
• Line-by-Line Processing
• Elements of a File I/O Library
• Lab. 28 Beginning a File Processing Library:
• Elements of a File I/O Library
• Lab. 29 Procedures As Values:
• Procedure? Predicate
• Map, for-each, apply procedures
• Examples
• Lab. 30 Variable Arity:
• Parameter Declaration
• Alternative Forms for Lambda Expressions
• Examples
• Lab. 31 Higher-Order Procedures:
• Due: Monday, November 15
• Currying and Uncurrying
• Operator sections
• Procedure composition
• Lab. 32 Formatted Output:
• Data Conversion: numbers, strings, symbols
• Formatting Numbers
• Examples
• Lab. 33 Vectors:
• Literals
• Predicates
• Standard Procedures
• Lab. 34 Structure Mutation:
• vector-set!
• string-set!, set-car!, set-cdr!
• Examples
• Lab. 35 Assignment and Scope:
• Assignment: set!
• Global and Local Scope
• Examples
• Lab. 36 And Introduction to the World Wide Web and CGI Programming:
• HTML Format
• Creating and Editing an HTML document
• An Introduction to CGI and Scheme Programming
• Lab. 37 CGI Programming:
• Due: Tuesday, November 30
• CGI and Scheme Programming
• Query Strings
• A Directory Example
• Lab. 38 Iteration:
• Loops
• Do Expressions
• Examples
• Lab. 39 Insertion Sort:
• Due: Friday, December 3
• Basic Approach
• Some Details
• Iteration and Recursion
• Lab. 40 Merge Sort:
• Basic Approach
• Some Details
• Analysis
• Lab. 41 Searching Methods:
• Linear Search
• Binary Search
• Application in a Hi/Low Game
• Lab. 42 Records:
• Definition
• Constructors, Selectors
• Mutators, Type Predicates
• Lab. 43 Metaprogramming:
• Programs that construct programs
• Quasiquotation
• Examples
• Lab. 44 Object-Oriented Programming:
• Due: Friday, December 10
• Classes and Objects
• Messages
• Stacks as Objects
• Lab. 45 Queues (Optional):
• FIFO Property
• Definition
• Applications
• Lab. 46 Object-Oriented Design (Optional):
• Problem Solving
• Identifying Classes
• Class Relationships

• This document is available on the World Wide Web as

```http://www.math.grin.edu/~walker/courses/151.fa99/lab-index.html
```

created January 13, 1997
last revised November 23, 1999