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.