#### 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

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