CPS 100: (Data Structures/CS2)

Programming Design and Analysis II

[ Overview | Syllabus | Assignments | Quizzes | Grades | Group Work | Tests | Code ]


* Professor Owen Astrachan

* TA Geoff Cohen
* UTA Rachel Pottinger

Course Overview

This course naturally follows CPS 06 (or the former CPS 08). Topics covered include data structures, analysis of algorithms, data abstraction and abstract data types, object-oriented programming, proofs of correctness, complexity and computability, sorting and searching.

Texts

Computing

All programs should compile and execute on acpub Sun workstations. They should be compiled with g++ v. 2.7.2. You will need to alter your path to have access to this version of the compiler. Sparc Clusters are found in North 100, Teer 106, 139 Hudson Hall, Soc/Psych 133, Bio-Sci 002CC, and Carr 125. All programs/projects will be submitted electronically.

Collaboration

You may (and should) work with someone else on programs. You may not collaborate on written assignments or quizzes. For each assigment you are expected to include a list of consultants and collaborators as part of the README that must be submitted. You may not work with the same person on two consecutive assignments without prior permission.

Grading

major programming assignments 32%
written/minor programming assignments 15%
random quizzes 7%
tests (2) 26%
final 20%

Grading is done on an absolute, but adjustable scale. This means that there is no curve. Anyone earning 90% or more of the total number of points available will receive a grade in the A range; 80% = B, 70% = C, 60% = D. This scale may go down, but it will not go up. In order to earn an A+ you must do several of the optional assignments. These points count even if you don't earn an A+.

There will be several optional assignments. Completion of these can earn points towards raising a grade by a half-step, e.g., from C+ to B-. In some cases it may be possible to raise a grade by more than one step. Completion of some of the optional assignments is mandatory in order to earn an A+.

The tests will be closed-book, the final exam will be open book. The final exam may be used to bring up your test grade if you receive a higher grade on the final than your test average. The final will count less if you receive a lower grade on the final than your test average. Both grades will be calculated and the higher grade will be used.

Random quizzes will be given out in class and then flipped-for at the next class.

Late Assignments

Assignments turned in on the due date will earn a 10% bonus. Assignments will not be accepted after two weekends have passed from the due date.

Newsgroup and mail

You should monitor the newsgroup duke.cs.cps100 on a regular basis. Information about changes in assignments, due dates, and hints/help will be posted there. News is the preferred forum for asking/answering questions.

You may want to ask questions by email, this is ok. If you have a question about code, you should submit the code (all relevant files) using the appropriate submit command and send email. You should set up acl permission on your cps100 directory for the professor and TA/UTA to have access to the directory.

World Wide Web

All course materials, except for daily notes, are accessible from the class home page. This page is accessible from the Duke Course page and from Prof. Astrachan's homepage. The URL is http://www.cs.duke.edu/~ola/courses/cps100spr96.html (how's that for self-referential).

Dishonesty Policy

You may discuss problems with other students, but strong collaboration is limited to one partner on major programming assignments. If you have such a partner, your writeup and final program should still be your own, except for the final project(s) when a group can submit one program. You must work on your own on written assignments an on minor programming assignments. If you get help of a substantive nature on an assignment, you must acknowledge this assistance in your README file.


Course Materials and Handouts

* Syllabus
reading, test dates, topics covered

* emacs ref (postscript)
summary of emacs commands

* Unix summary (postscript)
common Unix commands summarized


Assignments

Programming Assignments

* BigInt Part I
reading, compiling, modifying bigint program

* BigInt Part II
linked-lists, re-implementing multiplication

* Word Ladder
Using queues to find ladders between words
* sortall
analyzing sorts until you're tired of them
* huff/unhuff
compression and decompression of arbitrary files

Listing (may be unformatted) of Huffman groups

* map
Implementing an abstract map class in several ways

* potm
Program of the month for summer 1996 (plain text)


Extra Credit Assignments

* key word in context (kwic)

* family trees

Written Assignments

* linked list functions
thinking about and writing code for manipulating linked lists

* tree functions
thinking about and writing code for manipulating trees


Random Quizzes


Extra Credit applicable towards Test 2

* extra boost for test 2

* last quiz extra credit

Grades

Information on grades and who grades what

Group Work

A link to the current groups

Tests from previous semesters

Note: topics may not be covered in the same order (or even covered) in different semesters

* Test 1, Fall 95 in html *

* Test 2, Fall 95 in html (some pictures missing) *


Code

Some code examples used towards the end of the semester
Last modified January 8 by Owen Astrachan, ola@cs.duke.edu