Course Description

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, a strongly typed superset of Javascript) 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.

Keys to Success in Class

There are several things you can do to increase your chances of success in this class:

  1. Keep up with watching the lectures (don’t fall behind!)
  2. Start on the programming projects early
  3. Seek the help of the Instructor and TA’s when you run into project difficulties

Required Textbook

  1. Fundamentals of Computer Graphics, by Steve Marshner and Peter Shirley. Fourth Edition is available (for free) to Georgia Tech students, log in with your @gatech.edu email, on O’Reilly Safari.

  2. Other resources, such as the TypeScript Documentation, Version 3.5, free, available online), listed on the reading list page.

Grading

Component Grade
Warmup project 5%
Programming assignments: 65%
Quizzes 10%
Midterm exam: 10%
Final exam: 10%

Course Lectures

The lecture material for the course will be delivered synchronously in-person. It is important that you keep up with the lectures, since you will need to know these materials both for the programming projects and the exams.

COVID Accommodations

Georgia Tech is open, with in-person classes and events. To make the fall safe for everyone, we strongly encourage students to get vaccinated. We also encourage students to be regularly tested for COVID and wear masks indoors, whether they are vaccinated or not. The risk of spreading or catching COVID is higher for larger gatherings in indoor spaces. (See the COVID-19 Event Risk Assessment Planning Tool for a data-driven estimate by location of the risk for different sized events for vaccinated and unvaccinated individuals.)

To support students who cannot (or would prefer not to) attend class, we plan to stream and record the lectures on our class Teams site. We will do our best to stream and record each lecture, hopefully there will not be any technology issues in the classroom. (In the event a lecture isn’t streamed or recorded, the professor will record it again after class.)

If attendance is required for a meeting period, we will give advanced notice and reminder via Canvas announcements, and mark the lecture as required on the schedule.

For those that choose to attend class, the recordings will also be useful for studying or reviewing concepts discussed in lecture.

The instructor will not be able to monitor Teams chat for questions while teaching, although TAs (or even other students) are encouraged to relay questions.

Do not share the recordings outside the class. The standard Georgia Tech rules for class recordings apply: recordings of class lectures are only for the student’s personal use in study and preparation related to the class. The student may not share these recordings with any other person. The student acknowledges that the recordings are sources, the use of which in any academic work is governed by rules of academic conduct at Georgia Tech, in addition to federal copyright laws.

Programming Projects

Computer graphics is learned best by programming. Each student will complete four or five medium-sized programming projects, written in an object-oriented superset of Javascript called Typescript. At the instructor’s discretion, some of these five projects may be broken into two separate sub-parts that are due on different days. There will be one additional warm-up project handed out during the first week of class, and each student must do this warm-up project entirely on their own. For all of the other projects, students may talk with one another about any of the concepts required for the programming projects, but each student must perform the actual programming of this assignment on their own. Students must write all of the code for each assignment themselves without any form of code sharing by electronic, written, verbal or any other means. The only code from others that may be used in these assignments are those that are given by the instructor. Note that it is impossible to get a good grade in this course without completing all of the programming assignments.

Quizzes and Exams

We intend to have regular quizzes, hopefully as many as 1 per week. The quizzes are intended to reinforce the material covered in the readings and lectures, and will be administered on Canvas. We will drop the two lowest quiz grades at the end of the semester.

We intend to have two exams (midterm and final), equally waited, each covering half the semester material. The final will only cover the material after the midterm. These may change to an online format, or multiple smaller exams, depending on how the semester (and pandemic) progresses. You will be given advance notice if these exam plans change.

Collaboration and Web Resources

All assignments in this class are individual projects and should represent your work, unless otherwise noted on the assignment.

Asking for help with the various languages (e.g., Typescript, Javascript, etc.), tools (e.g., Visual Studio, node, npm, etc.) and SDKs/APIs (e.g., WebGL, etc.), as well as discussing general strategies and approaches for how to accomplish certain things, is fine on these assignments; as long as the solution you create and turn in is yours. For example, you can get a pointer on how to implement something, but you should then do the implementation yourself.

If in doubt, ask.

Contacting the Instructor and TAs

The instructor and TAs are available via email and Teams. 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.

Laptops

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.

Late Policy

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.

Comments