CPS 100: Fall 1996 Syllabus
- Office:
LSRC D237
- Office Hours:
Mon. 5-6pm, Tue 4-5pm, Wed. 4-5pm
- Email: rodger
- Phone: 660-6595 or 419-7098
Teaching Assistant: Scot Ransbottom
- Office Hours: Monday 4-5pm, Wed. 2:30-3:30pm, Fri. 12-1pm
- Email: jsr@cs.duke.edu
- Office:
LSRC D229
- Phone: 660-6514
Course Meeting Time
Tue, Thu: Old Chemistry 116, 10:55-12:10
Course Description:
Continuation of CPS 6 and 8. Topics include data structures,
analysis of algorithms, data abstraction and abstract data types,
object-oriented programming, proofs of correctness, complexity and
computability, sorting and searching.
Required Background:
Prerequisite: CPS 6 or CPS 8.
Text
- Algorithms, Data Structures, and Problem Solving in C++, by
M. Weiss. Available in the bookstore.
- (optional) Introduction to the Public Unix Clusters
at Duke. Available at the Gothic bookstore.
- (optional) C++, How to Program, by Deitel and Deitel.
Available at the bookstore.
Reading
In general you should read the text in order to be prepared to ask and
answer questions in class. If you've looked at material before it's
discussed in class you'll get much more out of the class discussion.
Web page
Many of the materials for this course (including this page)
are available on
http://www.cs.duke.edu/~rodger/courses/cps100/intro.html
Newsgroup
You should regularly read the newsgroup duke.cs.cps100
as it may contain announcements, hints, and information relevant
to this class. The Introduction to the Public Unix Clusters
at Duke
explains how to read newsgroups.
Computing
All programming projects should compile and execute on the acpub Sun
SparcStations.
Projects may be developed on other platforms, but the final version
must compile and execute on the SparcStations.
Sparc clusters are found in Teer 106, Engineering 139,
Soc-Psych 133, Bio-Sci 002CC, Carr 125 and other places on campus.
There will be additional clusters on East Campus.
All projects will be submitted electronically.
Collaboration
You may consult with one or two other students (and as many times as you want
with TA's and Professor Rodger) on assignments and programs,
but should limit collaboration otherwise. This means you can discuss the
programs before writing code, and get help with debugging your program,
but you should write your own code. Writing one program and making multiple
copies of it is not acceptable! For each assignment and
program you are expected to include a list of the people with whom you
have consulted (including students, TA's, tutors, professors).
Finally, you may not consult with the same students on two
consecutive assignments/programs.
Grading
| programming/written assignments |
45%
|
| random quizzes/groupwork |
5%
|
| tests (2) |
20/30%
|
| final exam |
20/30%
|
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.
There may be several optional assignments. Completion of these can
earn points towards raising a grade.
Sometimes optional quizzes or
extra credit will be given. These can earn points only in their
category, i.e., optional quizzes can earn quiz points to bring you up
to a 100. The maximum grade recorded in any category is 100.
The tests and final exam will be closed-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. For example, if your
final exam grade is lower than your test average, then your final exam
will count 20% and your test average will count 30%.
The random quizzes/groupwork grade includes your quiz grade and
your participation in
group activities during class. These activities may
involve some preparation work before class.
Late Programming Assignments
Almost all programming assignments
will be due on Monday at 8:00 am (note that programming assignments are
submitted electronically).
Late programming assignments
are penalized 10% for each day late (three
days late is 30% off) and Sundays do not count as late days.
If you are having lots of problems, please do NOT give up --- talk to
Professor Rodger.
Dishonesty Policy:
Quizzes and Tests must be your own work.
On programming/written assignments,
you may discuss problems with other students in the class, but the final
writeup or program turned in must be your own. Merely copying answers
is NOT permitted. For each assignment and program, you
must list the people whom you have worked with. You may not consult with
the same students on consecutive assignments/programs!
Schedule for CPS 100
Test dates are fixed, but the topics are just a guideline.
See below for the Actual Schedule.
| Date | Topic | Reading |
| Sept 3 | Introduction, Pointers, Linked Lists |
Chaps. 1, 6.4 |
| Sept 5 | Linked Lists, Classes |
Chaps 2, 16 |
| ========= | ====================================== |
========= |
| Sept 10 | Analysis, Big-Oh |
Chap 5 |
| Sept 12 | Templates, Stacks |
Chaps 3, 6.2, 15 |
| ========= | ====================================== |
========= |
| Sept 17 | Queues, Recursion |
Chaps 6.3, 7, 15 |
| Sept 19 | Stacks, Expressions |
Chap 11 |
| ========= | ====================================== |
========= |
| Sept 24 | Sorting |
Chap 8 |
| Sept 26 | Trees |
Chaps 6.5, 6.6, 17 |
| ========= | ====================================== |
========= |
| Oct 1 | Trees |
Chap 18.1-3 |
| Oct 3 | Trees |
|
| ========= | ====================================== |
========= |
| Oct 8 | Review |
|
| Oct 10 | Test 1 |
|
| ========= | ====================================== |
========= |
| Oct 15 | Balanced Trees |
Chap 18.5 |
| Oct 17 | Balanced Trees |
|
| ========= | ====================================== |
========= |
| Oct 22 | FALL BREAK |
|
| Oct 24 | Hashing/Tables |
Chaps 6.7, 19 |
| ========= | ====================================== |
========= |
| Oct 29 | Priority Queues |
Chap 6.8. 20 |
| Oct 31 | Priority Queues |
|
| ========= | ====================================== |
========= |
| Nov 5 | Graphs |
Chap 14 |
| Nov 7 | Graphs |
|
| ========= | ====================================== |
========= |
| Nov 12 | Huffman Coding |
Chap 12 |
| Nov 14 | Huffman Coding |
|
| ========= | ====================================== |
========= |
| Nov 19 | Review |
|
| Nov 21 | Test 2 |
|
| ========= | ====================================== |
========= |
| Nov 26 | Inheritance |
Chap 4 |
| Nov 28 | Thanksgiving Break |
|
| ========= | ====================================== |
========= |
| Dec 3 | Computational Geometry |
|
| Dec 5 | Computational Geometry |
|
| ========= | ====================================== |
========= |
| Dec 10 | Special Topics |
|
| Dec 12 | Special Topics |
|
| ========= | ====================================== |
========= |
| Dec 16-21 | FINAL EXAM PERIOD |
|
The final exam COULD THEORETICALLY be held on the last day of the exam period.
DO NOT MAKE PLANS TO LEAVE DUKE BEFORE THIS TIME.