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, 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
  • Comments in Scheme
  • 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
  • Read, Display, Newline Procedures
  • 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
  • Reading and Writing
  • eof-object? predicate
  • Lab. 18 File Processing: Due Monday, February 28
  • Reading a Line
  • 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
  • ADT Definitions
  • 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
  • Overloading
  • 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)