Before you start
- Solid C/C++ programming background (Java is ok too; you will pick up C++)
- Access to a relatively up-to-date computer (Windows, Mac OS, Linux)
- Solid high school mathematics; a review of the relevant linear algebra is included in the first segment.
What you will learn
- Understand the concepts of 3D graphics
- Write and develop programs that create images of a 3D scene with lighting
- Learn the basics of graphics programming with OpenGL and GLSL
Today, computer graphics is a central part of our lives, in movies, games, computer-aided design, virtual simulators, visualization and even imaging products and cameras. This course teaches the basics of computer graphics that apply to all of these domains.
Students will learn to create computer-generated images of 3D scenes, including flybys of objects, make a real-time scene viewer, and create very realistic images with raytracing. We will start with a simple example of viewing a teapot from anywhere in space, understanding the basic mathematics of virtual camera placement. Next, you will learn how to use real-time graphics programming languages like OpenGL and GLSL to create your own scene viewer, enabling you to fly around and manipulate 3D scenes. Finally, we will teach you to create highly realistic images with reflections and shadows using raytracing.CSE167x teaches the foundations of computer graphics.
This course runs for 6 weeks and consists of four segments. Each segment includes an individual programming assignment:
- Overview and Basic Math (Homework 0: 10% of grade)
- Transformations (Homework 1: 20% of grade)
- OpenGL and Lighting (Homework 2: 35% of grade)
- Raytracing (Homework 3: 35% of grade)
This term, students who earn a total score of 50% or greater will have passed the course and may obtain a certificate from UC San DiegoX.
What is the format of the class?
The class will consist of lecture videos, brief exercises, and homework assignments. Each of the four segments of the course will have 2-3 lectures. Each lecture includes 3-5 lecture videos, which last between 10 and 20 minutes. There will be a brief exercise after each lecture video to help you test your understanding of the material.
Your score will be determined entirely by programming assignments for which you will receive immediate autograder feedback. You may submit your assignment to the autograder multiple times; only your last submission will count.
Programming projects are to be implemented individually without copying code from other students, largely identical online resources, or previous instances of the class. However, short of posting or sharing actual explicit code, you are encouraged to collaborate and discuss problems in the discussion forums.
Will the text of the lectures be available?
Yes. All of our lectures will have transcripts synced to the videos.
Do I need to watch the lectures live?
No. You can watch the lectures at your leisure. You can "work ahead" if you want to move faster than the due dates. Conversely, you can progress at a slower pace. Please note that certificates will only be awarded to students who obtain the requisite score by turning in assignments by the established deadlines.
How much does it cost to take the course?
Nothing: the course is free. If you expect to be doing a lot of graphics programming in the future, we would recommend the OpenGL and GLSL programming guides, but it is by no means required to purchase them. There are many free online resources for these topics, and we will be posting links to them.
What computer system do I need for the course?
The course material involves C++/OpenGL/GLSL programming that is portable. We provide skeleton code for all major platforms (Windows, Mac OS, Linux). This is a modern course involving programmable shaders, but any machine built in the last few years should be adequate. We provide many compilation hints and tips, and Homework 0 is to ensure you can compile and work with the autograder. You do need some kind of C++ development environment; we provide several resources to get you started for Homework 0. In the highly unlikely event you cannot get your machine to work, you will hopefully have adequate time to find another system.
Will I learn Maya/DirectX/3D Studio Max etc.?
This is a course on the foundations of computer graphics and covers concepts, not the intricacies of a particular software package. That said, you will be able to write complex interactive and offline 3D graphics programs at the end of the course in C++, OpenGL and GLSL.
Can I contact the Instructor or Teaching Assistants?
Yes, but not directly. The discussion forums are the appropriate venue for questions about the course. The instructors will monitor the discussion forums and try to respond to the most important questions; in many cases response from other students and peers will be adequate and faster.
I have a disability (visual/hearing etc.) Can I take the course?
In most cases, yes. We provide transcripts for all lectures. Many leading computer graphics researchers have had visual impairments like color-blindness. However, this being a computer graphics course that relies on visual image comparisons, we probably cannot provide adequate support for those who are legally blind.
I have a busy schedule this fall. Can I still take the course?
The course does require about 12 hours per week of work, and the assignments (where you are given two weeks) require the time. Certificates of achievement require a passing score. Of course, you are welcome to just go through the lectures or attempt some of the assignments if you are not interested in a certificate; we hope to provide something for everyone.