| CompSci 408 Fall 2025 |
Delivering Software: From Concept to Client |
An expert is someone who, over many years, manages to remain confident enough to keep trying and humble enough to keep learning. — James Clear
You are expected to make every effort to attend class synchronously since it is intended to be a guaranteed time when everyone in a team can meet.
If you must miss class, email me an explanation ahead of time; missing class time without explanation will negatively affect your grade.
Please follow Duke's COVID Safety Protocol by wearing a mask if you have flu-like symptoms or submitting an Incapacitation Form if you are feeling unwell instead of attending class.
You will be expected to do a significant amount of reading, coding, and debugging outside of class time.
Professor Robert Duvall
- Office Hours: Mondays and Tuesdays 2-3pm in LSRC room D228
- Drop-in policy: You may make an appointment via email
Graduate TA Zanwen Fu
- Drop-in policy: You may make an appointment via email
Email is the best way to contact the Teaching Team if you have a personal concern. When using email, please put CompSci 408 at the start of your subject line to help ensure that your email gets past our spam filters and is delivered correctly. In general, you should only email us about administrative aspects of the course; questions about course content are better made using the course Discussion Board since more people will see it. If you send us an email and do not get a response within 24 hours, we probably did not receive it.
Our goal is simple: to help you learn — both inside and outside the classroom. If you have a problem or question, we want to talk about it — do not put it off.
We are excited to bring you the best learning experience we can collaboratively — we will try to adjust how the course works in response to feedback from students and those who are helping deliver course content at Duke.
The following topics will be covered during the semester.
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.
While there are no official textbooks for the course, readings will be available online during the semester. Although time will be given at the beginning of lecture for you to ask questions about the reading, the majority of class will be an extension of the reading, not a summary. You will be expected to be active participants in group activities during class.
It is vital that you prepare by reading before coming to class. Inability to discuss assigned readings implies a lack of participation.
However, I still find books can be good to use as a reference for advanced programming topics or longer discussions. The books listed below are provided as optional resources for those with similar tastes as me.
- Teamwork Is An Individual Skill by Christopher Avery, Meri Walker, Erin O'Toole Murphy
- What Got You Here Won’t Get You There by Marshall Goldsmith and Mark Reiter
- The Agile Samurai by Jonathan Rasmusson
- Clean Coder: A Code of Conduct for Professional Programmers by Robert Martin
- Atomic Habits by James Clear
- Hello Habits by Fumio Sasaki
- Blind Spots by Max Bazerman and Ann Tenbrunsel
- Trampled by Unicorns by Maelle Gavet
- The Ethical Algorithm by Michael Kearns and Aaron Roth
- The Unspoken Rules by Gorick Ng
- Joy of Search by Daniel Russell
- Visual Thinking by Temple Grandin
This course is about the creation of software in teams, thus it is much more than simply a programming course. This emphasis is reflected in the grading weights below that give equal weight to the project's functionality and "soft-skills" needed to survive as a software developer.
20% Professionalism (individual grade) in-class, at meetings, with guest speakers, with client, weekly reports unless pre-approved to miss 15% Teamwork (individual grade) consistent, timely, and public contributions to the project (not necessarily just code) 20% Agile Process (team grade) sprint deadlines met and project planning done in timely manner that shows improvement 15% User Testing (team grade) evidence users have tested, given feedback, and team has responded to that feedback 10% User Friendly Design (team grade) easy, non-programmatic, way for client to change necessary data 20% Client Satisfaction (team grade) client consistently reports good progress
During the first weeks of the course you will work on individually on a small "spike" project. Afterwards, you will work in teams on a large, semester-long, project whose requirements will be determined by your chosen client. There will be no formal exams, in-class demos and packaging and documenting the complete project for your client will be required instead.
I do not give grades: students earn their grades. It is your responsibility to earn the grade you desire. In general, to earn an A you must go beyond what is expected. Simply meeting all the requirements is worth only a B+. Meeting all requirements superbly can earn an A-. Doing more than is required, or doing astonishingly good work, is the only way to earn an A. Past experience with this course indicates that students are pretty consistent in their performance and that it is easy to assign grades. I will be looking for a record of sustained effort and demonstrated processes to manage the project.
To receive a passing grade, you must demonstrate that you have consistently made significant contributions to making the team project a success. In order to ensure consistent progress on this project, your work will be monitored on a weekly basis. These parts of your grade will be factored in primarily on a pass/fail basis, so missing any of these parts completely reduces your grade by a letter. For example, if you consistently miss the weekly deadlines or do not test your app with your client's users, your individual or team grade will slip. If, on the other hand, you only miss one or two, then your grade should not suffer.
Your client's satisfaction in working with you is an important goal of the course and thus the highest weighted factor in your final grade. Since we cannot guarantee every project will be completed successfully, your grade will be determined both in how well you worked with the client in these expectations and how well you learned the Agile workflow as a process for managing your project.
Note: In general, equal points will be given to all team members, however points may be deducted for lack of individual participation OR for doing significant extra work to hide team dysfunction. To help track your progress during the semester, you will be required to complete both individual and team status reports at the end of each Sprint.
Plan on submitting work on time, but work submitted within 1 day of the deadline will be given full credit.
Individual extensions beyond that will be granted for:
If you find you are having trouble or consistently behind — do not give up, ask for help as soon as possible.
Despite the stereotypes, computer scientists almost never work alone. The reality is that significant real-world projects in computer science are almost always pursued by teams. Effective collaboration and improved teamwork are a focus of the course. Thus, in accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties participate collaboratively, on programming projects and class work.
Collaboration means all members of groups are expected to contribute actively to all parts of project work, including meeting, research, development, and writing. No group member should be relegated to only working on a single portion of the project. In addition to specifically individual assessments, individual contributions on group deliverables will be specified and may be taken into account when grading.
For anything you add to the project repository, you are responsible for:
You are encouraged to use resources on the Internet, including LLMs, to help you learn the course material or solve very specific issues as long as they are attributed. Appropriate uses of LLMs (such as ChatGPT) include editing, requesting examples, and asking questions to aid your understanding. Inappropriate uses of LLMs include using such models to draft code or writing and then presenting that as your own, with or without editing. You should know that these systems are not perfect, but they may be helpful for summarizing, providing examples, and sifting through lots of information.
Pushing code you cannot explain is considered cheating. For any part of the project, an interview may be included as part of the graded work in which you may be asked to explain your problem solving process and individual lines of code.
For each Sprint, you are expected to report a list of the resources with which you have collaborated (e.g. web pages, notes from other courses at other universities, AI assistants, etc.).
If you are not sure what the collaboration policy is for a given assignment, please ask!
This course is committed to Duke's Commitment to Diversity and Inclusion.
Even beyond this statement, we believe this class should be a secure and supportive learning environment for all students.
This course is committed to providing equal access to students with documented disabilities.
Anyone with disabilities may contact the Student Disability Access Office (SDAO) to ensure equitable access to this course. There you can engage in a confidential conversation about the process for requesting reasonable accommodations both in the classroom and in clinical settings.
Please note that accommodations cannot be provided retroactively — seek out extra assistance and advice early.
The semester can be long and stressful for many students, so understanding issues specific to software development and taking steps to reduce stress and improve your physical health are important to maintain positive mental health.
Duke's goal is simple: to help you learn, both inside and outside the classroom. If you have a problem or question, we want to talk about it — do not put it off.
You are expected to have access to and on-going use of a computer on which you can install a software development environment.
Specific project choices may require using a specific language or technology, but there is not a general language, software, or platform requirement.
A laptop is strongly recommended so you can bring it to class, and team, client, or Office Hour meetings.
The Innovation Co-Lab supports tech all over campus. They have staff professionals and experienced students who can help you with tech questions about whatever technology you choose to use. You can see Office Hours times and make appointments, as well as find learning resources.