CompSci 408
Fall 2020
Delivering Software:
From Concept to Client

Meetings

Zoom call information will be posted on Sakai in order to protect course security.

We may adjust how the course works in response to feedback from students, UTAs, and those who are helping to deliver course content at Duke.

We are excited to bring you the best learning experience we can!

Teaching Team

Professor Duvall Professor Robert Duvall

rcd AT cs DOT duke DOT edu
Office Hours: Tuesday and Wednesday, 2-3pm
Drop-in policy: You may make an appointment via email.
Professor Patel Consultant Ajay Patel
ajay DOT patel AT duke DOT edu
Office Hours: By appointment only
Graduate TA Govi Nadendla
goverdhan DOT nadendla AT duke DOT edu
Office Hours: By appointment only
Graduate TA Zetao Yu
zy107 AT cs DOT duke DOT edu
Office Hours: By appointment only

If you have a personal or administrative concern, email is the best way to contact the Teaching Team. 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. If you send us an email and do not get a response within 24 hours, we probably did not receive it. 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 it is seen by more people.

Our goal is simple: to help you learn — both inside and outside the classroom. If you have questions, there is no excuse for not getting help. We meet with you regularly for the purpose of helping you. If you have a problem or question, we want to talk about it — do not put it off.

Textbooks

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. This makes it vital that you prepare by reading before coming to class.

Inability to discuss assigned readings implies a lack of participation.

Grading

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.

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 application of the subject matter.

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 essentially 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 deadlines, 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.

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.

Here is a summary of the significant requirements for the semester:

15% Participation (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 (not necessarily code) contributions to the project
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 user to change client data
25% Client Satisfaction (team grade) client consistently reports good progress

Note: In general, equal points will be given to all team members, however points may be deducted for lack of individual participation. 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.

Diversity

This course is committed to Duke's Commitment to Diversity and Inclusion. Moreover, beyond the diversity listed in this statement, we believe this class should be inclusive to all students such that they feel the class is a secure and supportive learning environment.

Disabilities

This course is committed to providing equal access to students with documented disabilities. Students with disabilities may contact the Student Disability Access Office (SDAO) to ensure your access to this course and to the program. There you can engage in a confidential conversation about the process for requesting reasonable accommodations both in the classroom and in clinical settings. Students are encouraged to register with the SDAO as soon as they begin the program. Please note that accommodations cannot be provided retroactively. More information can be found online.

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 must be your own work.

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 use small pieces of properly attributed code (ideally using inline comments or in your README if more appropriate) from online sources or open source projects.

You may consult with the Teaching Team about any aspect of the course. On programming projects and class work you may consult with other students 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.

If you are not sure what the collaboration policy is for a given assignment, please ask!

Additional Information Online

Web Site (http://www.cs.duke.edu/courses/fall20/compsci408/). Contains many of the materials for this course, including the syllabus, class notes, reading assignments, homeworks, and other resources.

Discussion Board (http://piazza.com/duke/fall2020/compsci408/). You should regularly read and contribute to the course discussion 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 discussion 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.

EmailPlease check your email regularly, as important course announcements may be sent via email.