This is an abbreviated course syllabus. Like everything else in this course, it is likely to change.
Weeks: 1, 2, 3, 4, 5, 6, 7, 8, break, 9, 10, 11, 12, 13, 14.
|Week 1: Starting Scheme|
|Martin Luther King day||(01) Wednesday, 21 January 2004
Introduction to The Course
Definitions: Computer science, computer programming, computing, ialgorithm, and more. Course basics. Administrative issues. Getting started with the ECA.
Assignments: Scan through the course front door and the various administrative handouts. Fill out the introductory survey (to be distributed via e-mail). Read Starting Scheme.
|(02) Thursday, 22 January 2004
About Scheme Lab: The DrScheme Programming Environment. Lab: Starting Scheme.
Assignments: Read Symbolic Values in Scheme. Read Lists in Scheme. Read Numbers in Scheme.
|(03) Friday, 23 January 2004
Basic Types: Symbols, Lists, and Numbers
Overview of Types Symbols Lists Numbers Lab on Types
Assignments: Read Procedures in Scheme (due Mon). Do Homework 1: Lab Writeup: Types (due Wed).
|Week 2: Control Structures|
|(04) Monday, 26 January 2004
Why define your own procedures? How to define your own procedures. Lab on user-defined procedures.
Assignments: Read Conditional evaluation in Scheme. Read Boolean values in Scheme.
|(05) Wednesday, 28 January 2004
A problem: Turning numbers into letters (in English and Scheme). Making life easier: Conditionals. What kinds of tests can you use in conditionals?
Due: Homework 1: Lab Writeup: Types. Assignments: Read Repetition with recursion.
|(06) Thursday, 29 January 2004
Recursion with Lists
Recursion basics. Patterns of recursive functions over lists. Lab: Repetition with Recursion.
Assignments: Read Numeric Recursion. Homework 2: Type-Checking.
|(07) Friday, 30 January 2004
Introduction to numeric recursion. Lab.
Assignments: Read Naming Values with Local Bindings.
|Week 3: Procedures, Revisited|
|(08) Monday, 2 February 2004
Why name things. Naming things with
Assignments: Read Preconditions and Postconditions.
|(09) Wednesday, 4 February 2004
Preconditions and Postconditions
The need for documentation. Verifying preconditions. An example: Sum of squares. Husk and Kernel programming. Other uses of Husk and Kernel. Lab.
Due: Homework 2. Assignments: Read Local Procedure Bindings with
|(10) Thursday, 5 February 2004
|(11) Friday, 6 February 2004
Assignments: Do Homework 3. Read Characters in Scheme. Read Strings in Scheme.
|Week 4: Compound Structures|
|(12) Monday, 9 February 2004
Short introduction to strings. Lab: Characters and Strings.
Assignments: Read Pairs and Pair Structures. Begin Exam 1.
|(13) Wednesday, 11 February 2004
Pause for Breath
Question: Summing Random Numbers. On the relationship between
Due: Homework 3.
|(14) Thursday, 12 February 2004
Pairs and Pair Structures
Behind the scences in Scheme: Memory. Pairs and Cons cells. Dotted pairs. Lab.
Assignments: Read Vectors.
|(15) Friday, 13 February 2004
Problems with lists. A solution: Vectors. Side note: The
Assignments: Read Higher-Order Procedures (1). (Here's where Scheme gets really cool.)
|Week 5: Higher-Order Procedures and More|
|(16) Monday, 16 February 2004
Higher-Order Procedures (1)
Design patterns, revisited. Key ideas of higher-order procedures. Lab.
Assignments: Read Higher-Order Procedures (2).
|(17) Wednesday, 18 February 2004
Higher-Order Procedures (2)
Operator sections. Rethinking procedure definitions. Questions on readings. Lab.
Due: Exam 1. Assignments: Homework 4: Higher-Order Vector Procedures.
|(18) Thursday, 19 February 2004
Higher-Order Procedures (3)
Lab (1), Continued. Lab (2), Continued. Reflection.
|(19) Friday, 20 February 2004
Kinds of recursion. Why do tail recursion. How to do tail recursion. Generating lists tail-recursively. Lab.
Assignments: Read Tail Recursion.
|Week 6: Algorithms|
|(20) Monday, 23 February 2004
Algorithm Analysis (1)
Comparing Algorithms. Asymptotic Analysis. Eliminating Constants. Asymptotic Analysis in Practice. The Role of Details.
|(21) Wednesday, 25 February 2004
Algorithm Analysis (2)
Big O notation, revisited. Doing Big-O Analysis. Dominant terms. Big-O Analysis of Recursive Procedures. Experimental analysis.
Due: Homework 4. Assignments: Read Searching.
|(22) Thursday, 26 February 2004
Algorithms for common problems. A key problem: Searching. Sequential Search. Binary Search. Lab.
Assignments: Read Sorting.
|(23) Friday, 27 February 2004
The problem of sorting. Writing sorting algorithms. Examples: Insertion sort, Selection sort. Continue Searching lab.
Assignments: Read Merge Sort. Read Quicksort.
|Week 7: Introduction to Java|
|(24) Monday, 1 March 2004
Comparing Sorting Algorithms
O(n2) sorting algorithms. Random detours.
|(25) Wednesday, 3 March 2004
Detour: Miscellaneous Scheme Stuff
Equality predicates. Continuations.
Assignments: Exam 2: Algorithms and Higher-Order Procedures. Read Randomness and simulation.
|(26) Thursday, 4 March 2004
Discussion of Exam 1
|(27) Friday, 5 March 2004
Fast Sorting Algorithms
Merge sort. Quicksort. Lab.
Assignments: Read Experiments in Java, Chapter J1: An Introduction to Java.
|Week 8: More Java Basics|
|(28) Monday, 8 March 2004
Getting Started with Object-Oriented Programming
An introduction to object-oriented programming.
|(29) Wednesday, 10 March 2004
Getting Started with Java
About Java. Your first Java program. Java in the MathLAN. Lab.
Due: Exam 2.
|(30) Thursday, 11 March 2004
Discussion of Exam 2
Cloning. Less-Than?. Sectioning.
|(31) Friday, 12 March 2004
Objects, Methods, and Classes
Building Classes. The Problem: A RationalClass. Overview of a Class Declaration. Fields, Methods, and Constructors. Different Class Uses. Some Design Issues.
|(32) Monday, 29 March 2004
Review. Boolean expressions in Java. Basic conditionals: the
Assignments: Read Lab J5: Loops.
|(33) Wednesday, 31 March 2004
Iterative Repetition. While Loops. Do Loops. For Loops. Lab (J5.1 and J5.3).
Assignments: Read X3: Input, output, files, and exceptions. Focus on the exceptions issues.
|(34) Thursday, 1 April 2004
When Things Go Wrong
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.
Assignments: Start homework 5.
|(35) Friday, 2 April 2004
Building a Rational Class, Revisited
Review: Java. Review:
|Week 10: Lists|
|(36) Monday, 5 April 2004
Introduction to Arrays. Arrays in Java. An Application: Fibonacci Numbers. An Application: Box Packing.
Assignments: Read O1: Object-Oriented Design.
|(37) Wednesday, 7 April 2004
Introduction to Object-Oriented Design. Why do Object-Oriented Design. Protection. Some basic strategies. Reuse. A group exercise.
Assignments: Read EIJ, Lab O2.
|(38) Thursday, 8 April 2004
Reuse. Inheritance. Inheritance in Java. Special issue: Constructors. Special issue: Interfaces. Special issue: Abstract Classes. Lab.
Assignments: Read EIJ, Chapter O3. Begin Homework 5.
|(39) Friday, 9 April 2004
Quick review of inheritance. Quick review of polymorphism. Lab: Polymorphism.
|Week 11: Other Linear Structures|
|(40) Monday, 12 April 2004
Introduction to Abstract Data Types and Data Structures
Organizing Data. Example: Arrays. Collections.
Assignments: Read the section on lists in the data structures book distributed to you. Summarize the methods associate with the list ADT.
|(41) Wednesday, 14 April 2004
Scheme lists as ADT. Implementing Scheme lists.
Due:Homework 6. Assignments: Exam 3.
|(42) Thursday, 15 April 2004
List ADT Design
What else is a list? A SimpleList ADT. An OrderedList ADT. An SortedList ADT. The java.util perspective.
|(43) Friday, 16 April 2004
Implementing Lists with Arrays
Implementation: Using Arrays. Strategies for various methods. Running time. Determining if a position is valid.
Assignments: Read Lists with "Current" Considered Harmful by Joseph Bergin.
|Week 12: Miscellaneous|
|(44) Monday, 19 April 2004
Yet Another Detour
|(45) Wednesday, 21 April 2004
Determining Position Validity
Due: Exam 3.
|(46) Thursday, 22 April 2004
Implementing Lists with Nodes
|(47) Friday, 23 April 2004
About linear structures. Stacks. Queues. Priority Queues. Implementation notes.
Assignments: Homework 7: Task Lists.
|Week 13: Dictionaries|
|(48) Monday, 26 April 2004
Why serialize objects. How to serialize objects. Other introspection issues.
|(49) Wednesday, 28 April 2004
|(50) Thursday, 29 April 2004
Priority Queues, Heaps, and Heap Sort
Priority Queues. Simple Implementations. Trees. Heaps.
Due: Homework 7. Assignments: Homework 8: Sorting.
|(51) Friday, 30 April 2004
The Dictionary ADT
Introduction to the Dictionary ADT Methods. Applications. Dictionaries vs. Databases. Implementation: Association Lists (and variants). Implementation: Binary Search Trees.
|(52) Monday, 3 May 2004
Implementing Dictionaries with Hash Tables
The Idea of Hashing. Hash Functions. Hashing in Java. Handling Hashing Conflicts.
|(53) Wednesday, 5 May 2004
Implementing Dictionaries with Binary Search Trees
An ADT for binary search. Implementing that ADT with arrays. Binary search trees. BSTs and dictionaries.
|(54) Thursday, 6 May 2004
Discussion of Exam 3
Problem 1: Erroneous Code. Problem 2: Orders. Problem 3: Dynamic Arrays. Problem 4: Selection Sort.
|(55) Friday, 7 May 2004
Evaluation. The subject matter. Final thoughts.
This document is automatically generated from a number of other documents. Hence, I may not always remember to update the history.
Friday, 12 January 2001 [Samuel A. Rebelsky]
Course at a Glanceform.
Tuesday, 7 Janaury 2003 [Samuel A. Rebelsky]
Tuesday, 14 January 2003 [Samuel A. Rebelsky]
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 7 09:54:49 2004.
The source to the document was last modified on Tue Jan 13 10:38:16 2004.
This document may be found at