Fall 2015»CSCI 380 Final Project

CSCI 380 Final Project

Assigned Date: Wednesday, Oct. 14, 2015
Due Date (Phrase 1): Done (see Homework3)
Due Date (Phrase 2): Done (see Homework4)
Due Date (Phrase 3): Done (see Homework5)
Due Date (Phrase 4): Monday, Nov. 30
Due Date (Final Project): Friday, Dec. 11
Due Time: 11:20am

Last modified on December 03, 2015, at 06:48 PM (see updates)

This is a group assignment - you must work in teams of 2 or 3. It is not okay to work alone. See course collaboration policy for details.


You have been hired by Artle, a start-up, daughter company of G**gle (name withheld due to non-disclosure agreement), whose purpose is to explore the new, lucrative market in the intersection of art (music, visual, theater, performance, etc.) and computing. The belief is that this where the new multi-billion user market will emerge in the 21st century (the area is untapped territory), and G**gle is trying to develop a portfolio of possible projects / apps to capture a major share of it (in the spirit of G**gle innovation).


This is the culmination of this semester's multi-phase project, where you develop the UI for a new system.

For this final phase, you are to complete the development by implementing the UI and a functional prototype of your proposed system.

As discussed earlier, you are required to use the Model / View / Controller architecture. In particular, when you submit your code, you must partition it in files, model.py, view.py, and controller.py.

These files are to be imported in your driver program, main.py.

So, there will be at least four files in your final project. Use these exact names:

  • model.py should contain any high-level data structure needed;
  • controller.py should define the callback functions used by our GUI; and
  • view.py should create any Displayís, widgets, and graphics objects necessary. The assignment of callback functions to events (e.g., onMouseClick(), etc.) should be made in this file.

Top level documentation should be included in each file. Use this format -


Also, functions should be clearly documented. Difficult, or important parts of your code should also be well documented. Comments should focus on "what" and "why" something is being done (as opposed to the "how" - the "how" can be seen in the code). In other words, your comments should not be translations of your code into English. Instead they should provide higher-level algorithmic insights and specifications.

While you are not required to implement the complete application, you should implement enough (i.e., the most significant user tasks), so we can appreciate / use / evaluate / assess you application and its functionality. Feel free to implement the complete functionality, if the application is simple enough. The determination if you have implemented enough will be made based on whether we can experience the essence of your system, from what you provide, or not.

To receive partial credit, you should implement the complete UI (even if you do not complete the functionality). After all, this is a UI development class.


Produce a report (PDF), with the following outline:

  • Names, class, date, homework number, etc.
  • Name of application
  • User goal
  • The complete task hierarchy (HTA) - use boldface to signify which tasks you have implemented.
  • Annotated snapshots of your complete interface. If desired, include photos of users interacting with your system. Provide appropriate captions.
  • README instructions (if any), for your users (e.g., how to sync their phone, or anything preliminary they need to know). I should able to read these instructions and be able to run your system on my own.
  • In an appendix (i.e., at the end of your report) provide your complete code in this exact order:
    • main.py
    • view.py
    • controller.py
    • model.py


  • Your report should have sections that follow the above outline. Include figures and illustrations that give substantive help to the reader in understanding the user interface, etc. You are encouraged to use screen snapshots and other graphics (e.g., diagrams) for elucidation. However, avoid decorative graphics/pictures.
  • As per course collaboration policy, there should be no discussion of any kind about this assignment (and possible solutions) with any person outside your team other than the instructor. You are not allowed to discuss/look at someone elseís solution (including material in books and the Internet) or show your solution to someone else outside your team other than the instructor.
  • Include references on materials (other than the textbooks and handouts) you consulted to do the assignment.


Grading will be based on your ability to carefully and succinctly identify the key points of your idea / work.

  • Work for clarity, succinctness, and effectiveness.
  • Hint: It might help to think of your report as a (meta) user interface, and your classmates as your end-users. What are the tasks they would want to accomplish with your report?


  1. Hand in your report printout in class on the due date to be graded.
  2. Also store it on a USB stick in PDF format.
  3. The USB stick should be placed inside an envelope (or paper wrapping) with the team member names on it.
  4. Bring your system to class and be ready to demonstrate it with sample users.
  5. On the USB stick store your code and additional files it loads (e.g., images, sounds, etc.) in a subdirectory, called Code, which also includes JEM, so I can easily run things. I should be able to go to this subfolder, run your main.py program, and see your system in action. Include the README file with instructions on how to use your system (e.g., sync the phone, or anything preliminary necessary to know). I should able to read these instructions and run your system.

Failure to follow these instructions will result in reduction of grade.