Prof. Rodger's CPS 6: Fall 1996 Syllabus


Professor: Susan Rodger

Graduate TA: Yue Ma

Head Undergraduate TA: Ted Harder

Course Meeting Time

Web page

Many of the materials for this course (including this page) are available on http://www.cs.duke.edu/~rodger/courses/cps6/intro.html

Course Description:

Problem-solving techniques using a computer, top-down decomposition and object-oriented solution methodologies, introduction to computer science, introduction to programming, programming in the C++ language, introduction to UNIX and programming environments, recursion, analysis of execution times, linked data structures, searching, and sorting.

Required Background:

This is the first course for computer science majors who have no programming experience. If you have significant programming experience (e.g., functions, procedures, arrays) with another programming language, you should consider enrolling in CPS 100E. See the guide for choosing the correct computer science course for more information or talk to Prof. Rodger.

Text

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. This is especially true once class has been going for a while.

Labs

In each lab, you will be given an assignment that addresses the new concepts discussed during lecture. Assignments will be handed out in lab, but will also be available on the web on the Monday before lab. Attendance at labs is mandatory. Sometimes one part of the lab must be completed during the lab period, and another part can be completed outside of lab. There will be several lab assistants to answer questions you have. If you have an excused reason for missing lab, talk with the Head UTA for your lab section to arrange to make up the in-lab part of the lab missed.

All lab assignments must be submitted by Saturday 8am of the same week. Late labs are penalized 10% for each day late. Sundays do not count as late days, so a lab turned in on Monday the following week by 8am is 10% off, Tuesday by 8am is 20% off, Wednesday by 8am is 30% off, etc.

The first lab introduces you to the SPARCstations, and shows you how to edit, compile and run a C++ program. This first lab will be held the week of Sept. 9-13 and should be turned in by Saturday, Sept. 14, 8am.

Lab Sections and TAs

All labs are in Teer 106. For a list of UTAs click here

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, and Carr 125. 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 Prof. Rodger) on programming assignments and labs, 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 work with the same students on two consecutive assignments.

Quizzes and Tests must be your own work.

Newsgroup

You should regularly read the newsgroup duke.cs.cps006 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.

Grading

labs and written assignments 18%
programming/project assignments 28%
random quizzes/groupwork 6%
tests (2) 18/30%
final exam 18/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 your final 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 your quiz grade 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 18% 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 Tuesday 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 the professor.

Tentative Schedule for CPS 6

Date Topic Reading Labs
Sept 4 OOP, C++, I/O, functions, programming Chap 1-2
========= ====================================== ========= =======
Sept 9 functions, Unix, more I/O Chap 2.1-2.4 Lab 1
Sept 11 parameters and input Chap 2.5-3.1
========= ====================================== ========= =======
Sept 16 classes Chap 3 Lab 2
Sept 18 conditional Chap 4.1-4.4
========= ====================================== ========= =======
Sept 23 functions returning values Chap 4.5-4.9 Lab 3
Sept 25 iteration, Dice Chap 5.1-5.3
========= ====================================== ========= =======
Sept 30 iteration, scope Chap 5.4-5.9 Lab 4
Oct 2 filestreams Chap 6.1-6.2
========= ====================================== ========= =======
Oct 7 Review
Oct 9 Test 1
========= ====================================== ========= =======
Oct 14 Reference Parameters Chap 6.3-6.7 Lab 5
Oct 16 Class Design, structs Chap 7
========= ====================================== ========= =======
Oct 21 FALL BREAK
Oct 23 Vectors/Arrays Chap 8.1-8.3
========= ====================================== ========= =======
Oct 28 Vectors/Arrays Chap 8 Lab 6
Oct 30 Matrices/2-dim arrays, strings Chap 11.5, 9.1-9.3
========= ====================================== ========= =======
Nov 4 Case Study Ch. 9.4-9.8 Lab 7
Nov 6 Recursion Chap 10.1-10.2
========= ====================================== ========= =======
Nov 11 Scope Chap 10.3-10.7 Lab 8
Nov 13 Sorting Chap 11.1-11.3
========= ====================================== ========= =======
Nov 18 Review
Nov 20 Test 2
========= ====================================== ========= =======
Nov 25 Sorting Chap 11.4-11.9
Nov 27 Thanksgiving Break
========= ====================================== ========= =======
Dec 2 Pointers Chap 12.1-12.2 Lab 9
Dec 4 Linked Lists Chap 12.3-12.7
========= ====================================== ========= =======
Dec 9 Linked Lists Chap 12
Dec 11 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.