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!
There are four assignments, and each one is worth 20% (4 x 20% is 80% of your final grade).
All of the assignments require you to design and build an application that meets specific functional requirements. You are expected to use use your own computer (see setup). Specific assignment details are listed below.
|A1||Input & Interaction (Java)||Tree Utility||Starting A1||20%||Fri Feb 5 @ 6:00 PM|
|A2||Drawing & Events (Java/JavaFX)||Game of Life||Starting A2||20%||Fri Feb 26 @ 6:00 PM|
|A3||Widgets & Layouts (Java/JavaFX)||Bezier Curve||Starting A3||20%||Fri Mar 19 @ 6:00 PM|
|A4||Mobile & Multitouch (Java/Android)||Gesture Recognizer||Starting A4||20%||Fri Apr 9 @ 6:00 PM|
See the Samples page for the code shown in lectures. You are welcome to use these in your assignments!
Specific submission policies are listed on each assignment. The following general policies apply to every assignment.
- You are expected to develop on your own machine (Windows, macOS, and Linux are all supported). You must conform to the tools/versions specified in the assignment description.
- All required source code, assets (e.g. images, 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 returned approximately one week after the submission deadline. An announcement will be made on Piazza, indicating how to see your (confidential) grades and how to request a remark.
- All submissions must made be via your Git repository. Assignments submitted by any other method (e.g. email) will not be graded.
Using Your Git Repo for Submissions
To get a local copy of your Git repository:
git clone https://firstname.lastname@example.org/cs349-winter2021/username.git assignments(replacing username with your WatID). This will produce a directory named `assignments` with empty subdirectories `A1` though `A4`.
- Your assignment should be created in the appropriate subdirectory.
To submit an assignment:
- Make sure that your required files are in the appropriate subdirectory, in the repository that you cloned above.
git addall of your files.
git committo commit them to the repository.
git pushto send changes to the server.
Assignments are due by the date and time listed above. Late assignments will not normally be accepted. If you do not submit by the deadline, you will receive a grade of 0% for the assignment, unless one of the following conditions are met:
- You have arranged with the instructor ahead of time for an extension.
- You are ill and unable to work on the assignment. The following conditions apply:
- You must speak with us prior to the due date. Emailing the day that it's due, or after the deadline, will not be viewed favorably.
- A Verification of Illness (VIF) form signed by a doctor must be submitted to the Math Faculty. A scan of this form must also be emailed to the instructor and ISC.
If we choose to grant an extension, we strongly prefer to grant extra time for you to complete thee assignment. We will not allow you to skip assignments or shift of the weight of the assignments.
Regarding these policies, we recognize that honest mistakes occur. If the TA can easily modify a build, correct an errant character in a source file, or comment out small portions of code so they can build or run your code, they will do so. If you made an error submitting to git, and you can provide substantial proof that you completed your solution on time, we may still accept it. However, in either case, marks will still be deduced based on factors such as the amount of extra effort required by the TA to rectify your mistake, amount of time past the deadline, etc.
Assignments are your own individual work:
- You must design and implement the assignments by yourself. There are no group assignments.
- You can use code examples provided in-class (i.e. in the public repo for the site). You are allowed to directly use or include portions of in-class samples in your assignments. Some assignments may also, at the instructor’s discretion, provide starter code that you can also use.
- You cannot use anyone else’s code in your assignments (this includes current or past students of this course), and you are prohibited from sharing your code with anyone else in the course. You can discuss how you accomplished something in general terms with other students, but under no circumstances may you directly share code.
- No third-party code or libraries are allowed in your assignments, other than those explicitly permitted by the assignment description. You should not use code you find on the Internet (e.g. GitHub, Stack Overflow, etc.). It is perfectly acceptable to search for a general technique (e.g. how does this class work?) but you cannot use any published code in your assignments.
- You should 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 should post in a private/restricted repository instead.
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/cheating are severe. Please read the available information about academic integrity very carefully.