Computer Science 153 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:
• Course Materials via Netscape
• Running Scheme
• Lab. 2 Beginning Scheme:
• Symbol and Expression Definition
• Numeric Procedures and the Quote Procedure
• Lambda Expressions and Naming Procedures
• Lab. 3 User-Defined Procedures: Due Monday, January 26
• Lambda Expressions
• Editing with XEmacs
• Recording Work At Your Workstation
• Lab. 4 Simple Scheme Predicates :
• Scheme Within XEmacs
• Type Predicates
• Equivalence Predicates
• Lab. 5 Conditional Execution in Scheme:
• Boolean Expressions: and, or
• cond statement
• if statement
• Lab. 6 Simple Lists:
• List Constructors: Cons, Car, Cdr
• List Literals
• Common List Operations
• Lab. 7 Recursion: The Basics:
• Introduction to Recursion
• Recursion on Strings and Lists
• Examples
• Lab. 8 Designing Recursive Procedures:
• Base Case/Recursive Step
• Filtering
• Finding Roots
• Lab. 9 Time and Space Complexity: Due Friday, February 6
• Big-O Notation
• Tail Recursion
• Lab. 10 Testing and Debugging:
• Errors
• Testing
• Error Procedure
• Lab. 11 Characters and Strings:
• Literals
• Predicates
• Data Conversion
• Lab. 12 Encryption: Due Wednesday, February 11
• Zero-based Indexing
• Predicates
• Palindromes
• Lab. 13 Input/Output:
• Interactive Scheme Programming
• Tracing Output
• Lab. 14 Procedures as First-Class Citizens:
• Procedure Parameters
• Map, Append, Eval Procedures
• Examples
• Lab. 15 Variables and Scope:
• Let, Let*, Letrec
• Local Bindings
• Scope
• Lab. 16 Iteration: Due Friday, February 20
• Loops
• Do Expressions
• Examples
• Lab. 17 More Recursion:
• Tail Recursion
• Named Let Expressions
• Examples
• Lab. 18 Files:
• Input, Output, Ports
• eof-object? predicate
• Lab. 19 File Processing:
• Processinging Data
• Printing Results
• Lab. 20 Simple Simulations:
• Random Number Generators
• Rolling Die
• Flipping Coins
• Lab. 21 Racquetball Simulation: Due Friday, March 6
• Problem Solving Approaches
• Interative Solutions
• Recursive Solutions
• Lab. 22 Placing Students Using An Expert System:
• The Student Placement Problem
• Rule-Based Systems
• Processing Text Files
• Lab. 23 Sorting: Due Friday, March 13
• Insertion into an Ordered List
• Insertion Sort
• Sorting as an Application of Currying
• Lab. 24 Sorting and Mutation:
• Structural Mutation
• Set!-expressions
• Assignments to Parameters
• Lab. 25 Procedures of Variable arity:
• Parameter Declaration
• Alternative Forms for Lambda Expressions
• Examples
• Lab. 26 Vectors:
• Literals
• Predicates
• Standard Procedures
• Lab. 27 CGI and the World Wide Web: Due Friday, April 3
• HTML Format
• An Introduction to CGI
• CGI and Scheme Programming
• Lab. 28 Abstract Data Types:
• Encapsulating Data and Operations
• Implementation in Scheme
• Lab. 29 An Alternative Implementation of ADTs:
• Definitions
• Modules
• Example
• Lab. 30 Object-Oriented Programming:
• Objects
• Classes
• OOP in Scheme
• Lab. 31 Stacks: Due Friday, April 17
• LIFO Property
• Definition
• Applications
• Lab. 32 Queues:
• FIFO Property
• Definition
• Applications
• Lab. 33 Object-Oriented Design:
• Problem Solving
• Identifying Classes
• Class Relationships
• Lab. 34 Trees:
• Definition
• Representation
• Traversal
• Lab. 35 Binary Search Trees: Due Wednesday, April 29
• Insertion
• Search
• Lab. 36 Searching:
• Linear and Search
• Efficiency
• Application in a Hi/Low Game
• Lab. 37 Sorting: Due Wednesday, May 7
• Quicksort
• Merge Sort
• Lab. 38 Data Representation:
• Integers
• Reals: Mantissa and Exponent
• IEEE Standard
• Lab. 39 Introduction to Java:
• Basic program elements
• Variables, I/O, primitive types, strings
• First Examples
• Lab. 40 More Java:
• Control Elements
• Messages and Methods
• More Examples
• Lab. 41 Some Graphics in Java:
• An intoroduction to Grpahics
• Applets
• Examples

• This document is available on the World Wide Web as

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

created January 6, 1998
last revised May 5, 1998
Henry Walker (walker@math.grin.edu)