*

CPS 100E: (CS1.5 + CS2)

Programming Design and Analysis II (for those with prior experience)

[ Overview | Syllabus | Links | Assignments | Labs | Quizzes | Grading | Group Work | Tests | Code ]

* Professors
Owen Astrachan
Dee Ramm

* TA Michael Loeb
* UTA Rachel Pottinger

Course Overview

Covers the same material that's in CPS 100 which is: data structures, analysis of algorithms, data abstraction and abstract data types, object-oriented programming, proofs of correctness, complexity and computability, sorting and searching.

However, CPS 100E assumes no prior knowledge of C++ (this is assumed in CPS 100). Instead, students are expected to have prior experience programming with functions, arrays, and (ideally) records/structs as might be learned in a course using Pascal or C. Students who do well on the Advanced Placement Computer Science A exam (4/5) or who earn a 3 on the AB exam, should elect this course. Complete information on choosing a first course in computer science is accessble.

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 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 30%
written/minor programming assignments 10%
labs 8%
random quizzes 6%
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.

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

Late Assignments

Assignments have an early due date and a final due date. Normally these dates will be on Monday (at midnight). Assignments turned in on the early due date will earn a 10% bonus (based on the total value of the assignment).

Assignments turned in after the final due date are penalized 25%. No assignment will be accepted more than one week after the final due date. Exceptions to this rule may be granted in advance, but not after the fact.

Newsgroup and mail

You should monitor the newsgroup duke.cs.cps100e 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 cps100e 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/cps100e.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

* Program 1 (firstprog)
Gambling: Simulating Craps and Roulette

* Program 2 (kwic)
Reading, Sorting, Indexing, and printing Kwicly

* Program 3 (linksort)
Sorting with linked lists

* Program 4 (guess-an-animal)
Trees and Guessing Games

* Program 5 (Huffman Coding)
Data Compression

Extra Credit Assignments

* Extra 1 (ladder)
Finding word ladders, using pointers, queues (p's and q's??)

* Extra 2 (family) Finding family trees.
(a large sample input file is accessible, see also ~/ola/cps100e/family)

Written Assignments

* linked list
Linked List assignment due October 18, 8:00 am

* TBA


Labs


Random Quizzes



Grades

Information on grades and who grades what assignments and labs

Group Work


Tests from previous semesters

Tests from this semester in CPS 100e:

Test 2 Extra problems

These extra problems can earn extra points towards test 2, solutions must be turned in electronically. *

Practice Test for Test 2 This semester

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

* Test 1, Spring 96 in postscript (CPS 100)

* Test 2, Spring 96 in postscript (CPS 100)

* Test 2, Fall 95 in postscript (CPS 100 E)

* Test 1, Fall 95 in html (CPS 100 E)

* Test 1, Fall 95 in html (CPS 100)

* Test 2, Fall 95 in html (some pictures missing) (CPS 100) Tests below are from CPS 100


Code

Some code examples discussed in class.

Useful Links

* class FAQ
frequently asked questions, news summaries, etc.

* OIT online help page
information about clusters, Unix, AFS, etc.


Last modified September 2, 1996 by Owen Astrachan, ola@cs.duke.edu