Outline
The official course outline can be found online in the outline repository. This is a summary.
Description
CS 346 - Application Development
Description
Introduction to full-stack application design and development. Students will work in project teams to design and build complete, working applications and services using standard tools. Topics include best-practices in design, development, testing, and deployment.Units
0.50
This is third-year course, intended to be taken in 2B or 3A. It’s a successor to CS 246, and an informal lead-up to CS 246. It can be used towards the Software Engineering specialization.
Prerequisites
This course is restricted to Computer Science students.
Additionally, you must have successfully completed CS 246 prior to taking this course. From that course, you should be able to:
- Design, code and debug small C++ programs using standard tools. e.g. GCC on Windows, macOS or Unix.
- Write effective unit tests for these programs. e.g. basic I/O tests; checking for a range of valid and invalid conditions.
- Demonstrate programming proficiency in C++, which includes:
- understanding of fundamental OO concepts. e.g. abstraction, encapsulation
- knowing how to use classes, objects, method overloading, and single inheritance; polymorphism
- understanding how to use assertions, and
- knowing how to manage exceptions.
Learning Objectives
This course includes a mix of lectures, demos and project activities. The course project is a significant element of the course.
On successful completion of the course, students will be able to:
- Work effectively as a member of a software development team.
- Use an iterative process to manage the design, development and testing of software projects.
- Design and develop different styles of application software in Kotlin, with appropriate architectural choices.
- Include online and offline capabilities in your application, leveraging both local and remote data storage.
- Design services that can provide remote capabilities to your application.
- Produce automated tests as an essential part of the development process.
- Apply debugging and profiling techniques as required during development.
Assessment
This course is designed around your team project, and most activities are tied to the course project in some way. You will be assessed on both your individual work and the team project.
The course schedule lists the due dates for each component.
Individual grades (33%)
Assessments based on individual work.
Item | What it addresses | Grade |
---|---|---|
Quizzes | Quizzes covering lecture content. | 10 x 2% = 20% |
Participation | Attending and participating in the project demos. | 4 x 2% = 8% |
Team assessment | Rating from your team members at the end of the term | 5% |
Quizzes
We have weekly quizzes for the first 10 weeks of the course. Quiz content is based entirely on material presented in lectures that week. You are responsible for all material presented, not just what is in the slides.
Quizzes are hosted in Learn (Submit
> Quizzes
). Each quiz opens on Fri at 6:00 PM, and includes the lecture material from the preceding week. It remains open until the following Fri at 6:00 PM (i.e. each quiz is open in Learn for a full week).
- Each quiz is 15 minutes in length. You are only allowed one attempt.
- Quizzes are open-book, meaning that you may refer to your notes while writing the quiz.
- Quizzes must be completed individually, without assistance. You are not permitted to collaborate or communicate with other students about the quiz content.
- We normally do not grant extensions for missed quizzes. See policies.
Participation
Everyone is expected to attend project demos and present their contribution. Participation marks are awarded for attending and actively participating in the process. Attendance is mandatory. See policies.
Team assessment
At the end of the course, teams members will rate each other’s performance through the term. This accounts for 5% of your grade. See team assessment for details.
Team grades (67%)
Project milestones earned by the team.
Item | What it addresses | Grade |
---|---|---|
Project proposal | Project identified, requirements logged. | 5% |
Design proposal | Detailed design document. | 5% |
Project iterations | Features completed, release process followed, demo. | 4 x 8% = 32% |
Final submission | Completed project including documentation. | 25% |
All project deliverables
- See the appropriate page linked above for the specifics of each milestone.
- Grading details are available for each item in
Learn
>Submit
>Rubric
.
Resources
All required course materials are freely available online. These include:
- Lecture slides for each in-person lecture, typically posted a couple of days ahead of time.
- GitLab public repository containing sample code, and project templates to accompany the lecture slides.
You will require access to a computer to work on the course project.
- See Development > Getting-Started > Toolchain installation for details.
Finally, you will need access to the following websites.
- Piazza 🔗: Forum software. Used for course annoucements, and you can ask questions.
- Learn 🔗: Used for quizzes, and project submissions. Grades are also recorded here.
- GitLab 🔗: CS 346 public repository, with sample code and templates.
Policies
The following policies set expectations for how this course will be managed. Your responsibilities are outlined here, so you should take time to review them carefully.
Course Project
Participation
You are expected to participate in the course project, and all related activities, to the best of your ability. This means:
- You must be able to attend class with your team. You are not allowed to take this course remotely, or while on a work term that prevents you from attending in-person. If you attempt to take this course remotely, you may be required to withdraw from the course.
- If you fail to participate in a meaningful way during the term, you may be removed from the course. This may be done at any time prior to the start of the “Drop with WD” period. See the Important dates calendar for specific term dates.
- The instructor reserves the right to adjust grades if it is determined that a team member failed to substantially contribute to the course project.
This course is not suitable for students on a work term. You must be physically present to receive a participation grade.
Team formation
You are expected to form project teams in the first couple of weeks. The following guidelines apply:
- Students are responsible for matching up and forming teams. Teams must be formed by the end of the second week (i.e. the add-course deadline). If you fail to find a team, you must inform the instructor by this deadline.
- We do not guarantee you a team after the end of the second week. If you have not joined a team, and have not made some arrangement with the instructor, you may be required to withdraw from the course.
- Course enrolment will be managed by the instructor to encourage teams of four students. If necessary, the instructor may authorize larger or smaller teams, or modify team membership to accommodate everyone that is enrolled in the course.
Team demos
You are expected to participate in each project iteration. This includes contributing to each sprint, and attending and participating in team demos. If you fail to attend without a valid reason, you will receive a zero for that demo participation grade. At the instructors discretion, you may be exempt if:
- You have a conflicting coop interview and you are unable to reschedule it (per coop policy, rescheduling should be your first attempted course of action).
- You are ill on the day of the demo, and submit a VIF - see below for instructions.
- Other reason approved by the instructor ahead-of-time.
If an exemption is granted, it will take the form of an EXEMPT status for that component.
We do not typically allow absences from demos without a very compelling reason. e.g., “I want to study for another course”, or “I want to go home on the weekend”, or “I missed the bus” are not typically valid reasons for an exemption. Also, failure to contact us before missing the demo is an automatic zero for demo participation.
Absences
If you need to be absent and miss an assessment, please see the specific policies below.
Illness
If you are ill, and want relief from a course deliverable, you should follow the guidelines and steps outlined under Math Accommodations > Submitting a VIF.
You should also inform the instructor via email and also inform your team members so that they can make accommodations in your absence.
Religious accommodations
If you need to be absent for reasons related to a religious observance, please follow the instructions under Math Accommodations > Religious observances.
Please also inform the instructor via email.
Short-term absences
You cannot use a short-term absence (STA) to delay a team deliverable (including team demos). You may use a STA for an exemption from a quiz, if it’s submitted within 24 hours of the quiz deadline.
To use a STA to request an exemption from a quiz, you need to fill out 2 forms:
- Math Accommodations > Short-Term Absence form, and
- CS 346 declaration form to inform the instructor.
Note that you MUST fill in both forms for the absence to be considered valid.
Grading policies
Grade exemptions
If an exemption is granted for any reason (see above), it will normally take the form of an EXEMPT status for that component. The specific exempt component will not be included in your grade calculation, and grade weights will be redistributed across other components.
Regrade requests
Quizzes are marked automatically by Learn, and course grades are released by 10:00 AM on the Monday after a quiz closes. Other materials are manually graded by TAs, and grades are normally returned within 1 week of the due date.
Regrade requests for graded materials will be considered for one week after the grade has been released; we will not entertain last-minute regrade requests. If you wish to dispute a grade, email the instructor (for quizzes) or your TA (for project submissions). Contact information is here.
Incomplete (INC) grades
A grade of INC based on missed work will not normally be granted in this course.
###Inclusiveness
It is our intent that students from all diverse backgrounds and perspectives are well-served by this course, and that student’s learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups.
In particular:
- We will gladly honour your request to address you by an alternate/preferred name or pronoun. Please advise us of this preference early in the term, so we may make appropriate changes to our records.
- We will honour your religious holidays and celebrations. Please inform us of these at the start of the course.
- We will follow AccessAbility Services guidelines and protocols on how to best support students with different learning needs. Please submit these requests early in the term so that suitable accommodations can be provided.
Academic integrity
To maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. Contact the Office of Academic Integrity for more information.
You are expected to follow the policies outlined here for quiz and project submissions.
To ensure academic integrity, MOSS (Measure of Software Similarities) is used in this course as a means of comparing student projects. We will report suspicious activity, and penalties for plagiarism/cheating are severe. Please read the available information about academic integrity very carefully.
Ethical behaviour
Students are expected to act professionally, and engage one another in a respectful manner at all times. This expectation extends to working together in project teams. Harassment or other forms of personal attack will not be tolerated. Course staff will not referee interpersonal disputes on a project team; incidents will be dealt with according to Policy 33.
Plagiarism and third-party code
Students are expected to either work on their own (in the case of quizzes), or work with a project team (for the remaining deliverables in the course). All work submitted should either be their own original work or work created by the team for this course.
The team is also allowed to use third-party source code or libraries for their project under these specific conditions:
- Published third-party libraries in binary form may be used without restriction. This may include libraries for networking, user interfaces and other libraries that are introduced in class.
- Source code from external sources may only be used if the contribution is less than 25 lines of code from a single source. Code copied in this way must be acknowledged with a comment embedded directly in your source code in the appropriate section.
- All external sources (libraries and source code) should be identified in the project’s README file.
Failure to acknowledge a source will result in a significant penalty to your final project grade (ranging from a minor deduction to a grade of zero for the project, depending on the severity of the infraction). Note that MOSS will be used to compare student assignments, and that this rule also applies to copying from other student projects, source code found online, or projects from previous terms of this course.
Reuse of materials
You cannot base your project in part or in whole on coursework that you have completed for a different course. You cannot submit the same project to multiple courses for credit, even if you are taking the courses concurrently (i.e. CS 346 and CS 446 would require different projects to be submitted that do not share source code).
Similarly, you cannot use anything that you created prior to the start of this course without explicit written permission from the instructor. This includes code, documentation, and other materials that you may have created in previous courses or work terms, or materials that you have created on your own time.
Generative AI & LLMs
The use of Generative AI and/or Large Language Models (e.g., ChatGPT, CoPilot and similar systems) is restricted in this course. You are not allowed to use such systems when writing quizzes, or for generating any part of your written submission (e.g., design document, user instructions, final report).
You are allowed to use these tools to generate a limited amount of code towards your project, provided that you adhere to the policies described above under plagiarism. Content generated by these systems must be sourced and cited properly, just like any other third-party source code.
Improper use of these tools will be subject to Policy 71 and an investigation into academic misconduct.
Keep in mind that if you use these types of systems to generate code, you are responsible for what is produced! These models can generate incorrect or illogical code. Non-working generated code will not be an acceptable excuse for failing to meet project requirements or deadlines.
Student discipline
A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions. 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) 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.
Intellectual property
Students should 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. 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.
Continuity plan
As part of the University’s Continuity of Education Plan, every course should be designed with a plan that considers alternate arrangements for cancellations of classes and/or exams.
Here is how we will handle cancellations in this course, if they occur.
-
In the case of minor disruptions (e.g. one lecture), the lecture content will be reorganized to fit the remaining time. This should not have any impact on demos or deliverables.
-
Cancellation of multiple classes may result in a reduction in the number of sprints and associated deliverables to fit the remaining time. If this happens, lecture content will also be pruned to fit available time. Assessment weights will be redistributed evenly over the remaining content if required to align with the material.
-
Cancellation of in-person (midterm or final) examinations has no effect on this course, since we do not have scheduled exams and quizzes are online.