COMP 396 Undergraduate Research Project Application Form

INSTRUCTIONS - PROFESSORS: Fill out Sections A & B then submit this form online. (You will receive an email copy of the form. The Office for Undergraduate Research in Science will also post the project online, indicating whether the project is open for students to apply or taken.) DONE

INSTRUCTIONS - STUDENTS: You may receive this form by email, or you may download it after it has been posted. Either way, print this form. Complete and sign Section C on the hardcopy. Ask your supervisor to sign Section D. Take it to the department corresponding to the course number in Section A (this may or may not be your own department). Do not register for a '396' course on Minerva until you receive departmental permission.

INSTRUCTIONS - DEPARTMENTS: After the unit chair/director/designate approves (or not) this project, notify student. If approved, please give student permission to register on Minerva, and fax this form (with signatures) to the Office for Undergraduate Research in Science at 514-398-8102.

QUESTIONS OR FEEDBACK? Contact Victor Chisholm by email, or phone 514-398-5964.

INSTRUCTIONS - DEPARTMENTS: After the unit chair/director/designate approves (or not) this project, notify student. If approved, please give student permission to register on Minerva, and fax this form (with signatures) to the Office for Undergraduate Research in Science at 514-398-8102.
QUESTIONS OR FEEDBACK? Contact Victor Chisholm by email, or phone 514-398-5964.
SECTION A: SUPERVISOR INFORMATION
Name: Laurie Hendren
Email: hendren [at] cs.mcgill.ca
Phone: 7391
Website: http://www.sable.mcgill.ca/~hendren
Supervisor's department: Computer Science
Supervisor's department (if none of the above)  
Course number: COMP396 (Computer Science)
SECTION B: PROJECT INFORMATION
Term: Winter 2008-2009
Project start date: January 5, 2009
Project end date: April 14, 2009
Project title: Static Techniques for checking OpenGL API usage
Project description: This project explores static techniques to find class misuse errors. Specifically, it aims to turn API or class misuse into compile time errors, rather than runtime errors. By adding states to classes and valid transitions between certain states some of the classes member functions become invalid calls at various points in the code. For example, a file class has two states, open and close. The write function should not be called when the file is in a closed state.

The key point is that, as far as possible, the exception should be detected as a compiler time error. In general this problem is undecidable, but by adding one restriction the problem is easily decidable. The restriction is: an object must exit a scope in the same state in entered.

One deliverable for this project is a set of classes that wrap the popular OpenGL library specification in such a way that it becomes impossible to use the many OpenGL objects incorrectly and would normally be sure to break at runtime. The concept of Vertex Buffer Objects, Shader and the model-view stack are good examples of this. For example, if no shader is bound to the current GL context it makes no sense to try to send data to the currently bound shader. Another common mistake is to forget to return the transformation stack back to its original state after drawing an object. Both these mistakes could be easily caught at compile time and fit nicely into the restriction in the second paragraph.

Other deliverables will be a set of examples using the set of classes developed and an evaluation of their usefulness. Finally, a project report detailing the problem, the solution and the experimental findings should be prepared.
Prerequisite: Other: please specify below
Other prerequisite, if applicable: At least a B average in related courses, COMP 206, COMP 302 and COMP 303
Grading scheme (The final report must be worth at least 50% of final grade): 20% meeting milestones, 20% software system, 60% final report
Other project information:
Project status - This project is: Taken; however students may contact the professor to discuss other possible '396' projects this term.
How students can apply: N/A; this project is filled.
If other, please specify:  
Ethics, safety, and training
Which of the following, if any, is involved? None
Animal subjects [ ]
Human subjects [ ]
Biohazardous substances [ ]
Radioactive materials [ ]
Handling chemicals [ ]
Using lasers [ ]
Supervisors are responsible for the ethics and safety compliance of undergraduate students.
SECTION C: STUDENT INFORMATION
Do not complete this section unless/until the student is identified.
Name:
McGill ID:
Email (first.last [at] mail.mcgill.ca):
Phone: N/A
Program (E.g., B.Sc. Maj. Chem. Min. Biol.):
Level (U0 / U1 / U2 / U3):
Student signature - I have not applied for another '396' course in this term:  
SECTION D: APPROVALS.
Do not complete this section unless/until the student is identified.
Supervisor: I give my permission for the student identified in section C to register for this project under my supervision.
Supervisor's signature:  
Date:  
Unit chair/director/designate: I certify that this project conforms to departmental requirements for 396 courses.
Unit chair/director/designate's name:  
Unit chair/director/designate's signature:  
Date: