[Education] Proposal for the advanced graphics course

Hi All,

I’m planning a new course for the last year of the undergraduate studies and need suggestions from the community in order to make it better. It would be a “journey through the 3D graphics pipeline” with all details needed to program advanced applications using OpenGL and GLSL. The theoretical part will be broader, but the implementation will focus on GLSL. It should be one semester course at the end of the undergraduate studies. The preliminary plan of the course (and the text-book) is as follows:

3D Graphics Pipeline

[li]Modern GPU Architectures (short history, NV Kepler, AMD Cayman)[/li][li]GPU Programming (shaders vs. kernels, GLSL, OpenCL, CUDA)[/li][li]3D Pipeline (programable and FF stages)[/li][li]CPU/GPU Communication (buffer objects, attributes, uniforms, VAO, …)[/li][li]Vertex Processing[/li][li]Transform Feedback[/li][li]Tessellation[/li][li]Geometry Processing[/li][li]Clipping and Rasterization (this topic should cover other FF)[/li][li]Fragment Processing[/li][li]Fetching Fragments (FF, Z-bufer, FBO, render to texture )[/li][li]Non-graphical calculation[/li][li]Synchronization and Interoperability (multithreading, multicontext execution, sync objects, GL-D3D Interop., GL-OpenCL Interop, GL-CUDA Interop)[/li][li]Debugging and Profiling[/li][/ol]

The number of topics should be from 12 to 14 (corresponding the number of weeks the course will last).

I need advices for the following:

  • What is the most appropriate name for the course?
  • What topics are not covered but are important in your opinion?
  • Do you have a similar course and what are yours experience in teaching such a course?

Thank you in advance!

Are you looking at compute shaders or is that too new?

The chapter/topic 12 is devoted to CS/CL/CUDA, but I have to take a deeper look at CS. Also topics 2 and 13 will cover the basics of CL/CUDA.
There should be no “too new” features. :wink:

where is this course presented? Any possibility of an outsider taking this course online?

Aleksandar: I’d switch points 2 and 3. The rationale is that you introduce the pipeline before you introduce shaders influence the output of the pipeline stages.

The course could be titled like your usual tutorial since it’s the simple truth: Graphics programming using modern OpenGL.

I don’t know if your title should get more crazy and I know that most beginning students don’t have any clue about OpenGL anyway. :wink:

The course is not presented yet. I need to make a proposal for the course. It should pass accreditation first, and then it needs popularity among students in order to be held as a regular course at the university. It is too early to speak about online version, but the material will be accessible through our CMS certainly.

The topic 2 is an introductory one. I’m planning to talk about APIs and some abstract concepts needed to program GPUs. Yes, it is obvious that the pipeline stages must be mentioned in the topic 2, but just for the purpose of understanding concepts. Topic 3 will give a complete overview of the pipeline and will be the introduction of the next topics.

Although sounds reasonable, mentioning a concrete API in the title of the university course is not a wise decision. Of course, more than 80% of the course will use OpenGL exclusively, but I wouldn’t expose that in the title. Maybe I’ll turn to D3D some day. :wink: Just kidding! 3D Graphics Programming, or 3D Graphics Pipeline Programming, or … Can you see why I need your help? :slight_smile: Thanks for the suggestion!

My students do know what OpenGL means. :slight_smile: A fixed functionality (legacy) OpenGL is well covered in the course named Computer Graphics. This course will come after Computer Graphics.

Introduction to Realtime Graphics, perhaps?