CS349 User Interfaces
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage


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!


All of the assignments require you to design and build an application that meets specific functional requirements. You are expected to use your own computer for these assignments (see Getting Started).

There are 4 assignments: each one is worth 15% (4x15% is 60% of your final grade).

# Title Due Date
A1 (Desktop) File explorer Fri, Jun 2 @ 6:00 pm
A2 (Desktop) Digital lightbox Fri, Jun 23 @ 6:00 pm
A3 (Desktop) Space Invaders! Fri, Jul 14 @ 6:00 pm
A4 (Android) PDF Reader Tues, Aug 1 @ 11:59 pm


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 25% per 24 hour period up to 48 hours. Blocks of time less than 24 hours will be rounded up (i.e., being between one hour and 24 hours late is still a 25% penalty).
  • To submit a late assignment, you must email the instructor and ISA BEFORE THE DEADLINE to let them know that it will be late.
  • Late assignments committed more than 48 hours after the deadline will receive a grade of 0.
  • If you are ill, your instructor may grant you an extension. You need to request this before the deadline. Please see Course Policies.

Note that course staff typically respond to Piazza posts from 9 am to 5 pm on weekdays. Please do not expect course staff to help you in evenings, on weekends, or after an assignment deadline.

Academic Integrity

Please review Academic Integrity 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 public repo for the site). 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 may not use anyone else’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 should not use code you find on the Internet (e.g., GitHub, Stack Overflow, etc.). You may search for general techniques (e.g., how the Button-class work).
  • 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 and cheating are severe. Please read the available information about academic integrity very carefully.