Meeting Time
TuTh 4:25-5:40pm in French Science room 2231
F 1:15-2:30pm in French Science room 2231
Course Staff
![]()
Professor: Mike Hewner
- LSRC room D226
- hewner AT cs.duke.edu
- Office phone: 919 660 6526
- Cell phone: 716 517 7671 (generally its better to text me, and then I'll call back when I can)
- Gchat ID: hewner
- Office Hours: Mondays 11-12, Thursdays 1-2
- Drop-in policy: Feel free to come in whenever my office door is open; you may also make an appointment via email.
![]()
Graduate TA: Puneet Jain
- N005 North Building
- puneet.jain AT duke.edu
- Office phone: (919) 660-4005
- Cell phone: 919-636-8303 (I prefer emails over phone calls)
- Office Hours: Tuesday 1:30-2:30
- Drop-in policy: Available outside of hours by appointment only.
![]()
Undergraduate TA: Alex Galonsky
- alex.galonsky AT duke.edu
![]()
Undergraduate TA: Ethan Yong-Hui Goh
- yhgoh88 AT gmail.com
![]()
Undergraduate TA: Michael Hsueh
- hsueh91 AT gmail.com
![]()
Undergraduate TA: Nathan Klug
- ncklug AT gmail.com
![]()
Undergraduate TA: Mason Meier
- masonhm AT gmail.com
![]()
Undergraduate TA: Trevor Narayan
- trevor.narayan AT gmail.com
![]()
Undergraduate TA: Rohan Kshirsagar
- rohan.kshirsagar AT duke.edu
![]()
Undergraduate TA: Derek Zhou
- derek.zhou AT duke.edu
![]()
Undergraduate TA: Julian Genkins
- jgenk90 AT gmail.com
![]()
Undergraduate TA: Tanner Schmidt
- tws10 AT duke.edu
Books
This class has 1 required textbook: Design Patterns by Gamma, Helm, Johnson, and Vlissides (often called the "gang-of-four" book or the "GOF-book"). This class also has 1 optional textbook Head First Design Patterns. We will be frequently assigning readings from the GOF-book, and you may find that it's style is a bit tough to grok. Head First Design Patterns is a funnier, more accessible introduction to many of the same patterns. What I reccommend is that you read HFDP to get the gist and then move on over to GOF for the details. That said, the readings will be from the GOF book so HFDP is optional.
In general you should do the readings in order to be prepared to ask and answer questions in class. Reading quizzes will be online and are due 1 hour before class begins.Topics
The following topics will be covered during the semester.
- Program Design: Principles, Patterns, Architectures, Frameworks
- Working in Teams: Agile Processes focusing on Communication and Cooperation
- Tools: Debugging, Unit Testing, Version Control
- Advanced Java: Generics, Reflection, GUI Programming
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.
Grading
5% Reading quizzes 10% Classwork, class participation, extra small assignments 5% Midterm 5% Final (in class) 10% Final (take home) 10% Project 1: Picassa 15% Project 2: Tivoo 40% Project 3: Vooga
Reading Quizzes
Most days this course will have required reading. To ensure everyone does the reading, there will be an online quiz. The quiz will be due 1 hour before class begins. The quizzes are designed to be easy to do perfectly, if you've done the reading.
If you miss a quiz because of a illness or another excused reason, please contact the Graduate TA for the course (not Professor Hewner) in a timely manner.
Class Participation
We will often have activities in class. Sometimes we may ask students to prepare presentations or other class prep work.
If you miss a class or prep work because of a illness or another excused reason, please contact the Graduate TA for the course (not Professor Hewner) in a timely manner.
Midterm and Final
The midterm and the in-class portion of the final will focus on information from the readings. The in-class final will occur during CS 108's scheduled timeslot 5/4 2pm-5pm.
The take home portion of the final will be a design problem.
Projects
All of the projects will be evaluated based on a combination of code and design work. For group projects (2 and 3) your ability to work together as a productive member of a group will also be considered.To help track your improvement during the semester and to keep you informed of your progress, you will be required to meet weekly with one of the course staff to discuss your work done during the week. Missing these meetings will negatively affect your course grade.
No Late Submissions
All projects must be turned in on time. If you have an excused reason to miss a project deadline, contact Professor Hewner immediately. In general, it is much more likely that an arrangement can be made if you contact Prof. Hewner in advance, rather than after the fact.
If You Are Feeling Overwhelmed
Sometimes, when working on a large project it can feel like you can't succeed. Don't give up, seek help. Don't give up, seek help. Don't give up, seek help. Prof. Hewner and the TAs are waiting to help you. We want to help you. The worst thing you can do is ignore the problem. So shoot an email, put out a Piazza message, or even call Prof. Hewner if you're feeling desperate.Collaboration Policy
In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate, on programming projects and class work. Individual work or quizzes must be your own work; you should not collaborate on them at all.
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 dishonest .
You may consult with the course staff about any aspect of the course. On programming projects and class work you may consult with other students only in a general way, e.g., about debugging, programming concepts, or questions about wording on the assignment. Studying together is always encouraged but you may not 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 team 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.). This file is required and failure to provide it will result in rejection of the assignment as complete.
If you are not sure what the collaboration policy is for a given assignment, please ask!
Computing Requirements
All computing projects will use Java 6 or above, the Eclipse programming environment, and the Duke Ambient plug-in for downloading and submitting projects. More information about installing this software is available here.
Finally, please check your email regularly, as important course announcements may be sent via email.