| Instructor: | Nick Sumner |
| Mode: | In person |
| Venue: | Monday: SRYC 3170 12:30-2:20 |
| Wednesday: SRYC 3310 12:30-1:20 | |
| Office: | SRYE 5125 |
| Office Hours: | Wednesdays, 1:30-2:30 |
| Class mailing list: | cmpt-373@sfu.ca (archive) |
| Discussion Forums: | On CourSys (Make sure to subscribe) |
| TA: | Check CourSys |
Students will be expected to attend class in person. In addition to lectures, in-class components will give students the opportunity to apply the material on small tasks, critique and review code with others, discuss different design trade-offs, and have team meetings for their term projects.
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 communicate and collaborate with yout team effectively 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. 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 lectures, assignments, and the term project, students will learn about and gain experience with decomposing larger problems into simpler tasks that 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.
All of these are books that you ought to consider reading 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:
A passing grade on the weighted average of exams is required to obtain a C- or better for the course.
All students have up to 3 days that they can spend throughout the semester to submit exercises late. To use a late day, make a submission to the Late Days assignment on CourSys and then email the TA. You may use as many of the 3 days at a time as you wish. Fill an entry on CourSys for each day that you are using.
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).
Sharing of solutions to exercises constitutes dishonesty. Note that making solutions to exercises available (e.g. on github) constitutes academic dishonesty even after the class has ended. However, team solutions to the term project explicitly are allowed to be made public with team consent.
Within this course, use of AI for generating code interferes with the learning outcomes and also constitutes a violation of academic integrity. If you otherwise use Copilot and other AI tools, avoid them or disable them during this course to avoid accidental violations.
All student requests for accommodations for religious practices must be made in writing by the end of the first week of classes or no later than one week after a student adds a course. Students requiring accommodations as a result of a disability must contact the Centre for Accessible Learning (caladmin@sfu.ca).