Assignments
Assignments are meant to provide meaningful, engaging experiences in constructing interfaces while giving you the opportunity to create applications you will want to share with others. However, the assignments in this course often require a significant amount of time. Do not underestimate the time it takes to code interactive applications.
You are expected to use your own computer for these assignments, A0 will ensure your setup works.
Schedule
Assignment | Released | Due Date |
---|---|---|
A0 Setup | Mon Jan 8 | Fri Jan 19 at 6 PM |
A1 Canvas | Fri Jan 19 | Fri Feb 2 at 6 PM |
A2 SimpleKit | Fri Feb 2 | Fri Feb 16 at 6 PM |
A3 Vanilla | Fri Mar 1 | Fri Mar 15 at 6 PM |
A4 Preact | Fri Mar 15 |
General Assignment Policies
Specific submission policies are listed on each assignment. The following policies apply to every assignment.
- You are expected to develop on your own machine (Windows, MacOS, and Linux are all supported). You should conform to the tools and versions specified in the assignment description.
- All submissions must made be via your Git repository. Assignments submitted by any other method (e.g., email) will not be graded.
- All required source code, assets (e.g., images and sound files) must be submitted for each assignment. If the TAs cannot run or build your submitted solution, you may receive a grade of 0%. Details on how a particular assignment should build are included in the assignment description.
- Assignments will be graded, and grades posted on LEARN approximately one week after the submission deadline. An announcement will be made on Piazza indicating how to access your grade. Remark requests for assignments must be received within one week of the grades being announced. After this, remark requests may not be granted.
Late Submissions
You are expected to commit your assignment solution to your repository before the posted deadline.
- Late assignments will be deducted 10% per 24 hour period up to 48 hours (i.e. 10% deduction if committed 0 to 24 hours after deadline, 20% deduction if committed 24 to 48 hours after deadline).
- Late assignments committed more than 48 hours after the deadline will receive a grade of 0.
- If you commit an assignment after the assignment deadline by mistake: you must email the course ISC (Caroline Kierstead) so they can notify TAs to mark the version submitted before the deadline. Otherwise, late penalties will be deducted or you could even receive 0.
Please do not expect course staff to answer Piazza posts about an assignment after the deadline has passed.
Out-of-scope Language Features
In principle, there's no restriction on using JavaScript or TypeScript language features not covered by the course, unless they're described in the assignment restrictions. But note all required language features needed for an assignment are covered in lectures and demos. By "features not covered by the course" we're referring to something like ES6 Sets or TypeScript generics, not additional methods for a feature we cover already (like the CanvasRenderingContext2D).
If you choose to use features not covered by the course, be aware:
-
We won't help you with issues related to those features in office hours or on Piazza.
-
TAs may not be familiar with those features, so we strongly recommend you add some explanation to your README to justify why you use them and provide some background about how they relate to the features we do cover. For example, what is the advantage of using Set over an Object or Array? (this is to avoid losing marks and having to file a remark request later).
-
Using those features will attract additional scrutiny of your source code for potential assignment requirement violations, plagiarism, and un-documented use of GenAI. So in addition, consider:
(a) you need to make absolutely certain those features don't violate assignment restrictions;
(b) if you learned about those features from an online source or a GenAI suggestion, you must clearly document the source and be ready to explain how those features and why you use them;
(c) those features won't be covered on an exam, so you're depriving yourself of the opportunity to use the assignment to learn course material;
(d) you better learn exactly how those features work before using them due to item #1, #3a, and #3b
Academic Integrity
Please review policies for Academic Integrity, Using Code from Other Sources, and Using Advanced AI Systems under Course Policies.
Assignments are your own individual work:
- You must design and implement assignments by yourself. There are no group assignments.
- You may use code examples provided in-class (i.e., in the CS349 public repo). You may directly use or include portions of these in-class samples in your assignments. Some assignments may also, at the instructor’s discretion, provide starter code that you may use. If this is the case, it will be specified in the assignment. You do not have to cite or attribute code from lectures, code from the course demo code repo, or code provided as assignment starter code.
- You may not use another student's code in your assignments (this includes current or past students of this course), and you may not share your code with anyone else in the course. You may discuss how you accomplished something in general terms with other students, but you may not directly share code.
- You may not use third-party libraries in your assignments other than those explicitly permitted by the assignment description.
- You may not make your code publicly available on any hosting sites (e.g. GitHub), even after the end of the term. If you wish to show your code to potential employers, you must post use a private or restricted repository.
MOSS (Measure of Software Similarities) is used in this course as a means of comparing students' assignments to ensure academic integrity. We will report suspicious activity, and penalties for plagiarism and cheating are severe. Please read the available information about academic integrity very carefully.