CS 398: Introduction to Graphics Programming

Course Project: Implement an extra topic of your choice


This assignment is the culmination of what you have learned in this course. It is similar to the project in CS488, but will be simpler and light-weight. To this end, we ask you to pick one extra topic among the topics covered in this course and implement it. Keep in mind that the project is not a group project just like the other assignments, so you will be doing it by yourself. You are, however, allowed to discuss with your classmates about the project and share ideas, but you are not allowed to share code or your solution.

Extras

Here is the list of extras you can choose from. Each one of them focuses on a particular theme we covered in this course, but lectures should have covered basic ideas regarding what to do for all of them.


The specifications are intentionally left high-level, and their difficulties are likely not equal. While we are happy to discuss with you, it is up to you to figure out what exactly you need to do for the extra you chose, based on what you have learned in this course. We expect you can utilize GLSL and WebGL for most of the tasks, but you are free to use JavaScript unless specified. You are, however, not allowed to use any other external libraries than TWGL.

Extended README

You will need to have more detailed README for the project than those for the assignments. After picking which extra task you would like to complete, write the following sections in your README:

  1. Statement of the nature of the project. Briefly mention what techniques will be necessary to implement your project.
  2. Tasks sheet containing FIVE different points upon which the achievement of the stated goals are to be judged. You think about those tasks based on the extra topic you chose and write them down here.
  3. Implementation section that describes some software considerations, where appropriate, about
    • Algorithms, data structures, and complexities,
    • Platform and system dependence or independence, global constants and configurability,
    • Input/output syntax, pre- and post-processing,
    • Data and code sources, the re-use and adaptation of existing code, any acknowledgment of external sources.
    • Caveats, bugs, cautions, assumptions.
  4. List of your completed tasks.

Grading and Subjective Mark

While part of your grade will be based upon your success at reaching your goals, another part of your grade will be based upon your comprehension and good sense at setting goals that are neither too hard to be achieved nor too easy to be significant. Originality will count as well. We call it a "subjective mark".

Your project will have both an objective mark (based on the tasks you stated in your README) and a subjective mark. The weights for objective and subjective marks are to be determined based on discussion among the TAs and the instructor, but you can expect that the subjective mark to be added as a bonus to the objective mark.

The subjective mark for your project will be based upon a subjective assessment by us, the instructor and TA(s), of how your project ranked against the others submitted this term, as well as projects like yours in similar courses. The subjective mark will be assigned somewhat like the judging in Olympic figure skating (minus the bribes). Your list of objectives provides the scores for the "required elements", and our assessment provides the scores for the "individual merit". The individual merit judgment will be arrived at by considering the four components of "artistic and/or innovative content", "technical depth", "software design", and "quality of documentation". This judgment will, necessarily, be subjective, given the wide diversity of projects. We look at things like:


These criteria are just examples, and they may change to suit the content mix of each term's projects. Nobody's project is expected to hit all these criteria. The TA and instructor will be as fair as possible, but standards will be high, and a "perfect subjective mark" will not be given lightly. We are looking for polish, depth, professionalism. We are trying to find the remarkable, and locate evidence of care, thought, effort, and skill that puts the project above one that just managed to get its technical objectives. For example, say two students picked up "Advanced shading", and one student implemented the simple Blinn-Phong model and the other implemented a far more complex microfacet model with proper multiple bounces (which is likely beyond what the lectures covered, so the student self-studied it by looking up other resources), we think it is fair that the second student will get more than the first student.

Submission

The submission process for this assignment is basically the same as the one for Assignment: Warm-up. See Assignment: Warm-up for instructions about how to prepare your submission. However, one important difference is that we ask you to additionally submit at least one screenshot.png. The screenshot should be of your best image of your project and it is for us to check what we see is what you intended. You may submit additional screenshots depending on the nature of your project. Failure to submit a screenshot may result in a penalty based on the grading policy.