LSRC image Time and Place
  • Monday, Wednesday, and Friday from 10:20am-11:10am
  • Soc Sci Room 229 (The ICC)


Professor: Robert Duvall
  • Office: LSRC Room D228
  • Email: rcd AT cs DOT duke DOT edu
  • Phone: 660-6567
  • Office Hours: before or after class, or anytime for a quick question


Any Java reference book will serve you well, the following are recommended. Additionally, you will be given several copied excerpts and online readings during the semester.

Java Concepts by Cay Horstmann

This book has been the standard textbook for several semesters and there may be used ones available at the bookstore.

Java: How To Program by Deitel and Deitel

This book is good reference book for all of Java --- we will not cover many of the chapters in this course. Many examples of each concept are given throughout the book.

The Java Tutorial by Mary Campione, Kathy Walrath, Alison Huml

This book is published by the creators of Java and also available online.

This course will be taught in a workshop format in an Interactive Computer Classroom (ICC), meaning that, in general, 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.


Classwork activities will be done on IBM Workstations running Windows XP. If some of the software and descriptions do not include other computing platforms, like Macintosh or Linux, it is not meant to show a bias, simply the reality of the working environment. You will be able to work in the classroom any time there is not another activity scheduled there. Additionally, you will be able to work on any acpub Windows machine on campus. To facilitate working in your dorm room, any software discussed in class is available for download here.


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:

programming projects
in-class exams
final project

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).

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. However, any extra credit features that you add will not be counted unless you get the basics working first. 

Turning in Assignments Late

All projects must be submitted electronically by the end of the day (i.e., 11:59:59pm) they are due according to the directions given here.

Assignments turned in on time receive no penalty. Assignments turned in up to two days late incur a 10% penalty, more than two days late incurs a 25% penalty. A weekend represents one-day for the purposes of measuring lateness.

Individual extensions will be granted only for medical reasons (see the Short-term 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 is due.

Due to the pace of the course, assignments will not be accepted after one week has passed from the due date. If this happens to you, you should talk to one of the course staff immediately. It is important that you do not get behind in this class, its pace is too fast to allow you fall behind. The secret to successfully surviving this course is to start early and work steadily; it is not possible to cram or skim in Computer Science classes. If you are having trouble, be sure to the professor as far before the due date as possible. Do not give up, ask for help.


The final project will be a group project (of two or three students) that will be assigned instead of a final exam. This final project must be completed and handed in before the course's scheduled final exam time. Additionally, you must meet with the professor as a group to demo your project and discuss its details. Plan on this demo taking approximately a half-hour --- everyone in the group must attend this demo.

The in-class exams will be held during the course's meeting time and in the course's meeting room and will be closed-book. This is not because we expect you to memorize material for the midterm exams, but because we do not want you to spend time looking up answers when a test is roughly one hour long. Instead, for the midterm exams, a handout will be given with material that does not need to be memorized. You may request specific material to appear on the handout.

Information Online