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 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
• Beginning Scheme
• Symbol and Expression Definition
• Lab. 2 User-Defined Procedures: Due Friday, January 28
• Numeric Procedures and the Quote Procedure
• Lambda Expressions
• Editing with XEmacs
• Recording Work At Your Workstation
• Lab. 3 Simple Scheme Predicates :
• Scheme Within XEmacs
• Type and Equivalence Predicates
• Lab. 4 Conditional Execution in Scheme: Due Tuesday, February 1
• Boolean Expressions: and, or
• cond statement
• if statement
• Lab. 5 Simple Lists:
• List Constructors: Cons, Car, Cdr
• List Literals
• Common List Operations
• Lab. 6 Recursion: The Basics:
• Introduction to Recursion
• Recursion on Strings and Lists
• Examples
• Lab. 7 Designing Recursive Procedures:
• Base Case/Recursive Step
• Filtering
• Finding Roots
• Lab. 8 Program Correctness and Program Design:
• Pre- and Post-Conditions
• Error and Warning Procedures
• Husk-and-Kernel Programming
• Testing and trace-define
• Lab. 9 Refining Recursive Procedures: Due Wednesday, February 9
• Tracing Recursive Execution
• Recursion and Efficiency
• Tail Recursion
• Lab. 10 Characters:
• Literals
• Character Encoding
• Procedures with Characters
• Lab. 11 Strings:
• Zero-based Indexing
• Predicates
• Palindromes
• Lab. 12 Input/Output:
• Interactive Scheme Programming
• Tracing Output
• Lab. 13 Procedures as First-Class Citizens:
• Procedure Parameters
• Map, Apply, Eval Procedures
• Examples
• Lab. 14 Variables and Scope:
• Let, Let*, Letrec
• Local Bindings
• Scope
• Lab. 15 More Recursion: Due Tuesday, February 22
• Named Let Expressions
• Practice with Tail Recursion
• Examples
• Lab. 16 Iteration:
• Loops
• Do Expressions
• Examples
• Lab. 17 Files:
• Input, Output, Ports
• eof-object? predicate
• Lab. 18 File Processing: Due Monday, February 28
• Line-by-Line Processing
• Elements of a File I/O Library
• Lab. 19 Sorting:
• Insertion into an Ordered List
• Insertion Sort
• Sorting as an Application of Currying
• Lab. 20 Sorting and Mutation:
• Structural Mutation
• Set!-expressions
• Assignments to Parameters
• Lab. 21 Procedures of Variable arity:
• Parameter Declaration
• Alternative Forms for Lambda Expressions
• Examples
• Lab. 22 Placing Students Using An Expert System:
• The Student Placement Problem
• Rule-Based Systems
• Processing Text Files
• Lab. 23 Higher-Order Procedures: Due: Monday, March 6
• Currying and Uncurrying
• Operator sections
• Procedure composition
• Lab. 24 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. 25 CGI and the World Wide Web: Due Tuesday, March 14
• HTML Format
• An Introduction to CGI
• CGI and Scheme Programming
• Lab. 26 Vectors:
• Literals
• Predicates
• Standard Procedures
• Lab. 27 Abstract Data Types:
• Encapsulating Data and Operations
• Implementation in Scheme
• Lab. 28 Stacks: Due Friday, March 17
• LIFO Property
• Definition
• Applications
• Lab. 29 Queues
• FIFO Property
• Definition
• Applications
• Lab. 30 Object-Oriented Programming:
• Objects
• Classes
• OOP in Scheme
• Lab. 31 Object-Oriented Design:
• Example: An Eliza Program
• Problem Solving
• Identifying Classes and Class Relationships
• Lab. 32 Object-Oriented Design:
• Example: Multiple Clerks in a Store
• Identifying Classes and Class Relationships
• Considering Data Flow
• Lab. 33 Introduction to Java:
• Basic program elements
• Variables, I/O, primitive types, strings
• First Examples
• Lab. 34 Objects and Methods in Java: Due Friday, April 14
• Creating Objects
• Static Methods
• Assignment and Copying
• Lab. 35 Building Classes:
• Program State, Fields
• Constructors and Methods
• Lab. 36 Problem Solving in Java, Part I : Due Friday, April 21
• Role of Classes and Objects in Java
• Conditional Expressions
• Examples
• Lab. 37 Iteration and Arrays:
• while loops
• Array Mechanics
• Problem-solving with Arrays
• Lab. 38 Arrays and Hash Tables:
• Problem-solving with Arrays
• Hash Tables
• Examples
• Lab. 39 Searching:
• Linear Search
• Binary Search
• Application in a Hi/Low Game
• Lab. 40 Analysis of Algorithms:
• Time and Space Complexity
• Big-O Notation
• Examples
• Lab. 41 Sorting Lists and Arrays: Optional, Unrevised from the Past
• Insertion Sort
• Quicksort
• Merge Sort
• Lab. 42 Inheritance:
• Directories and Class Hashtable
• A new Directory class
• Derived Classes
• Lab. 43 Generalization and Exceptions: Due Monday, May 8
• Polymorphism
• Exception Handling
• Interfaces
• Lab. 44 Lists in Java:
• Definitions and Nodes
• Common Methods
• Examples
• Lab. 45 Trees and Recursive Definition: Due Friday, May 12
• Definition
• Binary Search Trees
• Search and Traversal
• Lab. 46 Survey on CS1 courses

This document is available on the World Wide Web as

```http://www.cs.grinnell.edu/~walker/courses/153.sp00/lab-index.html
```

created January 6, 1998
last revised May 10, 2000
Henry Walker (walker@cs.grinnell.edu)