This is a highly approximate syllabus. Expect
topics, assignments, ordering, and almost everything else to change.
Class 01
Introduction
(Thursday, August 26, 1999)
- Course overview
- Definition of ``computer science''
- Introduction to data structures and algorithms
- Introduction to programming paradigms
- Assigned:
Class 02
Introduction to Java
(Friday, August 27, 1999)
- Due
- Introduction to object-oriented programming
- An introduction to Java
- Assignments
Class 03
Introduction to Java, continued
(Monday, August 30, 1999)
Class 04
Laboratory: Getting Started With Java
(Wednesday, September 1, 1999)
Class 05
Introduction to Object-Oriented Design
(Thursday, September 2, 1999)
- Due:
- Assigned:
- Discussion of object-oriented programming
- Motivation
- Objects and classes
- Example object-oriented designs
- Project discussion
Class 06
Classes and Objects
(Friday, September 3, 1999)
- Due:
- Assigned:
- Lab J3 (for Monday)
- Think about the parts of a mail client.
Class 07
More Classes and Objects
(Monday, September 6, 1999)
Class 08
Even More Classes and Objects
(Wednesday, September 8, 1999)
Class 09
Subclassing, Inheritance, and Polymorphism
(Thursday, September 9, 1999)
- Project discussion: project components
- The design of a
Mailbox class
- Some notes on object-oriented design
- Two key features: inheritance and polymorphism
Class 10
Conditionals
(Friday, September 10, 1999)
Class 11
Loops
(Monday, September 13, 1999)
- The need for repetition
- Two kinds: predetermined number and indeterminate
- Two looping structures
-
while loops (primarily indeterminate)
-
for loops (primarily predetermined)
- Lab: J5 (only J5.1 and J5.3)
- Due tomorrow: Assignment 1
- For Wednesday, read the section entitled ``Exceptions'' in
lab X3
Class 12
When Things Go Wrong
(Wednesday, September 15, 1999)
- Problems in programs
- Typical error-handling techniques
- Exceptions: Java's primary error-handling mechanism
- Purpose
- Using methods that throw exceptions
Class 13
Exceptions, Continued
(Thursday, September 16, 1999)
- Exceptions, concluded
- Throwing and defining your own exceptions
- Java's ``Primitive'' classes
- Short lab
Class 14
Project Discussion
(Friday, September 17, 1999)
- Project discussion, continued
- Architecture revisited
- Narratives
- Interface Drawings
- Java's interfaces
- Possible visit from prospectives
- Assigned:
- Exam 1 (due Friday, September 24, 1999)
- Read J6
Class 15
Arrays and Sequences
(Monday, September 20, 1999)
- Interfaces, concluded
- Arrays in Java
- Related Scheme types: lists and vectors
- Command-line parameters
- Short lab: Command-line parameters
- Using arrays in our
MailMessage class.
- Due:
Lab J6
- Assignment:
Read Lab G1 for Wednesday.
Class 16
Building Graphical Programs
(Wednesday, September 22, 1999)
- Applets
- Graphics
- Lab: G1
- Assignments:
- Read G2 for tomorrow.
Decide which portions interest you the most. Come to class with
questions.
- Read G3 for Friday.
Class 17
Java's Abstract Windowing Toolkit
(Thursday, September 23, 1999)
- Graphical User Interfaces
- The event-driven model
- Using components
- Lab: G2
- Assignments:
- Read G3 for tomorrow.
- For next Wednesday, develop an initial interface for all the
classes you expect to include in your component of the project.
Turn in compilable files. GUI teams should also sketch the
windows they expect to show.
Class 18
Java's AWT, Continued
(Friday, September 24, 1999)
- Graphical user interfaces, continued
- Textual input
- General questions
- Due:
Class 19
Discussion of Exam 1 and Project
(Monday, September 27, 1999)
- Exam 1 returned.
- Strengths, weaknesses, notes
- Project utility classes.
- Assignments (due Wednesday):
- Read the misnumbered section 5.5 on comparing algorithms
- Finish your groups class descriptions.
Class 20
Algorithm Analysis
(Wednesday, September 29, 1999)
- Two simple ``smallest'' algorithms
- Basics of algorithm analysis
- Due:
- Section 5.5: Comparing Algorithms
- Assigned:
- Chapter 5 (should be 6): Recursion
- Lab A1: Recursion
Class 21
Recursion
(Thursday, September 30, 1999)
- Today:
- Short discussion:
- Assigned (for tomorrow):
Class 22
Analyzing Recursive Algorithms
(Friday, October 1, 1999)
- Analyzing functions
- Three versions of exponentiation
- Two versions of Fibonacci
- Recursive functions and recurrence relations
Class 23
Project Discussion
(Monday, October 4, 1999)
- Discussion: Project proposals
- Assigned:
- Assignment 3:
Recursion, Big-O, and more.
- Improved interfaces for project components.
Class 24
Binary Search
(Wednesday, October 6, 1999)
- Binary Search
- Iterative vs. recursive
- In Scheme
- In Java
- Examples
- Comparing objects
- Assigned: Selections from Chapter 12 of Java Plus Data Strucures
Class 25
Sorting Algorithms
(Thursday, October 7, 1999)
- Reading: Java Plus Data Structures, Chapter 12
- The problem of sorting
- Three basic sorting methods:
- Selection sort
- Bubble sort
- Insertion sort
- Selecting a sorting method
Class 26
More Efficient Sorting Algorithms
(Friday, October 8, 1999)
- Assigned:
- Exam 2
(due 10 a.m. Friday, October 15, 1999)
Class 27
Sorting Indexed Collections
(Monday, October 11, 1999)
- Quicksort concluded: partitioning arrays.
- Assignment 3 due.
- Assignment (due Wednesday): start on chapter 3 of Java Plus
Data Structures.
Class 28
Project Discussion
(Wednesday, October 13, 1999)
- General notes on what you turned in
- Some notes on Java
- Protection levels
- Static methods
- Interfaces, stubs, and testing
- Preconditions and postconditions
- Project narrative, continued
- Using the
Photo class
- Using the
Options class
Class 29
Data Structures
(Thursday, October 14, 1999)
- About data structures
- Four key issues: functionality, implementation, efficiency, applications
- Two basic data structures
Class 30
The Design of Lists
(Friday, October 15, 1999)
- The design of lists
- A data-oriented perspective
- A function-oriented perspective
- Some other design issues
- An implementation of Scheme-like lists
- Due:
Fall break runs from 5 p.m. on Friday, October 15, 1999 to 8 a.m. on
Monday, October 25, 1999.
Have fun! Work on your projects if you can :-)
Class 31
Discussion of Exam 2
(Monday, October 25, 1999)
Class 32
Implementations of Lists
(Wednesday, October 27, 1999)
- The design of lists, revisited
- Four kinds of lists: Scheme, Simple, Sequenced, Sorted
- Implementing lists with arrays
- Implementing lists with nodes
Class 33
Vectors
(Thursday, October 28, 1999)
Class 34
Project Discussion
(Friday, October 29, 1999)
- Project discussion:
- Evaluation of user interfaces
- Narrative, continued
Class 35
Lists, Concluded
(Monday, November 1, 1999)
Class 36
Introduction to Linear Structures
(Wednesday, November 3, 1999)
- Linear structures
- Stacks
- Queues
- Priority queues
- Dequeues
Class 37
Heaps and Heap Sort
(Thursday, November 4, 1999)
- A ``divide and conquer'' implementation of priority queues
- Heaps
- Basic tree terminology
- Heaps and Arrays
- Heapsort
Class 38
Linear Structures for Solving Puzzles
(Friday, November 5, 1999)
- Object-oriented design: Modeling puzzles and their moves
- An application of linear structures: automating the solution
of puzzles
Class 39
Stack Lab
(Monday, November 8, 1999)
- Implementing stacks with nodes
- A generalized testing technique
- Implementing stacks with arrays
Class 40
Dictionaries
(Wednesday, November 10, 1999)
- Due: Assignment 4
- Some notes on lists
- The dictionary ADT
- Applications of dictionaries
Class 41
Search Trees
(Thursday, November 11, 1999)
- Dictionaries, codified
- Implementing dictionaries with association lists
- Implemented dictionaries with search trees
- Balancing trees?
- Binary search trees and binary search
Class 42
Hash Tables
(Friday, November 12, 1999)
- Possible visit from prospectives
- Hash tables: efficient dictionaries
Class 43
Introduction to Trees
(Monday, November 15, 1999)
Class 44
Project Discussion
(Wednesday, November 17, 1999)
- Hash functions in Java
- Project discussion
Class 45
Cancelled
(Thursday, November 18, 1999)
Class 46
Project Testing
(Friday, November 19, 1999)
- Assigned:
- Exam 3 (due Friday, December 3, 1999)
- Assignment 4 returned
- Planning for the presentation
- Some notes on trees (if there is time)
Class 47
Project Presentations
(Monday, November 22, 1999)
Class 48
Trees, Continued
(Wednesday, November 24, 1999)
- A tree design
- Binary expression trees
Class 49
Traversing Trees
(Monday, November 29, 1999)
- Reverse polish notation
- How do you visit, iterate, or list the elements of the tree?
- Preorder vs. postorder
- Depth-first vs. breadth first
- Iterators in Java
Class 50
Introduction to Graphs
(Wednesday, December 1, 1999)
- Modeling and pictures
- Some sample modeling problems
- Introduction to graphs
- Terminology
- Methods
- Common implementations
Class 51
Simple Graph Algorithms
(Thursday, December 2, 1999)
- Graphs and modeling
- Common graph problems
- The traveling salescritter problem
- Reachability
Class 52
Shortest Path
(Friday, December 3, 1999)
- Reachability, revisited
- The shortest path problem
- A greedy solution
Class 53
Graphs, Concluded
(Monday, December 6, 1999)
- Exam 3 due.
- Dijkstra's shortest path algorithm
Class 54
Comparing Lists
(Wednesday, December 8, 1999)
- Assigned:
- Course evaluations
- Comparing lists
- Criteria for evaluating metrics
- Some sample metrics
- Implementing those metrics
Class 55
A History of Computer Science
(Thursday, December 9, 1999)
- Some definitions
- Computing
- Electronic computing
- Binary vs. Analog
- Networking
- Computer science
- A timeline
- The impact of computing
- Other implications
Class 56
Wrapup: What is Computer Science? Revisited
(Friday, December 10, 1999)
- Due today:
- Code for project (emailed)
- Group report (emailed and printed)
- Individual reports (emailed and printed)
- History of computing, continued
- An overview of CS
- Final wrapup
The optional final is due this week.
Not all changes to the syllabus will be reflected in this history,
since much of the syllabus is automatically generated from other files.
Tuesday, 10 August 1999
Wednesday, 25 August 1999
- Removed material on machine representation
Tuesday, 31 August 1999
- Significant reorganization to accomodate some issues encountered
in the first week of class.
Wednesday, 1 September 1999
- Changed week numbers to long form.