Instructor: | Nick Sumner |
Mode: | In person |
Venue: | Monday: SRYE 1002 2:30-4:20 |
Wednesday: SRYE 1002 2:30-3:20 | |
Office: | SRYE 5123 |
Office Hours: | (Tentatively) Wednesdays, 3:30-4:30 |
Class mailing list: | cmpt-373@sfu.ca (archive) |
Discussion Forums: | On CourSys (Make sure to subscribe) |
TA: | Sami Ma, Bhavya Sankhla |
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:
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 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.
Within this course, use of AI for generating code interferes with the learning outcomes and also constitutes a violation of academic integrity.