CMPT 373: Software Development Methods
Fall 2020

Instructor:Nick Sumner
Mode:Blended interactive/prerecorded
Venue:Tuesday: Canvas Video 1:30-2:20
Thursday: Canvas Video 12:30-2:20
Office:Remote chat due to Covid-19
Office Hours:Thursdays, 5:30-6:30
Class mailing list:cmpt-373@sfu.ca (archive)
Discussion Forums:On CourSys (Make sure to subscribe)
Live Streams:via Canvas
TA:Kunal Chhabria, Miral Raval

NOTE: Due to Covid-19, this course will be conducted using a mix of synchronous and asynchronous methods (an approximation of "blended learning"). When possible, prerecorded lecture videos will be used in place of synchronous lectures. Students will be expected to watch and think about these videos before class. In class, students can ask questions about the material in the prerecorded lectures and will have the opportunity to apply the material on small tasks about which they can also ask questions. Additional in-class exercises may included discussions, code reviews, and team project meetings. When necessary, lectures may occur synchronously via live video as well.

Note that this course includes a significant term project completed with a team. All students are expected to consistently communicate and collaborate with their team in order to pass the class. If you do not feel that you will be able to use video and text teleconferencing with your team this semester, you should defer taking this class. By ensuring that the enrolled students understand their participation requirements, we can ensure higher quality experiences and outcomes for all students enrolled in the class.

This course is challenging for many students. The expectations are reasonable, but many students come in without having had to tackle serious programming tasks before. One of the common outcomes is that students start to realize just how much they do not know about software development. That is a normal, albeit stressful, part of learning and metacognition. These are stressful times. Take care of yourself and work to control your stress throughout the course. Be proactive in asking questions rather than waiting and assuming that things will work out. Learning is not a passive process, nor is it memorization. Nor is it something you go through alone.


This course focuses on modern software design and development practices. Students will work on a semester long project in teams of up to eight people. In class and in labs, students will learn about and gain experience with decomposing larger problems into simpler tasks than can be implemented and composed effectively. We will review, critique, and improve student code regularly as a class, identifying and examining the trade-offs imposed by design and implementation decisions. Students will gain experience and understanding of best practices, software development workflows, and coding style.

The projects will be implemented using C++, developed for and using a Linux oriented platform. Weekly in class discussions and group meetings are mandatory. Students should expect to actively participate in class discussions and to present clearly to the class. All students must contribute a significant amount of high quality C++ code to their team's project in order to pass the class.

[course outline]

Reading

All of these are books that you ought to read cover to cover. Only the first is required reading, but the others will make you a better developer and a better teammate. Take advantage of the fact that the school provides you online access to them.

Required:

Reference:

Recommended:

Grading

Late Policy

You have 3 late days that may be used throughout the semester on programming exercises and reading responses. In order to use a late day, you must contact the TA and inform them once you have submitted the corresponding assignment. Other late work will not be graded.

Academic Honesty Statement

Academic honesty plays a key role in our efforts to maintain a high standard of academic excellence and integrity. Students are advised that ALL acts of intellectual dishonesty will be handled in accordance with the SFU Academic Honesty and Student Conduct Policies (http://www.sfu.ca/policies/gazette/student.html).

Note that making solutions to assignments available (e.g. on github) constitutes academic dishonesty even after the class has ended. As course policy, team solutions to the term project explicitly are allowed to be made public with team consent.