For students who have taken CompSci 6, Engineering 53, or have other
programming experience. Object-oriented design and
programming using Java emphasizing abstract data types and
their lower-level implementations. Advanced data structures including
balanced trees, hash tables, graphs. Intuitive and rigorous analysis
Prerequisite: Programming experience with variables, loops, conditionals, and
collections (e.g., arrays, vectors, lists, etc.).
Time and Place
2:50pm-4:05pm on Wednesdays and Fridays; Sociology-Psychology 126
Labs 2:50-4:05 Mondays in Soc-Psy 126.
|Jeff ForbesEmail: forbes at
Office: D235 LSRC
Office Phone: (919) 660-6550
Office hours: Mondays 4:15-5:15, Fridays 1:00-2:00, any time my door is open (which is most of the time), or by appointment
|Bala ChandrasekaranEmail: balac at cs.duke.edu
Office Hours: Wednesdays, 4-6pm
Office Hours Location: D344 LSRC
Office Phone: (919) 660-4007
|Jannie TanEmail: jytan at cs.duke.edu
Office Hours: Thursdays, 3-5pm
Office: N005 North Building
Office Phone: (919) 660-4005
Undergraduate Teaching Assistants
The CompSci 100e UTAs will hold Helper Hours
Sunday through Thursday, 6-10pm in the Link.
Contact the staff at cps100e AT cs.duke.edu.
Texts and Software
Introduction to Programming in Java: An Interdisciplinary Approach,
Required, by Robert Sedgwick and
Textbooks are available in the Duke textbook store. If you want to buy books online,
please click on the book images above to buy from Amazon and contribute to
undergraduate computer science research at Duke. We will use the
Sedgewick & Wayne book quite a bit in the beginning of the
semester and assign from exercises from there. You may need that
book to complete some of the assignments, so that book is required.
Software for the course will be provided via this website or in lab.
See calendar for a tentative list of topics.
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/spring11/cps100e/).
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 forum 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.
Finally, please check your email regularly, as important course
announcements will be sent via email.
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.
This class involves reading, assignments, and tests. The different types
of work each contribute
to your final grade by approximately the following percentages:
|major programming assignments
To receive a grade of A or A+ you must exceed
expectations. This means you must do everything required
extraordinarily well or you must do more than is required and do this
well. In other words, to earn an A you must do more than merely meet the
requirements, you must go beyond them.
In order to earn an A+ you must do some of the optional assignments
and exceed expectations in general.
Individual extensions will be granted only for medical reasons (see
Illness Notification policy) 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
If you have personal
reasons to ask for an extension, and you can do so at least a week in
advance, please ask.
Tests will be held during the lecture time and in the same room.
The final will also be in the same room.
You can bring a limited number of sheets of notes to the midterm exams. The final exam
will be open book/open-note.
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.
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
APTs are Algorithmic Problem-solving/Programming Testing problems and
programs. You'll be given a description of a problem and asked to write
code to solve it -- testing the code online and when you're happy with
the code submitting it for grading. We do not review your the source
code for style or design
when grading. We simply run it on test cases. However, you should strive to make
your code small and beautiful. APTs will typically be due on Tuesdays
or Thursdays. We will not accept late APT programs this
semester. Keeping up with APTs ensures you understand the topics we're
discussing in class. You will have many chances to do extra APTs, thus
being able to make up for missed submissions.
Labs and Classwork
You cannot make up an in-class or lab assignment. We will
provide opportunities to earn "extra" points on
in-class work or labs so that if you miss a small number of these your grade
won't be affected. However, frequent absences from class and lab will affect the
portion of your grade based on lab and in-class work.
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.
Collaboration in CompSci Courses
Every assignment submitted for credit (i.e., programming project and APTs)
must include a README.txt file that includes the following
- Your name and NetID
- Hours Spent: Give the date you started the assignment, the date you completed the
assignment, and an estimate of the number of hours you worked on
- Consulted with: A list of the students, TAs, and professors with whom you consulted on the
assignment. Since assignments are to be your own
work, you should keep track of anyone with whom you have had a
conversation about a program. You are welcome to talk with the course
staff about the assignment, and to other students about broad ideas and
If you did not consult with anyone, you must explicitly state
- Resources used: Note any books, papers, or online resources that you used in
developing your solution.
If you did not use any outside resources, you must explicitly
state that fact.
- Answers to questions: There may also be specific questions given in the assignment whose
you will be asked include in this file.
- Impressions: You may include your impressions of the assignment to help the course
staff improve it in the future.
Failure to provide this file with this information will result in rejection of the
as complete. You may be able to resubmit.
We appreciate any feedback you might have about the course and encourage
you to talk to or email the Prof. Forbes, the TA, 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.