A course on understanding, describing, and reasoning about large software systems.
It it generally possible to write scripts and toy programs without much forethought or organization. With luck and decent comments, this can be stretched to software that consists of a few dozen classes. For anything beyond that, a principled approach is required to structure and document software systems to manage their fantastic complexity. For example Eclipse boasts 46,000,000 lines of code. This course is about the intellectual tools developed by researchers and practitioners to manage the complexity of very large systems.
After this course, you should be able to...
This advanced course targets senior undergraduate students majoring in computer science or software engineering, and graduate students interested in software engineering.
The official prerequisite is to have completed COMP 303. However, the course is ideally suited for students who have had at least reasonably good success in both COMP 303 and COMP 302 and who have completed at least one more software-related course at the 300-level or above (COMP 361 and COMP 421 are good examples), or who have relevant work experience. For graduate students who come from other institutions, equivalent courses are fine.
The course is exclusively concerned with real-life software in all its beauty and ugliness; The course work requires the ability and willingness to independently experiment with software development tools and scripting languages. In particular, the course will make heavy use of GitHub.
The course will consist of a combination of lectures, invited presentations, and in-class activities including student presentations. The lectures will be low on slideware and require advanced reading and code browsing. The course will involve a major project: the reverse-engineering and production of architectural documentation for an open-source system, along the lines of the DESOSA 2015 project.
The final grade will take into account attendance and participation (5% + 5% bonus), one warm-up assignment (10%), 12 progress mini-quizzes (10%), a midterm exam (20%), and a project (55%). The project will be split up into multiple deliverables. The project will be done in groups of three or four depending on the final class size.
COMP 529 is a four-credit course and consistently with the McGill definition of one credit, making the most of it will require weekly efforts along the following pattern: 3 hours of in-class work, 3 hours of independent reading, 6 hours of practical work. Just like for most engineering-related activities, success will depend in large part on good time management.
Official Academic Integrity Statement McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see www.mcgill.ca/students/srr for more information).
Language Policy In accord with McGill University’s Charter of Students’ Rights, students in this course have the right to submit in English or in French any written work that is to be graded.
All required material for the course is freely available on-line from the McGill domain.
Clements et al. Documenting Software Architectures: Views and Beyond, 2nd Edition, Addison-Wesley, 2010
Bass, Clements, Kazman. Software Architecture in Practice, 3rd Edition, Addison-Wesley, 2012.
Brown and Wilson. The Architecture of Open Source Applications, 2012
Vogel et al. Software Architecture: A Comprehensive Framework and Guide for Practitioners, Springer, 2009.