## MTAT.03.015 Computer Graphics

**Lectures**: Tuesday 14:15, Delta – 1021.**Practices**:- Basic I (JavaScript), Basic II: Wednesday 14:15, Delta – 2006.
- Basic I (C++), Tools: Wednesday 16:15, Delta – 2006.

**CGLearn**:**cglearn.eu****Discord**: Log in to see the link.**Contact**:- Raimond Tunnel (jee7@ut.ee)
- Mathias Plans (plans@ut.ee)
- Ats Kurvet (akurvet@ut.ee)
- Jaanus Jaggo (jjaggo@ut.ee)

**Other CGVR courses**

The course presents an introduction to the basic methods of computer graphics. The primary focus is on 3D graphics (geometry transformations, projection, lighting, texturing, raytracing). The course is organized in a mixed bottom-up top-down approach. We start with the basic concepts in the Basic I module. Mid-semester students have an opportunity to continue with the Basic II module or rather get to know high-level modeling software (Blender) and game engines (Unreal Engine) in the Tools module.

By the end of the course, students should have a solid understanding of the layout and use of a modern graphics system. Also, they should be able to implement an OpenGL/WebGL-based application with rendering modifications or use high-level software (Unreal Engine) to achieve the same result.

The course requires some **previous experience** with linear algebra and basic programming skills in either C/C++ or JavaScript. In the first half of the semester, practice sessions will cover Basic I topics and will be in C++ and JavaScript. In the second half of the semester, one practice session group will cover Basic II topics, and the other group will learn to use Blender and Unreal Engine.

### Grading

To successfully complete the course you can:

**Read the material in CGLearn and participate in the lectures.**

Lectures are meant to provide you with a semi-interactive format to learn about computer graphics, ask questions, and discuss. We hope the lectures will be fun and give you a better understanding of the material (vs solitary study). CGLearn environment should have enough material and examples for you to understand the concepts more clearly and thoroughly at home. We recommended reading the corresponding topic in CGLearn before the lecture to grasp the lecture material better.**Solve tasks.**

There will be a number of programming tasks under each topic in CGLearn. Practice sessions are there to help you with those tasks. This means that we will try to explain the concepts behind the tasks and perhaps solve some of them together. Solutions to tasks should be uploaded in CGLearn.**Complete a programming project.**

To try applying and extending the knowledge you gain in the course, the students are required to complete a small-scale programming project of their own choice in teams of 2-3 (up to 4 in exceptional cases) people. You will get 30 points but can lose them by missing the deadlines.**Pass a written exam.**

The exam will consist of about 20-30 short questions, aiming to test the overall understanding of the theoretical material covered during the course. For those who attend the lectures and read material from CGLearn, it will hopefully be trivial to solve. The maximum score for the exam is 30 points.**Grab the open mic bonus.**

You can earn additional 2 points for doing a 30-minute presentation in the open mic lecture. Only 3 students can get these points. The topic should be a computer graphics one not covered in the course by other lectures.- This presentation can substitute absence in the project presentation (assuming your teammates vouch for your work).

The final score is obtained as the sum of all points (i.e., the nominal amount is 40p tasks + 30p project + 30p exam. There will be plenty of opportunities for bonus points as well). The point score is then traditionally mapped to the F-A scale: (∞, 90) = A, [90, 80) = B, etc. Less than 5 points will result in you being marked absent. Your earned grade is shown to you in CGLearn during the course.