Laboratory Exercises For Computer Science 151

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
  • Changing Your Password
  • Lab. 2 Beginning Scheme:
  • Symbols and Expressions
  • Read-Eval-Print Loop
  • 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
  • Comments and String Literals
  • 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
  • Flipping Double Heads
  • 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
  • Read and Write Procedures
  • Sentinels
  • Lab. 26 An Introduction to Files:
  • Files as Streams
  • Reading File Data
  • Writing Data to Files
  • Lab. 27 Processing Lines in Files:
  • Reading a Line
  • Line-by-Line Processing
  • Elements of a File I/O Library
  • Lab. 28 Beginning a File Processing Library:
  • Reading Characters
  • Reading a Fixed-Length String
  • 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