Index of Laboratory Exercises For Computer Science 153

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 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 25
  • Numeric Procedures and the Quote Procedure
  • Lambda Expressions
  • Editing with XEmacs
  • Recording Work At Your Workstation
  • Lab. 3 Simple Scheme Predicates:
  • Scheme Within XEmacs
  • Comments in Scheme
  • Type and Equivalence Predicates
  • Lab. 4 Conditional Execution in Scheme: Due Tuesday, January 29
  • 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
  • Note: With the introduction of pre- and post-conditions in Lab 8, all procedures for subsequent labs or supplemental problems must start with a statement of pre- and post-conditions, as well as the procedure name. If no pre-conditions are appropriate, that should be stated formally stated. Of course, every procedure does something, so it must have post-conditions.

    A suggested format follows:
    
    (define <procedure-name>
        Pre-condition:  .......
       Post-condition:  .......
    
    Lab. 9 Refining Recursive Procedures: Due Wednesday, February 6
  • Tracing Recursive Execution
  • Recursion and Efficiency
  • Tail Recursion
  • Lab. 10 Characters:
  • Literals
  • Character Encoding
  • Procedures with Characters
  • Lab. 11 Strings:
  • Zero-based Indexing
  • Predicates
  • Some Applications: Encryption and Palindromes
  • Lab. 12 Input/Output:
  • Interactive Scheme Programming
  • Read, Display, Newline Procedures
  • Tracing Output
  • Lab. 13 Procedures as First-Class Citizens: Optional
  • Procedure Parameters
  • Map, Apply, Eval Procedures
  • Examples
  • Lab. 14 Variables and Scope: Extra Credit if submitted by Monday, March 4
  • Let, Let*, Letrec
  • Local Bindings
  • Scope
  • Lab. 15 Tail Recursion: Due Monday, February 18
  • Named Let Expressions
  • Practice with Tail Recursion
  • Examples
  • Lab. 16 Iteration:
  • Loops
  • Do Expressions
  • Examples
  • Lab. 17 Sorting: Due: Wednesday, February 20
  • Insertion into an Ordered List
  • Insertion Sort
  • Sorting as an Application of Currying
  • Lab. 18 Higher-Order Procedures: Due: Tuesday, February 26
  • Currying and Uncurrying
  • Operator sections
  • Procedure composition
  • Lab. 19 Sorting and Mutation:
  • Structural Mutation
  • Set!-expressions
  • Assignments to Parameters
  • Lab. 20 Files:
  • Input, Output, Ports
  • Reading and Writing
  • eof-object? predicate
  • Lab. 21 File Processing:
  • Reading a Line
  • Line-by-Line Processing
  • Elements of a File I/O Library
  • Lab. 22 Procedures of Variable arity:
  • Parameter Declaration
  • Alternative Forms for Lambda Expressions
  • Examples
  • Lab. 23 Placing Students Using An Expert System: Optional; Extra Credit if submitted by Friday, March 15
  • The Student Placement Problem
  • Rule-Based Systems
  • Processing Text Files
  • 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 Monday, March 11
  • HTML Format
  • An Introduction to CGI
  • CGI and Scheme Programming
  • Lab. 26 Abstract Data Types:
  • Encapsulating Data and Operations
  • ADT Definitions
  • Implementation in Scheme
  • Lab. 27 Vectors: Optional; Extra Credit if submitted by Friday, April 5
  • Literals
  • Predicates
  • Standard Procedures
  • Lab. 28 Stacks and Queues:
  • LIFO and FIFO Properties
  • Definitions
  • Applications
  • Lab. 29 Object-Oriented Programming:
  • Objects
  • Classes
  • OOP in Scheme
  • Lab. 30 Object-Oriented Design:
  • Example: An Eliza Program
  • Problem Solving
  • Identifying Classes and Class Relationships
  • Lab. 31 Object-Oriented Design:
  • Example: Multiple Clerks in a Store
  • Identifying Classes and Class Relationships
  • Considering Data Flow
  • Lab. 32 Introduction to Java:
  • A Course Class in Scheme and Java
  • Simple Input and Output in Java
  • Compiling, Interpreting, and Running Java Programs
  • Lab. 33 Notes on Elementary Java:
  • Basic Program Elements
  • Highlights of Java Syntax
  • Constructors, Extractors, Modifiers
  • Lab. 34 Building a Simple Class:
  • Program State, Fields
  • Constructors and Methods
  • Overloading
  • Lab. 35 Problem Solving in Java: Due Friday, April 12
  • Role of Classes and Objects in Java
  • Conditional Expressions
  • Examples
  • Lab. 36 Iteration and Arrays:
  • while loops
  • Array Mechanics
  • Problem-solving with Arrays
  • Lab. 37 Searching: Due Wednesday, April 17
  • Linear Search
  • Binary Search
  • Application in a Hi/Low Game
  • Lab. 38 Hash Tables and Inheritance: Extra Credit if submitted by Wednesday, May 1
  • Hash Tables as an Alternative to Arrays
  • Directories and Class Hashtable
  • A new Directory class and some Derived Classes
  • Lab. 39 Analysis of Algorithms: Extra Credit if submitted by Tuesday, May 7
  • Time and Space Complexity
  • Big-O Notation
  • Examples
  • Lab. 40 Sorting Lists and Arrays: Due: Monday, April 29
  • Insertion Sort
  • Quicksort
  • Analysis of Algorithms
  • Lab. 41 Generalization and Exceptions: Due Wednesday, May 1
  • Polymorphism
  • Exception Handling
  • Interfaces
  • Lab. 42 Lists in Java: Extra Credit if submitted by Friday, May 10
  • Definitions and Nodes
  • Common Methods
  • Examples
  • Lab. 43 Trees and Recursive Definition: Due Wednesday, May 8
  • Definition
  • Binary Search Trees
  • Search and Traversal
  • Lab. 44 More Binary Search Trees: Extra Credit if submitted by Friday, May 10
  • Deletion
  • Determining Height
  • Determining Balance

  • This document is available on the World Wide Web as

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

    created January 6, 1998
    last revised April 21, 2002
    Valid HTML 3.2!
    For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.