Course Project

This course is built around a single project that lasts the entire semester. All students will be assigned into groups of 6–8 people who must act as a team in order for the project to succeed. Working effectively in large groups and managing the complexities and challenges that arise is a core part of software engineering and a central part of this course as a whole. Teams must work independently and may not have the same requirements or even the same overall projects.

Projects will be developed in C++ using infrastructures like googletest for testing and spdlog for logging. We will use cmake for build management. Version control for the project will use git and be managed by SFU GitHub for code reviews, issue tracking, continuous integration, and general project management. We may use Sphinx for generating documentation. We will discuss some of these tools and technologies in class, but it is each student's responsibility to use them and understand them throughout the course.

Development will follow an iterative, pragmatic, agile process. Interaction with the client will be limited to the lab meetings of the course, so any and all requirements for the project must be gathered during these meetings. As you should have learned in CMPT 276, getting requirements and feedback from the client are key to agile development. A quick start to the project and continuous delivery of features are also extremely important. We will have scheduled iterations throughout the semester, some of which will conclude with formal class presentations.

Working in a team will require students to take on particular roles or tasks such as managing, devops, or testing. Where a formal role is assigned, groups should rotate the role among members over the iterations of the project. While taking on such a role, a student's contributions to creating the source code of a project may decrease while the student equivalently contributes in other areas of importance. However, all students should expect to write and contribute a large amount of high quality code to the project during the semester to achieve a satisfactory grade. You will be expected to contribute at least one hundred lines of quality code per week to pass. In order to facilitate this, old branches in the repository should not be deleted. They will be used to properly attribute code contributions. Students are responsible for ensuring this themselves.

You can find a coarse description of the semester project on CourSys.

Note: All source code pushed/pulled to the repositories for the class is considered group and class property. It is not private, and any such code may be used, critiqued, and otherwise discussed in class. Such discussion is a common part of (healthy) software development, and students need to acclimate to the experience.