Swarthmore CS 35.2, Spring '99
Algorithms and Object-Oriented Programming
synopsis of this page in postscript (for printing)
Time and Locations
Tu/Th 1:15-2:30
Location alternates between Kohlberg 116 on Tuesdays
and Sproul CS Lab on Thursdays.
Description
CS 35 introduces fundamental concepts in computer science that
together form a solid basis for further study in the field. In particular,
we will examine the
data structures -- and the algorithms that operate with them -- that are
central to contemporary software.
This course develops abstract thinking so that the design and
implementation of large robust software systems occurs at
the conceptual level -- rather than at the level of bits and bytes.
To do so, we will progressively encapsulate low-level data and
instructions as reusable objects. All the while, we will consider
algorithms in terms of their resource (time and space) costs and
emphasize techniques for writing correct and modular code.
Toward course end, we will study the basics of concurrency,
user-interface construction, and network programming.
Where appropriate, research issues in computer science will be discussed.
Instructor
Lorenz Huelsbergen
- lorenz@cs.swarthmore.edu or
lorenz@research.bell-labs.com; please place "cs35" in subject if you use the latter
- Office Hours: Tu/Th 12:30-1:15, Sproul CS lab/seminar room; or by appointment
- Phone: (908) 582-4628 MWF
Texts
- Required text
- Data Structures and Algorithms in Java, by Goodrich and Tamassia,
John Wiley and Sons, ISBN 0-471-19308-9. (errata)
- Auxiliary texts
- Introduction to Algorithms, by Cormen, Leiserson, and Rivest.
MIT Press, 1990, ISBN 0-262-03141-8.
- The Java Programming Language, by Arnold and Gosling.
Addison-Wesley, ISBN 0-201-63455-4.
- Writing solid code : Microsoft's techniques for developing bug-free C programs, by Maguire. Microsoft Press, ISBN 1-55615-551-4.
Tentative Syllabus
syllabus in postscript (for printing)
- Week I: INTRODUCTION
- Jan. 19: Lecture: course organization, Java types and control flow
- Jan. 21: Lab (reading)
- Week II: OBJECTS
- Jan. 26: Lecture: Java objects, inheritance, polymorphism (reading)
- Jan. 28: Lab (reading)
- Week III: LINEAR STRUCTURES
- Feb. 2: Lecture: arrays, vectors, stacks (reading)
- Feb. 4: Lab (reading)
- Week IV: MORE LINEAR STRUCTURES
- Feb. 9: Lecture: lists, queues (reading)
- Feb. 11: Lab (reading)
- Week V: APPLICATIONS OF LINEAR STRUCTURES
- Feb. 16: Lecture: searching, sorting (reading)
- Feb. 18: Lab (reading)
- Week VI: EXAM WEEK
- Feb. 23: Exam 1, Kohlberg 116
- Feb. 25: Lab
- Week VII: ACYCLIC STRUCTURES
- Mar. 2: Lecture: trees (reading)
- Mar. 4: Lab (reading)
- Week VIII: SPRING BREAK
- Week IX: MORE ACYCLIC STRUCTURES
- Mar. 16: Lecture: trees, string matching
(reading)
- Mar. 18: Lab
(reading)
- Week X: APPLICATIONS OF ACYCLIC STRUCTURES
- Mar. 23: Lecture: priority queues, heaps (reading)
- Mar. 25: Lab (reading)
- Week XI: DICTIONARIES
- Mar. 30: Lecture: sequences, hash tables, tree-based dictionaries (reading)
- Apr. 1: Lab (reading)
- Week XII: EXAM WEEK
- Apr. 6: Exam 2, Kohlberg 116
- Apr. 8: Lab
- Week XIII: CYCLIC STRUCTURES
- Apr. 13: Lecture: graphs (reading)
- Apr. 15: Lab (reading)
- Week XIV: NO LECTURE/LAB
- Apr. 20: Work on homework/project (reading)
- Apr. 22: Work on homework/project (reading)
- Week XV: SYSTEM PROGRAMMING
- Apr. 27: Lecture: spanning trees/string matching (reading)
- Apr. 29: Lab
- Week XVI: READING PERIOD
- Week XVII: FINAL EXAMS/PROJECTS DUE
Grading
- Programs and assignments: 40%
- Two exams: 10% each
- Final exam: 15%
- Project: 20%
- Contributions in lecture/lab, etc.: 5%
Homework
Assignments will be made every week and a half, approximately.
They will appear here as they are given.
Instructions on submitting homework
- Homework 1 (given January 26; due February 4 before class);
basic object-oriented design and programming
- Homework 2 (given February 9; due February 18 before class);
big-O notation, stacks, exceptions
- Homework 3 (given February 18; due February 25 before class);
singly and doubly linked lists, queues
- Homework 4 (given February 25; due March 4 before class);
merge sort, binary search, recursion
- Homework 5 (given March 16; due March 23 before class);
tree properties and datatypes
- Homework 6 (given March 25; due April 1 before class);
binary decision trees
- Homework 7 (given April 8; due April 15 before class);
hash tables
- Homework 8 (given April 15; due April 27 before class);
graphs and graph search
Exams
There will be two in-class exams during the semester
(Feb. 23 and Apr. 6) and a final exam (details, TBA).
Programming Project
Overview
Frequently asked questions
Resources
Java Links
Java Workshop, an environment for building Java programs and applets,
can be run locally as
/usr/local/depot2/Java-WorkShop2.0/JWS/sparc-S2/bin/jws
Rules
Polices and Regulations for CS 35.2 homework, labs, and exams.
lorenz@research.bell-labs.com