Meetings
Course meetings will be held Tuesdays and Thursdays from 4:25-5:40pm in French Science Room 2237. |
![]() |
Staff
![]() |
Professor Robert Duvall LSRC Room D228 660-6567 Office Hours: Mondays 11:30am-1pm, Tuesdays 2:30-4pm, Thursdays 5:40-6:30pm, and Fridays 1-2pm Drop-in policy: Feel free to come in whenever my office door is open. You may also contact me to make an appointment. |
Textbooks
Most of the readings assigned during the semester will be excerpts from books or online articles. However, many students also like to use a reference book, so the books listed below are optional. There is lots of information available online. If you choose to buy any of these books online, using this link to buy from Amazon lets your purchase contribute to undergraduate Computer Science Research at Duke.
![]() |
Essential Mathematics for Games and Interactive Applications |
![]() |
OpenGL
Programming Guide by M. Woo et al 2006 |
In general you should read the text in order to be prepared to ask and answer questions in class. If you have looked at material before it is discussed in class you will get much more out of the class discussion. Although time will be given at the beginning of lecture for you to ask questions about the reading, the majority of the lecture will be an extension of the reading, not a summary.
Computing
All programming projects should be written in Java and compile and execute on a Windows, Linux, or Macintosh computer. Projects may be developed on other platforms (e.g., your personal computer), but the final version must be tested on one of these platforms. Note, graphics programs in particular vary from platform to platform in both speed and appearance, so be sure to test your final version on a machine other than your own before submitting it.
You should submit only code, text, HTML, or PDF, and possibly image files (gif, jpeg, or png) or sound files (.au or .wav). You are free to use any programming environment available to complete your work, however, you are responsible for converting it into one of the standard formats listed above (most current programs can save or print files to a variety of alternate formats). Additionally, with each project you must submit a file describing what resource files (images, models, scripts, or parameters) needed to run your program and how to compile and run your program; points may be taken off if it is hard to determine how to test your submission.
Grading
Grading is done on an absolute, but adjustable scale. This means that there is no curve and thus need to compete with your fellow classmates. 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.
While there is a significant programming component to this course, it is primarily about understanding the concepts of computer graphics. Accordingly, your grade is based partly on how well you do on the programming projects and partly on how well you complete the take home exams.
Homeworks 25% Programming projects 25% Midterm exams 25% Final Project 25%
Homeworks are mathematical problems designed to ensure your understanding of the essence of computer graphics and must be done on your own.
There will be two take home exams during the semester; of course, these must be done alone.
Programming projects are open-ended programs intended to give you a chance to experiment with the course concepts and can be done by one or two students. You may choose your own partners for each project. Only one summary grade will be given for each group project. That grade depends not only on your programming skills but on your ability to work in a group. More credit will be given to programs that have minimal, but collaborative, functionality than to projects that have one piece working perfectly, but do not represent the integrated efforts of the group.
The final project is a larger group project that will be completed in stages by three to four students and must be handed in before the course's scheduled exam time, Friday, December 11 at 7pm. Since this project will be built in stages, it will not be possible to change your final project groups once they have been chosen. Your final project will be presented in an open session in which I will invite everyone in the Computer Science department.
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.To receive a grade in the A range on programs you must exceed expectations.
Turning Assignments in Late
All projects must be submitted electronically according to the directions given here by the end of the day given as the due date (i.e., 11:59:59pm).
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. 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 talk to the professor as far before the due date as possible. Do not give up, ask for help.
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. Extensions will not be granted after an assignment is due, you must request an extension well before an assignment is due.
Collaboration Policy
In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate, on programming projects and classwork. Quizzes and Exams taken online or in-class must be your own work; you should not collaborate on them at all. Studying together is always encouraged, especially when preparing for quizzes or exams. At other times you may be assigned to work in a group, in which there will be only one submission for the entire group that represents your collective effort.
You are responsible for understanding all work you turn in. For any given assignment, an interview may be included as part of the graded work. During the interview, you may be asked to explain the problem solving process and individual lines of code not given as part of the assignment. Turning in code that you cannot explain is considered cheating.
You may consult with the course staff about any aspect of the course. On programming projects and classwork you may consult with other students only in a general way, e.g., about debugging, programming concepts, or questions about wording on the assignment. You cannot actively work with someone else unless the assignment specifically grants permission for you to do so. It is never acceptable to directly show one another your program code or write one program among a group and submit multiple copies. Finally, it is unacceptable to search for direct answers to problems on the Internet.
Consult means you can discuss programs in a general way before writing code and get help with debugging your program, but you must write your own code and do your own thinking about the problem. For each assignment you are expected to include a list of the people with whom you have consulted (including any other students and course staff) in the README file you submit with the assignment. You should also cite any resources other than class materials you use (e.g. web pages, notes from other courses at other universities, etc.).
If you are not sure what the collaboration policy is for a given assignment, please ask!
Additional Information Online
Web Page
Many of the materials for this course, including the syllabus, class
notes, reading assignments, homeworks, and other resources, will be
available through the course web page at http://www.cs.duke.edu/courses/cps124/fall09/
Bulletin Board
You should regularly read and contribute to the course bulletin
board as it is a useful place for posting questions that are likely to
be of interest to the rest of the class. You are encouraged to post
responses to questions as well as ask them. The bulletin board will
be monitored regularly and responses posted to questions that have not
previously been answered. Before posting a question, please make sure
that you have read all previous messages and that your question has
not yet been discussed.
Finally, please check your email regularly, as important course announcements may be sent via email.