There will be 3 programming project assignments over the course of the semester. The first 2 will be individual projects where the implementation goals are specified by me. The final project will be a group term project. You will work in groups of 2–3 on a project of your choosing. I will provide some suggestions for possible projects, but you will be free to come up with your own as well. In either case, I must approve the details of the project you intend to pursue.
Project 1 Geometry Compression.
Project 2 Subdivision Surfaces.
Project Evaluation For each of your projects, you will give a public demo to me shortly after the handin deadline (where appropriate).
Choice of GUI You may select any GUI toolkit or 3D API of your choice. I personally use FLTK and OpenGL, but if you want to use MFC and DirectX, you may. My only requirement is that the software must run on our CSIL machines and the source code must be readable.
Code Sharing & Reuse You may use public libraries or source repositories to help you perform common functions not directly related to the features you are required to implement. For example, the code necessary to parse input data files or manage GUI dialog boxes would fall into this category. You may also share such code with other students. However, sources should be cited and credit given properly. You may not copy code from the Web, other books, other students, or any other sources that perform the required functionality of your project.
Collaboration Direct collaboration on projects with other students is not allowed. You may talk to your peers about implementation ideas, but if you truly understand what was discussed, you should be able to walk away from your meeting without notes, do something else mindless for half an hour without thinking about the discussion, and still remember enough to help you with your project. The sole exception, as mentioned above, is that you may share code for performing incidental tasks (e.g., file parsing).