🐄 csci-371 computer graphics (spring 2023) james bern

LEC mon 2:35 - 3:50 pm @ Schow Library Classroom 030A thu LAB tue 1:00 - 2:30 pm @ Thompson Biology 301 (Ward Lab) 2:30 - 4:00 pm HELP in-person TA and Prof. Help Hours via email cs371staff@williams.edu
help hours | codebase | docs | notes | glow | last-semester

Homework is due on glow the first Monday after it is released at 8 pm. Please contact me as soon as possible if you cannot meet a deadline. 🙂👍 Homework will be returned within 48 hours of the submission deadline. You have until the following submission deadline to correct it for full points back. - You can only correct problems you attempted before the regular deadline. - You must submit a glow comment explaining what you have changed and why.
Calendar
FUNdaMENTALs wk00 wed, feb 01 lec00a hw00 // intro wk01 mon, feb 06 lec01a rec01a hw01 // vectors, [cat-and-mouse] thu, feb 09 lec01b rec01b // OOP vs. COP, opengl--; create wk02 mon, feb 13 lec02a rec02a hw02 // LERP, [bezier], linear systems, [line-line intersection] thu, feb 16 lec02b rec02b // COP, API design, [motor graph] wk03 mon, feb 20 lec03a rec03a hw03 // soup meshes [cone] transforms [orbit] thu, feb 23 lec03b rec03b // transforms wk04 mon, feb 27 lec04a rec04a hw04 // cross product, coordinate systems, cameras thu, mar 02 lec04b rec04b // projection render wk05 mon, mar 06 lec05a rec05a hw05 // rasterization thu, mar 09 lec05b rec05b // the fun lecture wk06 mon, mar 13 lec06a rec06a hw06 // shaders thu, mar 16 lec06b rec06b // lighting, [matcap], artists wk07 mon, mar 20 thu, mar 23 wk08 mon, mar 27 thu, mar 30 wk09 mon, apr 03 lec09a rec09a hw09 // raytracing thu, apr 06 lec09b rec09b // animate wk10 mon, apr 10 lec10a rec10a hw10 // animation thu, apr 13 xxxxxx xxxxxx // 🎨 WCMA special topics wk11 mon, apr 17 lec11a xxxxxx hw11 (proposal) -- due thursday in class // final project thu, apr 20 lec11b rec11b // immediate mode gui wk12 mon, apr 24 lec12a rec12a hw12 (progress report) -- due thursday in class // transform hierarchies thu, apr 27 lec12b rec12b wk13 mon, may 01 lec13a rec13a // 👾 Aaron thu, may 04 lec13b rec13b wk14 mon, may 08 lec14a rec14a // project-demos, 🍕 thu, may 11 lec14b // course evals, the future of graphics
What to Expect
A hands-on intro to computer graphics. The Lectures will cover key points and technically interesting examples. There will be group activities. There will be movies. The Homework will involve lots of challenging programming in C/C++. I will be there to help you along the way. The Exam will require you to apply challenging mathematical concepts in new ways. I will provide practice problems as we go. The Final Project will be open-ended, time-consuming, and require you to get creative. I think people enjoyed it last semester 🙂👍 Your final grade will have three parts. + 60% Homework, + 20% Exam, + 20% Final Project.
Homework
You are highly encouraged to collaborate on homework provided you follow the spirit of the 50 ft rule. Homework is graded on two axes. Correctness: Is the output correct? Is memory handled appropriately? Effort (for Creative Coding problems): Was a substantial effort made to create something new/cool/interesting? Note: you are *not* graded on artistry. Note: You are *not* graded on comments, style, what you named your variables, etc. However, you are graded on whether your code crashes. Grades will be assigned on an A, B, C, S scale. A (95): Homework that is correct and exhibits substantial creative effort. B (85): Homework with some incorrectness or substandard creative effort. C (75): Homework with major incorrectness or marginal creative effort. S (A+): A-tier homework that goes above and beyond (either by completing a challenging extra credit question or by pushing the regular assignment further than anticipated)
Exam
The exam is effectively a no-collaboration homework. You may *not* ask your friends questions. You may *not* ask the TA's questions. You are welcome to ask Jim questions, though to ensure the exam is fair he is unlikely to be particularly helpful. You may Google whatever you want, consult course notes, past homework, and textbooks (you can use my copies, provided you share and don't remove them from the lab). You may write and run code. You have a full week to finish the exam, though it is not meant to take longer than a regular homework. You can also submit corrections for the exam, though you will receive a maximum of 50% of the missed points back.
Final Project
The final project is effectively an open-ended multi-week Super Homework. You may do your final project on whatever you like, provided you can answer the following questions. 0) What is the title of my project? 1) What is my project's big "graphics method"? Note: This should either be something that was not covered on a homework, or a significant extension of something that was. 2) What is the world that I am proposing? Who or what lives in it? How does it *feel*? 3) Will the viewer/player interact with my project? How so? 4) Does Jim think my project is doable? What is my fallback plan if my project ends up being harder/more time-consuming than I expect? Here is a great example: 0) Archer 1) Physics-based simulation of a bow and arrow 2) A brightly-colored archery range; just the player and some clouds; feels fun and friendly 3) Click and drag to pull back arrow, release to shoot 4) Yes; if simulating the bow with torsional springs is too hard, then I plan to simulate only the string and render the bow using a geometric method
Optional Textbooks
These resources may be helpful, especially for the final project. - Learn OpenGL (free!) - OGLdev (free!) - the Graphics Codex (free!) - Fundamentals of Computer Graphics (I have a hard copy that will live in lab.) - Real-Time Rendering (I have a hard copy that will live in lab.)
Inclusivity
Williams College values an inclusive environment, and so do I. In this class, we welcome anyone regardless of age, background, beliefs, ethnicity, gender, gender identity, gender expression, national origin, religious affiliation, sexual orientation, and other visible and non visible categories. I am available to address any questions or concerns in person or over email.
Health/Accessibility Resources
Students with disabilities or disabling conditions who experience barriers in this course are encouraged to contact me to discuss options for access and full course participation. The Office of Accessible Education is also available to facilitate the removal of barriers and to ensure access and reasonable accommodations. Students with documented disabilities or disabling conditions of any kind who may need accommodations for this course or who have questions about appropriate resources are encouraged to contact the Office of Accessible Education at oaestaff@williams.edu.