Duke CS Logo CompSci 6: Program Design & Analysis I
(Fall 2009)
Home
Course Information
Calendar
Assignments
APT problems
Resources
Help sessions
Discussion Forum
Blackboard
Oasis

Index


Course Description

Design and implementation of programs to solve problems in computer science, engineering, and natural sciences. Object-oriented programming using Java, analysis of programs and algorithms, reading, modifying, and designing classes, data structures including arrays, sets, and maps. Intended as an introduction for majors and those interested in programming and computer science with applications in the sciences. We use the programming language Java and the Eclipse environment.

Prerequisites:

  • Familiarity and experience with programming using variables, loops, functions, and arrays
  • Mathematics 31 or equivalent (may be taken concurrently)

Time and Place

Section 1: 11:40am - 12:55pm on Tuesdays and Thursdays
Section 2: 8:30-9:45 on Tuesdays and Thursdays

Class is in D106 LSRC

Class attendance is required. You will work on problem solving (with and without computers) during class. Often, this classwork will need to be finished outside of class. Submitted classwork will count as part of your classwork grade.


Staff

Professors

CS Department
	          Image
Susan Rodger
Email: rodger at cs.duke.edu
Office: D237 LSRC
Office Phone: (919) 660-6595
Office hours: I'm usually in 8am-2pm most days, drop by or best to email me and make sure I am in. I am not in when I am teaching (tue and thur 8:30am-11:20am) or have a weekly meeting Tuesdays (1-2).
CS Department
	          Image
Jeff Forbes
Email: forbes at cs.duke.edu
Office: D235 LSRC
Office Phone: (919) 660-6550
Office hours: Fridays 1:00-2:30, any time my door is open (which is most of the time), or by appointment

Teaching Assistants

CS Department
	          Image
Ang Li
Email: angl at cs.duke.edu
Office Hours: TBA
Office: D325 LSRC
Office Phone: (919) 660-6588

Undergraduate Teaching Assistants

CS Department
	          Image Undergraduate Teaching Assistants
    TBA

Contact the staff at cps006-staff AT cs.duke.edu.


Texts and Software

Textbooks are available in the Duke textbook store. If you choose to buy it online, please click on the book image below to buy from
Amazon and contribute to undergraduate Computer Science Research at Duke.

Java Concepts (5th Edition)
TA Lim Java Concepts by Cay Horstmann

Students will be expected to be active participants in group exercises involving the computers available during class time. This makes it vital that you prepare before coming to class, because graded work for the course will be done during almost every class meeting.


Topics covered

The following topics will be covered during the semester.

  • Programming Concepts
    • Primitive data types: int, double, boolean
    • Conditionals, Loops
    • Testing and Debugging
  • Object-Oriented Programming
    • Instance variables, Constructors, Methods
    • Inheritance, Polymorphism
  • Algorithms
    • Text Processing, Reading data from a file
    • Comparing data, Sorting, Searching
    • Recursion
  • Collections
    • Lists, Sets, Maps, Matrices

The exact order and details of these topics will be given on the course Calendar, which is subject to change during the semester based on the pace needed.


Web, Discussion Forum, and Blackboard

Most of the course materials, including the syllabus, lecture notes, reading assignments, homework, programming FAQs, etc., will be available through the course Web page (http://www.cs.duke.edu/courses/fall09/cps006/).

The discussion forum is useful for posting questions that are likely to be of interest to the rest of the class. We very much encourage students in the class to post responses to questions. We will monitor the the newsgroup regularly, and post responses to questions that have not previously been asked or answered. Before posting a question, please do make sure that you have read all previous messages and that your question has not yet been discussed.

We will use the Blackboard course management system for posting official grades and some course materials, and for turning in some assignments. (https://courses.duke.edu/bin/common/course.pl?course_id=_90156_1)

Programming project feedback will be posted on Oasis.

Finally, please check your email regularly, as important course announcements will be sent via email.


Grading

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% or more guarantees a grade in the B range, 70% or more guarantees a grade in the C range, 60% or more guarantees a grade in the D range. This scale may slide down, but it will not go up.

There will be several types of assignments during the term, each contributing to your final grade by approximately the following percentages:

homework projects 25%
classwork 20%
reading quizzes 5%
in-class exams 30%
final exam 20%

The percentages given below assume each of the projects above is assigned. If, during the semester, a project is not assigned, they may be updated to reflect their relative weight in the course. In short, these percentages are given as guidelines -- not fixed weights. Additionally, points on assignments within individual categories will vary. Harder assignments will be worth more points, and most assignments will get harder as the semester progresses (harder means takes more time, requires more thought).

The programming projects will be open-ended, providing a lot of room for you to express some creativity and go beyond the basic specification. For each assignment, you will be expected to complete all of the assignment's basic functionality as well as use good style so your program "looks" nice. To earn an A grade on these projects, you must do more than merely meet the requirements, you must go beyond them. In order to earn an A+ you must do several of the optional assignments and exceed expectations in general. Note, any extra credit features that you add will not be counted unless you get the basics working first.


Course Policies

Individual extensions will be granted only for the reasons stated in the
Trinity Requirements. In each case, you should either submit the appropriate form (e.g. the Short-term Illness Notification Form) or other circumstances beyond your control that must be presented with an official Dean's excuse. We do not grant extensions after an assignment is due, you must request an extension before an assignment is due.

If you have personal reasons to ask for an extension, and you do so at least a week in advance, it's possible to get one, so please ask.

Late Programming Projects

Assignments turned in on time receive no penalty. Assignments turned in up to two days late incur a 10% penalty. Assignments turned in more than two days late incur a 25% penalty. Assignments will not be accepted after one week has passed from the due date.

In general, the weekend counts as one day.

If you're having trouble, be sure to see a UTA/TA and preferably the professor in charge of the course as far before the due date as possible. Don't give up, ask for help.

Other Assignments

You cannot make up an in-class assignment. We will provide opportunities to earn "extra" points on in-class work so that if you miss a small number of these your grade won't be affected. However, frequent absences from class will affect the portion of your grade based on quizzes and in-class work.

Points on assignments will vary. Harder assignments will be worth more than previous assignments, and most assignments will get harder as the semester progresses (harder means takes more time, requires more thought).

Collaboration Policy

Quizzes and Exams taken online or in-class must be your own work, you should not collaborate on them.

On programming assignments, you may consult with professors, and TAs/UTAs about any aspect of the assignment. You may consult with other students only in a general way, e.g., about debugging or Java issues, or questions about wording on the assignment. You cannot actively work with someone unless the assignment specifically grants permission to work together with another student.

Consult 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 you are expected to include a list of the people with whom you have consulted (including students, TAs, tutors, professors) as part of your submission. This information is required with each assignment. It is part of your README file, and failure to provide it will result in rejection of the assignment as complete. You may be able to resubmit.

See the departmental Collaboration Policy for more information.

Exams

Tests will be held during the lecture time and in the same room. The final will also be in the same room.

Feedback

We appreciate any feedback you might have about the course and encourage you to talk to or email the Prof. Rodger, Prof. Forbes, Ang Li, or UTAs with any questions or concerns you may have. If you have concerns that you do not feel comfortable expressing directly to the course staff, please use the department's anonymous course feedback form.
Last updated Wed Nov 18 14:00:33 EST 2009