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

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 Thursday, 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:
• Due Wednesday, September 9
• List Constructors: Cons, Car, Cdr
• List Literals
• Common List Operations
• Lab. 6 Simple Scheme Predicates:
• Type Predicates
• Equivalence Predicates
• Arithmetic and Boolean Predicates
• Lab. 7 User-Defined Procedures:
• Due Monday, September 14
• Lambda Expressions
• Procedure Definitions
• Examples
• 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-11 Variations on Recursion:
• Due Wednesday, September 23
• Recursion for writing filters
• Recursion for list processing
• Recursion for numeric processing
• 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 Testing Preconditions:
• Error Procedure
• Error Recovery in Chez Scheme
• Examples
• Lab. 15 Side Effects and Sequencing:
• Due: Wednesday, September 30
• Output
• Tracing
• Begin-expressions
• Lab. 16 Patterns:
• Comparing Procedures
• Applications for Problem Solving
• Examples
• Lab. 17 Flat Recursion:
• List Processing
• Examples
• Problem Solving
• Lab. 18 Deep Recursion:
• List Processing
• Mutual Recursion
• Examples
• Lab. 19 Pairs:
• Box-and-Pointer Representation
• Dot Notation
• Association Lists
• Lab. 20 Trees:
• Conceptual Structure
• Representation in Scheme
• Examples and Operations
• Lab. 21 Local Bindings:
• Local Variables
• Let, Let*
• Examples
• Lab. 22 Local Binding and Recursion:
• Due: Wednesday, October 14
• Binding
• Recursive Procedures
• Let, Let*, Letrec
• Lab. 23 More Recursion:
• Tail Recursion
• Named Let Expressions
• Examples
• Lab. 24 Local Procedures:
• Named Let Procedures
• Recursion and Tail Recursion
• Examples
• Lab. 25 Character Data:
• Literals
• Character Predicates
• Examples
• Lab. 26 Strings:
• String Predicates
• Zero-Based Indexing
• Examples
• Lab. 27 Input and Output:
• Due: Monday, November 2
• Interactive Scheme Programs
• Sentinels
• Lab. 28 An Introduction to Files:
• File Processing
• Writing Data to Files
• Lab. 29 File Processing:
• Processing City Data
• Lab. 30 Procedures As Values:
• Procedure? Predicate
• Map, for-each, apply procedures
• Examples
• Lab. 31 Variable Arity:
• Parameter Declaration
• Alternative Forms for Lambda Expressions
• Examples
• Lab. 32 Higher-Order Procedures:
• Currying and Uncurrying
• Operator sections
• Procedure composition
• Lab. 33 Formatted Output:
• Data Conversion: numbers, strings, symbols
• Formatting Numbers
• Examples
• Lab. 34 Application: Placing Students Using An Expert Systems:
• The Student Placement Problem
• Rule-Based Systems
• Processing Text Files
• Lab. 35 Vectors:
• Literals
• Predicates
• Standard Procedures
• Lab. 36 Structure Mutation:
• Due: Monday, November 23
• vector-set!
• string-set!, set-car!, set-cdr!
• Examples
• Lab. 37 Assignment and Scope:
• Assignment: set!
• Global and Local Scope
• Examples
• Lab. 38 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. 39 CGI Programming:
• Due: Wednesday, December 2
• CGI and Scheme Programming
• Query Strings
• A Directory Example
• Lab. 40 Iteration:
• Loops
• Do Expressions
• Examples
• Lab. 41 Insertion Sort:
• Due: Monday, December 7
• Basic Approach
• Some Details
• Iteration and Recursion
• Lab. 42 Merge Sort:
• Basic Approach
• Some Details
• Analysis
• Lab. 43 Searching Methods:
• Linear Search
• Binary Search
• Application in a Hi/Low Game
• Lab. 44 Structures:
• Defining Structures
• Type, Constructor, Selector, Mutator Procedures
• Examples
• Lab. 45 Object-Oriented Programming:
• Classes and Objects
• Messages
• Stacks as Objects

• This document is available on the World Wide Web as

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

created January 13, 1997
last revised November 9, 1998