CompSci 590
Spring 2026
Software Development Studio

An expert is someone who, over many years, manages to remain confident enough to keep trying and humble enough to keep learning. — James Clear

Meeting Time

Attendance is required as class time will often involve participatory exercises, code reviews, or team meetings.
If you must miss class, email me an explanation ahead of time; missing class time without explanation will negatively affect your grade.
If you are feeling unwell, submit an Incapacitation Form instead of attending class.

You will be expected to do a significant amount of reading, designing, coding, and debugging outside of class time  to succeed, you must code, design and, most importantly, think critically.


Teaching Team

Professor Duvall Professor Robert Duvall
  • Office Hours: Tuesdays and Wednesdays 2-3pm in my office LSRC D228
  • Drop-in policy: You may make an appointment via email
  • rcd AT cs DOT duke DOT edu
Graduate TA Graduate TA Zanwen Fu
  • Drop-in policy: You may make an appointment via email
  • zanwen DOT fu AT duke DOT edu

Email is the best way to contact the Teaching Team if you have a personal concern. When using email, please include CompSci 590 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 we do not respond to your email 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 your feedback.

Topics

The following programming 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. Additionally, we may explore collateral topics as dictated by class interests.

Books

While there are no official textbooks for the course, readings will be available online during the semester. The majority of class time will be a discussion about or extension of the reading, not a summary.

YouTube, Podcasts, and AI summaries are popular. We have also curated a lot of resources.

You will be expected to be active participants during class — inability to discuss assigned readings implies a lack of participation.

Grading

This project-based course covers software development and you need to practice implementing code to succeed. During the first half of the semester you will have a number of small homework assignments and in-class activities. The second half of the course will focus on a larger project, in which you will design and implement a more substantial app. At the end of the semester you will demo your final project.

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.

Participation 10%
Project Analyses 10%
In-class exercises 10%
Programming projects 30%
Final Project 40%

The Open Source community has a concept known as "if it isn't public, it didn't happen". In practical terms, this means you will be expected to regularly show your progress.

Submitting Assignments Late

Plan on submitting work on time, but work submitted within 2 days 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.

Collaboration Policy

In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties participate in actively to learn the material.

This course will be collaborative: you will research and develop ideas in a group of your peers. All students are expected to contribute 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.

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.

Specifically, it is unacceptable to

You are encouraged to use small pieces of properly attributed code (using inline comments or in your README if more appropriate) from online sources, open source projects, or generated by AI as long as that code

Note, you are responsible for explaining, debugging, refactoring, and supporting for your team any code you add to the repository. You cannot claim that design defects or bugs are "okay" because you did not write it.

For each assignment you are expected to include a list of the resources (such as people, AI Assistants, tutorials, or other materials) with which you have consulted in your README file. 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 — ask for clarification!

Diversity

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.

Disabilities

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.

Academic Wellness

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.

Computing Requirements

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.

Online Course Information