# CS153 2003S Course Syllabus

This is a highly approximate syllabus. Expect topics, assignments, ordering, and almost everything else to change.

## Week One: Starting Scheme

Class 01 (Monday, 20 January 2003) Introduction to The Course

Assignments:

Overview:

• Definitions: Computer science, computer programming, computing, ialgorithm, and more.
• Course basics.
• Getting started with the ECA.

Class 02 (Tuesday, 21 January 2003) Starting Scheme

Assignments:

Related Pages:

Overview:

Class 03 (Wednesday, 22 January 2003) Basic Types: Symbols, Lists, and Numbers

Assignments:

Handouts:

Related Pages:

Overview:

Class 04 (Friday, 24 January 2003) Procedures

Assignments:

Related Pages:

Overview:

## Week Two: Control Structures

Class 05 (Monday, 27 January 2003) Conditionals

Due

Assignments:

Related Pages:

Overview:

• A problem: Turning numbers into letters (in English and Scheme).
• Making life easier: Conditionals.
• What kinds of tests can you use in conditionals?

Class 06 (Tuesday, 28 January 2003) Conditionals Lab

Assignments:

Related Pages:

Overview:

Class 07 (Wednesday, 29 January 2003) Recursion with Lists

Assignments:

Related Pages:

Overview:

Class 08 (Friday, 31 January 2003) Recursion with Numbers

Assignments:

Related Pages:

Overview:

• Introduction to numeric recursion.
• Lab.

## Week Three: Procedures, Revisited

Class 09 (Monday, 3 February 2003) Local Bindings

Assignments:

Related Pages:

Overview:

Class 10 (Tuesday, 4 February 2003) Preconditions and Postconditions

Due

Assignments:

Related Pages:

Overview:

• The need for documentation.
• Verifying preconditions.
• An example: Sum of squares.
• Husk and Kernel programming.
• Other uses of Husk and Kernel.
• Lab.

Class 11 (Wednesday, 5 February 2003) Local Procedures

Assignments:

Related Pages:

Overview:

Class 12 (Friday, 7 February 2003) Variable-Arity Procedures

Assignments:

Related Pages:

Overview:

• Definition of arity.
• Why have variable-arity procedures.
• How to write variable-arity procedures.
• Lab.

## Week Four: More Types

Class 13 (Monday, 10 February 2003) Strings

Assignments:

Related Pages:

Overview:

Class 14 (Tuesday, 11 February 2003) CGI Scripting

Assignments:

Related Pages:

Overview:

• What is CGI?
• Giving input to CGI programs.
• Reading input in CGI programs.
• Lab: CGI.

Class 15 (Wednesday, 12 February 2003) Pairs and Pair Structures

Assignments:

Related Pages:

Overview:

• Behind the scences in Scheme: Memory.
• Pairs and Cons cells.
• Dotted pairs.
• Lab.

Class 16 (Friday, 14 February 2003) Vectors

Assignments:

Related Pages:

Overview:

• Problems with lists.
• A solution: Vectors.
• Side note: The `begin` construct.

## Week Five: Higher-Order Procedures and More

Class 17 (Monday, 17 February 2003) Higher-Order Procedures

Assignments:

Related Pages:

Overview:

• Design patterns, revisited.
• Key ideas of higher-order procedures.
• Two key higher-order procedures: `map` and `apply`.
• Lab.

Class 18 (Tuesday, 18 February 2003) More Higher-Order Procedures

Assignments:

• Review sections from Bailey.

Related Pages:

Overview:

• Operator sections.
• Currying.
• Questions on readings.
• Lab.

Class 19 (Wednesday, 19 February 2003) Algorithm Analysis

Related Pages:

Overview:

• Comparing Algorithms.
• Asymptotic Analysis.
• Eliminating Constants.
• Asymptotic Analysis in Practice.
• The Role of Details.

Class 20 (Friday, 21 February 2003) More Algorithm Analysis

Due

Assignments:

Related Pages:

Overview:

• Big O notation, revisited.
• Doing Big-O Analysis.
• Dominant terms.
• Big-O Analysis of Recursive Procedures.
• Experimental analysis.

## Week Six: Algorithms

Class 21 (Monday, 24 February 2003) Tail Recursion

Related Pages:

Overview:

• Kinds of recursion.
• Why do tail recursion.
• Generating lists tail-recursively.

Class 22 (Tuesday, 25 February 2003) Searching

Assignments:

Related Pages:

Overview:

• Algorithms for common problems.
• A key problem: Searching.
• Searching Examples.
• Lab.

Class 23 (Wednesday, 26 February 2003) Sorting

Assignments:

Related Pages:

Overview:

• The problem of sorting.
• Writing sorting algorithms.
• Examples: Insertion sort, Selection sort.
• Lab.

Class 24 (Friday, 28 February 2003) Fast Sorting Algorithms

Assignments:

Related Pages:

Overview:

• Formalizing the problem.
• Merge sort.
• Quicksort.
• Lab.

## Week Seven: Scheme, Concluded

Class 25 (Monday, 3 March 2003) Sorting Laboratory

Due

Assignments:

Related Pages:

Class 26 (Tuesday, 4 March 2003) Randomness and Simulation

Assignments:

Related Pages:

Overview:

• The Problem of Simulation.
• Scheme's `random` procedure.
• Simulating the roll of dice.
• Lab.

Class 27 (Wednesday, 5 March 2003) Program Input

Assignments:

Related Pages:

Overview:

• Interacting with programs.
• Scheme's output procedures.
• Scheme's input procedures.
• Lab.

Class 28 (Friday, 7 March 2003) Files

Due

Assignments:

Related Pages:

Overview:

• Files and ports.
• Reading characters and lines.
• Lab.

## Week Eight: Introduction to Java

Class 29 (Monday, 10 March 2003) Getting Started with Object-Oriented Programming

Assignments:

• Related Pages:

• Overview:

• An introduction to object-oriented programming.

Class 30 (Tuesday, 11 March 2003) Getting Started with Java

Assignments:

Related Pages:

Overview:

• Your first Java program.
• Java in the MathLAN.
• Lab.

Class 31 (Wednesday, 12 March 2003) Java Lab

Related Pages:

Overview:

• Preparation.
• Lab.

Class 32 (Friday, 14 March 2003) Objects, Methods, and Classes

Due

Assignments:

Related Pages:

Overview:

• Building Classes.
• The Problem: A Fraction Class.
• Overview of a Class Declaration.
• Fields.
• Methods.
• Constructors.
• Different Class Uses.
• Some Design Issues.

## Break

Break runs from 5:00 p.m. on Friday, March 17, 1998 to 8:00 a.m. on Monday, April 3.

## Week Nine: More Java Basics

Class 33 (Monday, 31 March 2003) Conditionals

Assignments:

Related Pages:

Overview:

• Review.
• Boolean expressions in Java.
• Basic conditionals: the `if` statement.
• Other conditionals: the `switch` statement.
• Lab.

Class 34 (Tuesday, 1 April 2003) Loops

Assignments:

• Read Lab X3 (focus on the section on exceptions).
• Do Homework 3 (due next Tuesday).

Related Pages:

Overview:

• Review of Conditionals.
• Iterative Repetition.
• While Loops.
• Do Loops.
• For Loops.
• Lab (J5.1 and J5.3).

Class 35 (Wednesday, 2 April 2003) When Things Go Wrong

Assignments:

Related Pages:

Overview:

• Problems in Programs.
• Techniques for Handling Errors.
• Exceptions: Java's Primary Error-Handling Technique.
• Dealing with Procedures that Throw Exceptions.
• Optionally-Catchable Exceptions.
• Throwing Exceptions.
• Defining Exceptions.

Class 36 (Friday, 4 April 2003) Arrays

Related Pages:

Overview:

• Introduction to Arrays.
• Arrays in Java.
• An Application: Fibonacci Numbers.
• An Application: Box Packing.

## Week Ten: Object-Oriented Design

Class 37 (Monday, 7 April 2003) Exam 2

Assignments:

• Think about what you know about inheritance for tomorrow.

Related Pages:

Overview:

• Quicksort.
• From Strings to Values.

Class 38 (Tuesday, 8 April 2003) Designing Objects

Assignments:

Related Pages:

Overview:

• Introduction to Object-Oriented Design.
• Why do Object-Oriented Design.
• Some basic strategies.
• Reuse.

Class 39 (Wednesday, 9 April 2003) Inheritance

Overview:

• Reuse.
• Inheritance.
• Inheritance in Java.
• Special issue; Constructors.
• Special issue: Interfaces.
• Special issue: Abstract Classes.
• Example: Prerequisites.

Class 40 (Friday, 11 April 2003) Polymorphism

Assignments:

Related Pages:

Overview:

• Quick review of inheritance.
• Questions from previous class.
• Polymorphism.
• Interfaces.
• An Example.
• Abstract Classes.

## Week Eleven: Lists

Class 41 (Monday, 14 April 2003) Polymorphism Example

Related Pages:

Overview:

• Review: What is a `Prereq`?
• Building the `PrereqOr` class.
• Building the `PrereqAnd` class.
• Building the `PrereqCourse` class.

Class 42 (Tuesday, 15 April 2003) Introduction to Abstract Data Types and Data Structures

Related Pages:

Overview:

• Organizing Data.
• Example: Arrays.
• An ADT Hierarchy.
• Collections.

Class 43 (Wednesday, 16 April 2003) Some List ADTs

Related Pages:

Overview:

• What is a list?
• A SimpleList ADT.
• An OrderedList ADT.
• An SortedList ADT.
• The java.util perspective.

Class 44 (Friday, 18 April 2003) List ADT Design, Continued

Due

Related Pages:

## Week Twelve: Other Linear Structures

Class 45 (Monday, 21 April 2003) Sorting Out Sorting

Class 46 (Tuesday, 22 April 2003) Implementing Lists with Arrays

Due

Assignments:

Related Pages:

Overview:

• Implementation: Using Arrays.

Class 47 (Wednesday, 23 April 2003) Implementing Lists with Nodes

Related Pages:

Overview:

• Deletion in Array-Based Lists.
• Detour: Packages in Java.
• Scheme Lists, Pairs, and Nodes.
• Implementing Lists with Nodes.
• Variants.

Class 48 (Friday, 25 April 2003) LInear Structures

Assignments:

• Read the chapter on linear structures in Bailey.

Related Pages:

Overview:

• About linear structures.
• Stacks.
• Queues.
• Implementation notes.

## Week Thirteen: Dictionaries

Class 49 (Monday, 28 April 2003) Priority Queues, Heaps, and Heap Sort

Assignments:

• Read Bailey on Dictionaries and Hash Tables.
• Begin Exam 4.

Related Pages:

Overview:

• Priority Queues.
• Simple Implementations.
• Trees.
• Heaps.

Class 50 (Tuesday, 29 April 2003) The Dictionary ADT

Related Pages:

Overview:

• Introduction to the Dictionary ADT
• Applications.
• More Details.
• Dictionaries vs. Databases.

Class 51 (Wednesday, 30 April 2003) Implementing Dictionaries with Lists

Related Pages:

Overview:

• Review: The Design of Dictionaries.
• Central Dictionary Methods.
• Dictionaries vs. Databases.
• Implementing Dictionaries with Lists.

Class 52 (Friday, 2 May 2003) Implementing Dictionaries with Hash Tables

Related Pages:

Overview:

• Dictionaries vs. Arrays.
• The Idea of Hashing.
• Hash Functions.
• Hashing in Java.
• Handling Hashing Conflicts.
• Exceptions.

## Week Fourteen: Wrapup

Attendance is particularly important this week.

Class 53 (Monday, 5 May 2003) Implementing Dictionaries with Binary Search Trees

Assignments:

Related Pages:

Overview:

• Review.
• An ADT for binary search.
• Binarya search trees.
• BSTs and dictionaries.

Class 54 (Tuesday, 6 May 2003) Algorithm Design, Revisited

Due

Related Pages:

Overview:

• Algorithm Design.
• A Problem: Filling Book Shelves.
• A Solution: Dynamic Programming.

Class 55 (Wednesday, 7 May 2003) Evaluation

Related Pages:

Overview:

• Evaluations.

Class 56 (Friday, 9 May 2003) Wrapup

Related Pages:

Overview:

• The subject matter of the course.

## History

The history will not include small changes to the summaries of individual classes or perhaps even on the arrangement of courses. You can find more information on such changes in the individual outlines.

Friday, 12 January 2001 [Samuel A. rebelsky]

• First generic version, based on syllabi of years past.

Tuesday, 7 January 2003 [Samuel A> Rebelsky]

• Slight changes to generic format.

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Fri May 9 09:31:38 2003.
The source to the document was last modified on Thu Jan 16 14:02:05 2003.
This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2003S/Handouts/syllabus.html`.

You may wish to validate this document's HTML ; ; Check with Bobby

Samuel A. Rebelsky, rebelsky@grinnell.edu