CS446/CS646/ECE452 1261

CS446/CS646/ECE452 Software Design and Architecture, Sec 001 002, Winter 2026 #

Software Design and Architecture is an undergraduate course about the software design process and its models, offered jointly by the David R. Cheriton School of Computer Science and the Department of Electrical and Computer Engineering at the University of Waterloo. We will study models and representations of software design, typical kinds of software architecture styles and design patterns, design assessment and verification. We will also practice the software design process through a project where students design and implement a software application as a team.

The classes are held in person. There will be two kinds of learning activities: lectures and workshops. In lectures, we will focus on learning and discussing theoretical concepts about software design and architecture. In workshops, there will be tutorials on software tools related to the course topics, and you will be given time to work on your projects with the course staff available for consultations.

Expectations

This course expects you to actively engage in the class activities and be available to meet with your teammates frequently. This course may not be suitable for students on a co-op or remote study term.

By the end of the course, you should be able to:

  • Differentiate how various architectural styles and design patterns enhance and degrade a system’s functional, non-functional and human value properties;
  • Generate and justify and architecture and/or design given a collection of requirements;
  • Produce and present concise and unambiguous architecture and design descriptions;
  • Create and implement an architecture and design, refining it into a complete system;
  • Build mobile app along with all its associated artifacts like the architecture and design document;
  • Work in a team to build an app from ground up;
  • Practice on pitching a software idea and presenting/defending what you built.

Course Information #

  • Time and location
    • Sec 001: MW 10:00am-11:20am @ MC 4021
    • Sec 002: MW 4:00pm-5:20pm @ MC 2065
  • Course staff
    • Instructor: Pengyu Nie <pynie@>
    • TA: Saarang Agarwal <saarang@>
    • TA: Liliana Hotsko <lhotsko@>
    • TA: Bihui Jin <bihui@>
    • TA: Larry Li <yinxi.li@>
    • Course staff will be available for Q&A and project-related discussions during workshops. Additional office hours by appointment.
  • Communication platforms
    • Course website (this page): slides, notes, assessments, etc.
    • Learn: announcements, project deliverable / assignment submission, grade release
    • Piazza: Q&A
  • Textbook: while the course does not have a required textbook, the following are good readings on this subject
    • Richard N. Taylor, Nenad Medvidovic, and Eric Dashofy. Software Architecture. Foundations, Theory, and Practice. Slides for this book are available online.
    • Ian Gorton. Essential Software Architecture.
    • Fred P. Brooks Jr. The Mythical Man Month.
    • Fred P. Brooks Jr. The Design of Design.
    • Eric Freeman, Elisabeth Robson. Head First Design Patterns.

Syllabus #

This table summarizes all the lectures and important deadlines for this course. Clickable links to lecture slides / assignment requirements will be added as we progress through the term.

WeekDateLecture / Deadline
1Jan 05 MonIntro to Course
Jan 07 WedIntro to Software Architecture, Stakeholders
2Jan 12 MonNon-Functional Requirements
Jan 14 WedUser Scenarios, Use Cases, Human Values
Jan 16 FriP0 Team Formation
3Jan 19 MonSoftware Modeling, UML Diagrams
Jan 21 WedWorkshop: Interviews with Stakeholders
Jan 23 FriP1 Project Setup
4Jan 26 MonClass Cancelled
Jan 28 WedDecomposition, Architectural Views
Jan 30 FriP3 Project Proposal
Jan 30 FriA1 UML Practice
Feb 01 SunGrad Project Proposal
5Feb 02 MonArchitectural Styles 1
Feb 04 WedWorkshop: Android Studio, Kotlin
6Feb 09 MonArchitectural Styles 2
Feb 11 WedWorkshop: Jetpack Compose
Feb 13 FriA2 Decomposition Practice
7Reading Week
8Feb 23 MonP4 Prototype Presentation Day 1
Feb 25 WedP4 Prototype Presentation Day 2
Feb 27 FriA3 Architectural Style Example
9Mar 02 MonArchitectural Styles 3 / Design Patterns 1
Mar 04 WedWorkshop: Testing
10Mar 09 MonDesign Patterns 2
Mar 11 WedWorkshop: Continuous Integration
11Mar 16 MonDesign Patterns 3
Mar 18 WedWorkshop: Design Assessment and Verification
Mar 20 FriA4 Design Pattern Example
12Mar 23 MonEvolution of Software Design and Architecture
Mar 25 WedWorkshop: Release Engineering
13Mar 30 MonP5 Final Presentation Day 1
Apr 01 WedP5 Final Presentation Day 2
14Apr 06 MonP6 Final Report
Apr 06 MonGrad Project Report
FinalTBDFinal Exam

Assessment #

For undergrad students:

Assessment TypeValue
Project (Team)50%
Assignments (Individual)20%
Final Exam (Individual)30%

For grad students:

Assessment TypeValue
Project (Team)50%
Assignments (Individual)20%
Grad Project (Individual)20%
Final Exam (Individual)10%

The details of each assessment item will be released at least two weeks before its due date. You can find them from the menu on the left, or follow the clickable links in the tables here.

Project #

The project grade is computed as base * scale + bonus.

The base grade is earned by the team, consisting of the following deliverables (value out of 100% of project grade):

DeliverableDateValue
P0: Team FormationJan 16-
P1: Project SetupJan 232%
P2: Weekly UpdatesWeeks 4-6, 8-128 * 1%
P3: Project ProposalJan 3015%
P4: Prototype PresentationFeb 23/2520%
P5: Final PresentationMar 30/Apr 0140%
P6: Final ReportApr 0615%

The scale factor accounts for individual efforts. You will normally get a scaling factor of 1 as long as you contribute to a significant part to your team project. Non-contributing individuals, such as those who miss project meetings or make little contributions, will receive a scaling factor of [0, 1) on their own project grade.

The bonus grade is earned by the team. They are awarded to the teams who exceed expectations in project milestones and releases. Possible bonuses include (value out of 100% of project grade):

BonusValue
Outstanding project proposal2%
Outstanding prototype presentation2%
Outstanding final presentation2%
Uploading demonstration video4%
Publishing to app store4%
Best app awards by the audience6%
Best app awards by the course staff6%

Assignments #

There are four assignments across the term (value out of 100% of assignments grade):

AssignmentDateValue
A1: UML PracticeJan 3025%
A2: Decomposition PracticeFeb 1325%
A3: Architectural Style ExampleFeb 2725%
A4: Design Pattern ExampleMar 2025%

Grad Project (for graduate students in CS646 only) #

You will perform an individual graduate project. Three types of graduate projects are possible: Build a Software Tool, Literature Survey, or Use an Advanced Software Development Tool.

There are two deliverables for the graduate project (value out of 100% of grad project grade):

DeliverableDateValue
Project ProposalFeb 0120%
Project ReportApr 0680%

Final Exam #

The final exam will be arranged during the exam weeks.

  • Time: TBD
  • Location: TBD (assigned seats)

The exam will take 90 minutes. There will be only multiple-choice questions. The exam is closed-book.

Assessment Policy #

  • Regrading policy

    • Regrading requests must be made within 7 days (for final exam: 3 days) after the grade is released.
    • Each regrading request needs to pay 5% worth of the grade of the assessment as deposit, which will be refunded only if the request is reasonable and the grade is increased.
  • Late policy

    • Late submissions get a 30% penalty.
    • Late submissions after the final exam date are not accepted.
    • The regrading timeline is not extended for late submissions (i.e., regrading requests cannot be make for submissions that are more than 7 days late).
  • Declared absences policy (including short-term absences, religious or creed-related absences, verified illness, etc.)

    • If an individual assignment’s due date falls in the absence period: the due date is automatically extended to 24h after the absence period ends.
    • If a team assignment’s due date falls in the absence period:
      • Your absence for that assessment will not affect the individual effort scaling factor;
      • If <= 50% of the team members are absent: your team still needs to submit the assignment on the due date;
      • If > 50% of the team members are absent: the due date is automatically extended to 24h after the point when the percentage of absent team members drop to <= 50%.

Course Outline #

This is the high-level outline provided by the department; while this is general guideline the course will be adjusted according to your feedback, interests, and experience.

Introduction (1h) #

Why design? Input, output, and constraints of the design process. Types of design. Relationship to software quality and evolution. Design in more mature implementation technologies.

Software Design Process Models (3h) #

Design as search. Design spaces. Design state, goal structure, generative design operations, early quantitative evaluations, control of design process. Basic models of design (transformational, plan/architecture driven). Relationship to other life-cycle activities.

Arch/Design Representations (9h) #

What should be represented (structure, behaviour)? Informal representations of design, examples of design notations. Formal representation of design. Domain specific architecture descriptions. Role of standards, reference architectures. Design documentation.

Design Plans/Arch (9h) #

Review of small/medium scale plans (data structures, programming language structures, concurrency). Plans/architectures for common types of software systems (translators, embedded, real-time, user interface).

Design Strategies and Methods (6h) #

Design strategies. Selected methods: object modelling technique, structured design, real-time, user interfaces. Methods for design with off-the-shelf components.

Design Assessment (3h) #

Assessment dimensions and factors affecting their relative importance. Design tradeoffs. Evolvability/understandability criteria. Design complexity metrics. Assessment strategies (analytical, simulation, rapid prototyping), example: response time/throughput estimation.

Design Verification (3h) #

Design reviews, scenarios and test cases, testing of executable design representations. Verification of properties.

Administrative Policy #

Generative AI: Generative artificial intelligence (GenAI) trained using large language models (LLM) or other methods to produce text, images, music, or code, like Chat GPT, DALL-E, or GitHub CoPilot, may be used for assignments in this class with proper documentation, citation, and acknowledgement. Recommendations for how to cite GenAI in student work at the University of Waterloo may be found through the Library: https://subjectguides.uwaterloo.ca/chatgpt_generative_ai. Please be aware that generative AI is known to falsify references to other work and may fabricate facts and inaccurately express ideas. GenAI generates content based on the input of other human authors and may therefore contain inaccuracies or reflect biases.

In addition, you should be aware that the legal/copyright status of generative AI inputs and outputs is unclear. Exercise caution when using large portions of content from AI sources, especially images. More information is available from the Copyright Advisory Committee: https://uwaterloo.ca/copyright-at-waterloo/teaching/generative-artificial-intelligence

You are accountable for the content and accuracy of all work you submit in this class, including any supported by generative AI.

Territorial Acknowledgement: The University of Waterloo acknowledges that much of our work takes place on the traditional territory of the Neutral, Anishinaabeg, and Haudenosaunee peoples. Our main campus is situated on the Haldimand Tract, the land granted to the Six Nations that includes six miles on each side of the Grand River. Our active work toward reconciliation takes place across our campuses through research, learning, teaching, and community building, and is co-ordinated within the Office of Indigenous Relations.

Inclusive Teaching-Learning Spaces: The University of Waterloo values the diverse and intersectional identities of its students, faculty, and staff. The University regards equity and diversity as an integral part of academic excellence and is committed to accessibility for all. We consider our classrooms, online learning, and community spaces to be places where we all will be treated with respect, dignity, and consideration. We welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, ability – and other visible and nonvisible differences. We are all expected to contribute to a respectful, welcoming, and inclusive teaching- learning environment. Any member of the campus community who has experienced discrimination at the University is encouraged to seek guidance from the Office of Equity, Diversity, Inclusion & Anti-racism (EDI-R) via email at equity@uwaterloo.ca. Sexual Violence Prevention & Response Office (SVPRO), supports students at UWaterloo who have experienced, or have been impacted by, sexual violence and gender-based violence. This includes those who experienced harm, those who are supporting others who experienced harm. SVPRO can be contacted at svpro@uwaterloo.ca

Religious & Spiritual Observances: The University of Waterloo has a duty to accommodate religious and spiritual observances under the Ontario Human Rights Code. Please inform the instructor at the beginning of term if special accommodation needs to be made for religious observances that are not otherwise accounted for in the scheduling of classes and assignments. Consult with your instructor(s) within two weeks of the announcement of the due date for which accommodation is being sought.

Respectful Communication and Pronouns: Communications with Instructor(s) and teaching assistants (TAs) should be through recommended channels for the course (e.g., email, LEARN, Piazza, Teams, etc.) Please use your UWaterloo email address. Include an academic signature with your full name, program, student ID. We encourage you to include your pronouns to facilitate respectful communication (e.g., he/him; she/her; they/them). You can update your chosen/preferred name at WatIAM. You can update your pronouns in Quest.

Mental Health and Wellbeing Resources: If you are facing challenges impacting one or more courses, contact your academic advisor, Associate Chair Undergraduate, or the Director of your academic program. Mental health is a serious issue for everyone and can affect your ability to do your best work. We encourage you to seek out mental health and wellbeing support when needed. The Faculty of Engineering Wellness Program has programming and resources for undergraduate students. For counselling (individual or group) reach out to Campus Wellness and Counselling Services. Counselling Services is an inclusive, non-judgmental, and confidential space for anyone to seek support. They offer confidential counselling for a variety of areas including anxiety, stress management, depression, grief, substance use, sexuality, relationship issues, and much more.

Intellectual Property: Be aware that this course contains the intellectual property of their instructor, TA, and/or the University of Waterloo. Intellectual property includes items such as:

Lecture content, spoken and written (and any audio/video recording thereof). Lecture handouts, presentations, and other materials prepared for the course (e.g., PowerPoint slides). Questions or solution sets from various types of assessments (e.g., assignments, quizzes, tests, final exams); and Work protected by copyright (e.g., any work authored by the instructor or TA or used by the instructor or TA with permission of the copyright owner).

Course materials and the intellectual property contained therein are used to enhance a student’s educational experience. However, sharing this intellectual property without the intellectual property owner’s permission is a violation of intellectual property rights. For this reason, it is necessary to ask the instructor, TA and/or the University of Waterloo for permission before uploading and sharing the intellectual property of others online (e.g., to an online repository).

Permission from an instructor, TA or the University is also necessary before sharing the intellectual property of others from completed courses with students taking the same/similar courses in subsequent terms/years. In many cases, instructors might be happy to allow distribution of certain materials. However, doing so without expressed permission is considered a violation of intellectual property rights and academic integrity.

Please alert the instructor if you become aware of intellectual property belonging to others (past or present) circulating, either through the student body or online.

Continuity Plan - Fair Contingencies for Unforeseen Circumstances (e.g., resurgence of COVID-19): In the event of emergencies or highly unusual circumstances, the instructor will collaborate with the Department/Faculty to find reasonable and fair solutions that respect rights and workloads of students, staff, and faculty. This may include modifying content delivery, course topics and/or assessments and/or weight and/or deadlines with due and fair notice to students. Substantial changes after the first week of classes require the approval of the Associate Dean, Undergraduate Studies.

Declaring absences: [undergraduate students and/or courses only] Regardless of the process used to declare an absence, students are responsible for reaching out to their instructors as soon as possible. The course instructor will determine how missed course components are accommodated. Self-declared absences (for COVID-19 and short-term absences up to 2 days) must be submitted through Quest. Absences requiring documentation (e.g., Verification of Illness Form, bereavement, etc.) are to be uploaded by completing the form on the VIF System. The UWaterloo Verification of Illness form, completed by a health professional, is the only acceptable documentation for an absence due to illness. Do not send documentation to your advisor, course instructor, teaching assistant, or lab coordinator. Submission through the VIF System, once approved, will notify your instructors of your absence.

Rescheduling Co-op Interviews: Follow the co-op process for rescheduling co-op interviews for conflicts to graded assignments (e.g., midterms, tests, and final exams). Attendance at co-operative work-term employment interviews is not considered to be a valid reason to miss a test.

University Policy #

Academic integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check the Office of Academic Integrity for more information.]

Grievance: A student who believes that a decision affecting some aspect of their university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4. When in doubt, please be certain to contact the department’s administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for their actions. [Check the Office of Academic Integrity for more information.] A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate associate dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline. For typical penalties, check Guidelines for the Assessment of Penalties.

Appeals: A decision made or penalty imposed under Policy 70, Student Petitions and Grievances (other than a petition) or Policy 71, Student Discipline may be appealed if there is a ground. A student who believes they have a ground for an appeal should refer to Policy 72, Student Appeals.

Note for students with disabilities: AccessAbility Services, located in Needles Hall, Room 1401, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with AccessAbility Services at the beginning of each academic term.

Turnitin.com: Text matching software (Turnitin®) may be used to screen assignments in this course. Turnitin® is used to verify that all materials and sources in assignments are documented. Students’ submissions are stored on a U.S. server, therefore students must be given an alternative (e.g., scaffolded assignment or annotated bibliography), if they are concerned about their privacy and/or security. Students will be given due notice, in the first week of the term and/or at the time assignment details are provided, about arrangements and alternatives for the use of Turnitin in this course.

It is the responsibility of the student to notify the instructor if they, in the first week of term or at the time assignment details are provided, wish to submit alternate assignment.

Acknowledgements #

Many thanks to Mei Nagappan and Shane McIntosh for preparing and sharing the course materials from the previous offerings of this course. Some materials are adapted from / link to CS346 Application Development taught by Jeff Avery.