CSCD01 - Engineering Large Software Systems
An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; requirements engineering; verification and validation; software architecture; performance modeling and analysis; formal methods in software engineering.
Instructors: Cho Yin Yong, Aleksander Bodurri
Course Objectives
Clients in software projects often have unlimited wants - they want the software to be fast, reliable, scalable, maintainable, ... the list goes on. As software engineers, not only do we need to balance these wants with the constraints of time, budget, and resources, we also need to manage expectations and present technological limitations in a digestible way. In fact, making trade-offs is a fundamental part of software engineering.
This course will teach you how to make smart technology choices and decisions. You will learn how to extract non-functional requirements from business context, communicate effectively with others on software architecture and design, and create industry-standard design documents to express architectural ideas. You will also learn how to raise architectural risk and design mitigation strategies.
Learning Outcomes
Upon successful completion of this course, students will be able to:
- Contribute to open-source software with industry best practices
- Make smart technology choices and decisions
- Extracting non-functional requirements from business context
- Communicate effectively with others on software architecture and design
- Create industry-standard design documents to express architectural ideas
- Raise architectural risk and design mitigation strategies
Prerequisites
This course is meant to be taken as a fourth-year course. As such, students are expected to have a solid understanding of software engineering principles, and have practical experience with software development.
Experience with the following technologies is recommended: Git, Python, Javascript, SQL databases, web development, and Docker.
We will be discussing theoretical concepts as well. You are recommended to know: basic graph theory, more complex data structures, hashing, and algorithms.
For specific prerequisite requirements see the UTSC Calendar.
Course Staff
We encourage you to post questions regarding course materials and assignments on Slack. However, if you need extended support, the course staff will hold office hours. Please contact course staff via Slack direct message, we will not respond to any emails.
Office Hours | Location | |
---|---|---|
Cho Yin Yong / Aleksander Bodurri | Tuesday 7-8pm | After Lecture |
Cho Yin Yong / Aleksander Bodurri | Thursday 7-8pm | After Lecture |
Ian Gregory | Thursday 4-5pm | CS Help Lab |
Esra Kastrati | Wednesday 8-9pm | CS Help Lab |
Tina Zamiri | Tuesday 2-3pm | CS Help Lab |
Aditya Kulkarni | Friday 5-6pm | CS Help Lab |
Porom Kamal | Wednesday 7-8pm | CS Help Lab |
Ahmed Halat / Mohamed Halat | Monday 6-7pm | CS Help Lab |
Course Timing
Time | Location | Instructor | |
---|---|---|---|
LEC01 | Tuesday 5-7pm | Available on ACORN | Cho Yin Yong / Aleksander Bodurri |
LEC02 | Thursday 5-7pm | Available on ACORN | Cho Yin Yong / Aleksander Bodurri |
TUT0001 | Wednesday 7-8pm | Available on ACORN | Esra Kastrati |
TUT0002 | Friday 2-3pm | Available on ACORN | Ian Gregory |
TUT0003 | Wednesday 4-5pm | Available on ACORN | Aditya Kulkarni |
TUT0004 | Tuesday 7-8pm | Available on ACORN | Porom Kamal |
TUT0005 | Tuesday 4-5pm | Available on ACORN | Tina Zamiri |
TUT0006 | Tuesday 8-9pm | Available on ACORN | Ahmed Halat / Mohamed Halat |
Course Information
One of the nice things about using Github for the course website is that you can contribute to the course website. If you see something on the course website that should be fixed, or want to improve the UI, please feel free to submit a pull request.
The slack #fall-2024 channel is the best place to ask technical questions, and general questions about the course, assignments and project. For personal issues, please private message either instructor. I try to respond by the end of the next day. However, due to volume, it may take longer, especially on weekends.
If you have feedback about the course, you can send an anonymous feedback to the course instructor (you also have the option of including your name). Since the sender cannot be determined, comments sent through the feedback form are considered public, and they may receive a response at the beginning of class or on Slack.
Marking Scheme
Group work and individual tutorial quizzes will be used to compute a composite numeric score that will determine your final letter grade for the course:
Coursework | Weight |
---|---|
Team Formation and Team Agreement | 2% |
Group Open Source Project | 18% |
Group Presentation | 20% |
Group Assignment | 30% |
Tutorial Quizzes | 30% |
Submission and Grading Policy
Please read the coursework handout carefully as it contains instructions on how to submit your work.
For group work, the instructor reserves the right to assign different grades to each of the team members based on their individual contributions made to the team repository.
For your work to be graded, it must meet the minimum standards of a professional computer scientist.
No late submissions will be accepted. No make-up quizzes will be given, and if there is a valid reason for missing a quiz, the weight of the missed quiz will be distributed to the remaining quizzes.
If an emergency arises that prevents you from being able to complete any piece of work, or attend a quiz, contact one of the instructors immediately. You must first declare your absence on ACORN with the Absence Declaration. The Absence Declaration is going to be limited to one time use each term, up to a maximum of 7 days. That declaration can/should be used for missing any academic obligations (class, quiz, etc.). After students have used their one absence declaration in the term, further accommodations regarding missed work, make-ups, etc. will be at the discretion of the instructor.
If a piece of work has been mis-marked or if you believe the rubric used to evaluate the work is not appropriate, you may request a remark. For a remark to succeed, you must clearly and concisely express what you believe was mis-marked. To request a remark, please contact your TA. Requests must be submitted within 1 week of the marks being returned.
Academic Integrity
The University treats cases of cheating and plagiarism very seriously. The University of Toronto's Code of Behaviour on Academic Matters outlines the behaviours that constitute academic dishonesty and the processes for addressing academic offences.
For group work, you are fully responsible for the piece of work you submit to the team project as your contribution to the group work.
Your work products must be original and not copied from any other source, including any generative AI tools. You may discuss coursework with other students, but you must not copy any part of your work from another student, from a solution posted online, or from any other source.
You may discuss coursework with other students, for example to clarify the requirements of coursework, to work through examples that help you understand the technology used for an piece of coursework, or to learn how to configure your system to run a supporting piece of software used in a piece of coursework.
The course staff reserves the right to use code and text analysis tools to compare your submission with others to verify that no improper collaboration has occurred. The terms that apply to the University's use of this tool are described on the Centre for Teaching Support & Innovation web site (https://uoft.me/pdt-faq).
When writing the quizzes in the tutorial, you are not allowed to discuss the quiz with anyone else. You are not allowed to use any resources other than what is allowed in the quiz instructions.
Failure to comply with these guidelines is a serious academic offence. In past academic offense cases, the Associate Dean has imposed penalties for code violations that range from a mark of zero on plagiarized assignments to academic suspension from the University.
Accessibility Needs
Students with diverse learning styles and needs are welcome in this course. In particular, if you have a disability/health consideration that may require accommodations, please feel free to approach me and/or the AccessAbility Services Office as soon as possible.
AccessAbility Services staff (located in Rm AA142, Arts and Administration Building) are available by appointment to assess specific needs, provide referrals and arrange appropriate accommodations 416-287-7560 or email [email protected]
. The sooner you let us know your needs the quicker we can assist you in achieving your learning goals in this course.