This course is designed to be a first course in computer graphics, and as such, no previous experience in graphics is assumed. The only knowledge that you need coming into this course is basic linear algebra and reasonable programming skills. The course will require you to use a language you may not have seen before (Typescript) and do assignments using web technology and tools.
Course topics include: output devices, line drawing, polygon scan conversion, 2D and 3D transformations, projection, hidden surfaces, color vision, surface reflectance and illumination, texture mapping, shadows, anti-aliasing, hardware graphics pipeline, GPU programming, interactive programming, ray tracing, polyhedral models, polynomial curves and surfaces, subdivision surfaces. A few additional topics will be covered near the end of the course, time permitting.
- Fundamentals of Computer Graphics, Fourth Edition, by Steve Marshner and Peter Shirley.
Available at the bookstore, or other places like Amazon.
- TypeScript Documentation, Version 3.5, free, available online)
|Programming assignments:||75% (5% for warm-up project, 70% for remaining projects)|
Collaboration and Web Resources
All assignments in this class are individual projects and should represent your work, unless otherwise noted on the assignment.
If in doubt, ask.
Contacting the Instructor and TAs
The instructor and TAs are available via email, Piazza and Discord. However, please do not expect immediate answers on any of these forums, especially nights and weekends. We will check the various forums regularly, especially 9am-4pm M-F, and endeavor as a group to reply promptly. But please remember that each of us has classes, assignments, work and other things that we will also need to focus on, so do not expect immediate replies.
That said, if a message has not been replied to in more than a day (during the week), please feel free to send a “polite reminder” if you are still in need of a reply.
Use of Code You Did Not Write Yourself
We will tell you explicitly what sample code and resources you may use in your assignments. Aside from this, you are expected to implement the “intellectual core” part of each assignment yourself; extra libraries (e.g., 2D web layout libraries like jquery, or audio libraries if you wish to add sounds) can be used if you desire, but they should not solve or simplify a core part of the assignment.
If you find an library or sample code from somewhere that you want to use (such as in a tutorial or web page or on github), you should verify with the instructor and/or TA that it is acceptable before using it, and then document what you got and where.
The goal of the assignments is for YOU to demonstrate that you have learned how to do the relevant work, not for you to piece together other peoples code.
If in doubt, ask.
Attendance and Participation
You are expected to attend class. You are expected to know anything discussed in class. If the instructor clarifies an assignment or discusses anything else during class, you are expected to know it. We will try to update the website as appropriate, but do not guarantee this will happen. If you miss class, check with your classmates to find out what you miss.
You will be required to bring a laptop to class, and the required web development technology installed on it. We will occasionally do in-class programming exercises. Please ensure you have a laptop that supports the necessary technology.
When we are not using them for in-class work, I will ask students to close them. While I am inclined to let people do what they want with their time (and grade their results), I have received complaints from students in the past about how distracting it is to have students browsing the web/facebook/twitter, watching videos, and playing games in class. And here’s a nice article about a study documenting the negative impact on performance of students who are seated near folks using laptops (even if they aren’t).
Please be courteous to your fellow students. To put this another way: I view using social media and unrelated web browsing as equivalent to talking on a phone in class. If you are doing it and bothering me or others around you, I may ask you to leave class for the day.
The grade on a late assignment will drop 5% of the maximum grade for the assignment for each day beyond the due date (e.g., if an assignment is graded out of 10, you will lose 0.5 points per day). A day ends exactly 24 hours after the assignment is due. Assignments will typically be due at 11:59pm the night before the Tuesday/Thursday they are listed on the syllabus (the exact date and time will be shown on the assignment itself).
Assignments can be submitted up to three days late. No late assignments will be accepted four days or later after the date and time that the assignment was due.