CS446/CS646/ECE452 1251

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

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 group project where students design and implement a software application as a team.

The classes are held in person. In the first few weeks, the class time will be mostly spent on lectures to get you started with the basics of this course. As you form teams and start working on the project, the lectures will become shorter and at least half of the time will be dedicated to project working sessions.

Expectations

This course expects you to attend the classes at least once a week and be available to meet with your teammates frequently. In-person activities (e.g., meeting, pair programming, debugging) are extremely important for you to make effective and steady progress on your projects. If you are on a co-op term or plan to be out of town for the term, this course may not be suitable for you.

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: Monday and Wednesday 10:00am-11:20am at MC 1056
    • Sec 002: Monday and Wednesday 1:00pm-2:20pm at QNC 2502
  • Course staff (office hours by appointment)
    • Instructor: Pengyu Nie <pynie@>
    • TAs:
      • Saarang Agarwal <saarang.agarwal@>
      • Bihui Jin <bihui.jin@>
      • Daniel Phan <daniel.phan@>
      • Amber Wang <jiale.wang@>
  • Communication platforms
    • Course website (this page): lecture slides, project milestone requirements, etc.
    • Learn: announcements (also sent via email), project submissions, grading
    • 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 #

WeekDateLecture / Project Milestone
1Jan 06 MonIntroduction to Course [slides]
Jan 08 WedIntroduction to Software Architecture [slides]
2Jan 13 MonNon-Functional Requirements [slides]
Jan 15 WedUse Cases, Human Values [slides]
Jan 17 FriP0 Team Formation [requirements]
3Jan 20 MonUML, Class Diagram, Database
Jan 22 WedArchitecture Views, Decomposition
Jan 24 FriP1 Project Setup [requirements]
4Jan 27 MonKotlin, Android Toolchain
Jan 29 WedArch Styles 1 - MVVM
Jan 31 FriP2 Project Proposal [requirements]
5Feb 03 MonBuilding Android Apps
Feb 05 WedArch Styles 2 - Server/Client
6Feb 10 MonArch Styles 3
Feb 12 WedP3 Iteration 1 Demo [requirements]
7Reading Week
8Feb 24 MonDesign Patterns 1 - Creational
Feb 26 WedDesign Patterns 2 - Structural
9Mar 03 MonDesign Patterns 3 - Behavioral
Mar 05 WedP4 Iteration 2 Demo [requirements]
10Mar 10 MonDesign Patterns 4
Mar 12 WedTesting
11Mar 17 MonContinuous Integration, Release
Mar 19 WedP5 Iteration 3 Demo [requirements]
12Mar 24 MonProject Finalization
Mar 26 WedProject Finalization
13Mar 31 MonP6 Final Presentation
Apr 02 WedP6 Final Presentation
Apr 04 FriP7 Final Report

Clickable links to lecture slides / project milestone requirements will be added in the table.

Assessment #

AssessmentValue
Project50%
Attendance10%
Final Exam40%

Project #

The project grade is computed as (base + bonus) * (scale/100). The following tables illustrate their overall breakdown. You can find details in the requirements of each project milestone.

The base grade items are earned by the team. It includes a number of milestones throughout the term:

DateMilestoneValue
Jan 17P0: Team Formation-
Jan 24P1: Project Setup2%
Jan 31P2: Project Proposal3%
Feb 12P3: Iteration 1 Demo5%
Mar 05P4: Iteration 2 Demo5%
Mar 19P5: Iteration 3 Demo5%
Mar 31 / Apr 02P6: Final Presentation20%
Apr 04P7: Final Report10%

The bonus items are also earned by the team. Possible bonuses include:

Bonus ItemValue
P2: Best (per section) project proposal2%
P3-P5: Best (per section) progress at each iteration2%
P6: Best (per section) final presentation2%
P7: Prepared a short video (3-5 min) to demo your app2%
P7: Submitted to the Google Play store2%

The scale is a factor decided by the course staff at the end of the term after reviewing all project deliverables. It ranges from 0 to 100, and consists of the following components:

ComponentScale Weight
Completeness10
Utility10
Polish10
Difficulty20
Individual effort50

Attendance #

We will take attendance on weeks 2–6 and 8–12, with each week worth 1% value. If you attend at least one of the Mon or Wed classes, and sign the attendance sheet, you will get the attendance mark for that week. You must be physically present in the class—your teammates are NOT allowed to sign you in.

Final Exam #

The final exam will be arranged during the exam weeks, time and location TBD. The exam takes 2 hours. You are allowed to bring one page of cheat sheet (A4/letter size, write/print on both sides).

The exam may contain T/F, multiple-choice, and short-answer questions; some questions may require you to draw diagrams. There won’t be questions that require writing long pieces of code.

Graduate Student Project #

For graduate students only: in addition to the project and other assessments above, you will perform an individual graduate project. The graduate project is worth 25% of your grade; your final grade will be calculated by scaling down the above assessments from 100% to 75%.

Three types of graduate projects are possible:

  • Build a Software Tool: The goal of this style of project is to identify some problem developers encounter in practice, find some solution, and validate that the solution helps with the initial problem. I would recommend drawing upon your experience as you write code to identify some problem that has inhibited you in the past and fix it. The outcome of this project will be a short (5-6 page) paper describing the problem, your solution, a comparison to related approaches, and some form of validation.

  • Literature Survey: The goal of this kind of project is to gain a more complete understanding of a topic relevant to this course. The outcome of this project will be a critical summary of the state-of-the-art on your selected topic; this summary should be 8-10 pages. It is essential that this summary synthesizes the surveyed literature to identify important themes, findings, and open questions.

  • Use an Advanced Software Development Tool: The goal of this project is to provide a validation of some previously-existing development tool from the research community. The tool you validate must be related to the course material. The outcome of this project will be a 6-8 page paper describing your experience with the tool outlining its strengths, weaknesses, and avenues for future improvement.

There are two deliverables for the graduate project:

  • Project proposal. Before you undertake your project you will need to submit a proposal for approval. The proposal should be short (1-2 pages in ACM format). The proposal should include a problem statement, the motivation for the project, a set of objectives you aim to accomplish, and a set of milestones. I will read these and provide comments. The proposal is not for marks but must be completed in order to pass the course. This will be due on Jan 31 via email to me.
  • Written report. The required length of the written report varies from project to project; all reports must be formatted according to the ACM format and submitted as a PDF. This artifact will constitute 100% of the graduate project grade. This will be due on Apr 04 via email to me.

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.