**Date:** January 27, 2025 ## 1. Contact | Name | Email | Role | | :------------------- | :------------------------ | :-------------------------- | | Dr. Umut Güçlü | [email protected] | Coordinator, Examiner, Lecturer | | Kieran Carrigg, M.Sc. | [email protected] | Teaching Assistant | | Lefteris Papadopoulos, M.Sc. | [email protected] | Teaching Assistant | | Michelle Appel, M.Sc. | [email protected] | Teaching Assistant | > Office hours will be announced at the start of the course. ## 2. Communication - **Teaching Assistants:** Contact Teaching Assistants for questions about assignments, practicums, or course content via email or during practicum sessions. - **Lecturer:** Contact the lecturer after lectures or during office hours for further inquiries. Use email only when strictly necessary. ## 3. Course Placement This course is in the **second semester** of the **Master's programme**. ## 4. Prerequisites Successful completion of: - SOW-BKI316 Applied Mathematics - SOW-BKI203 Bayesian Statistics - SOW-BKI230A Deep Learning ## 5. Code of Conduct Students are expected to adhere to the [Radboud University Code of Conduct](https://www.ru.nl/en/regulations/radboud-university-code-of-conduct), emphasizing respectful communication, academic integrity, and professional conduct. ## 6. Course Description and Learning Outcomes This course introduces computer graphics and computer vision, covering their theoretical foundations, practical techniques, and applications. Through lectures and practicums, you will explore: - **Computer Graphics:** Depth-buffered triangle rasterization, rendering pipeline, vertex and fragment shaders, and visual effects using pixel, vertex, and compute shaders within the Unity engine. - **Procedural Content Generation:** Techniques including pseudorandom numbers, Lindenmayer systems, and landscape generation. - **Computer Vision and Generative Modeling:** Generative models such as Variational Autoencoders (VAEs) and Generative Adversarial Networks (GANs). **Upon successful completion of this course, you will be able to:** - Explain the fundamental principles of computer graphics and computer vision algorithms. - Implement computer graphics and computer vision algorithms using Unity, C#, Python, and PyTorch. - Apply procedural content generation methods. - Utilize generative modeling for visual data synthesis and analysis. - Design, develop, and assess computer graphics and vision projects. - Prepare for advanced studies or careers in related fields. ## 7. Course Materials - **Lecture Slides:** Provided after each lecture. - **Practicum Resources:** Instructions and starter code will be provided. - **Online Resources:** - Unity Learn: [https://learn.unity.com/](https://learn.unity.com/) - Wave Function Collapse GitHub Repository: [https://github.com/mxgmn/WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse) - **Reference Textbooks:** - Gregory, J. (2014). *Game Engine Architecture*. CRC Press. - Millington, I. (2019). *Artificial Intelligence for Games*. CRC Press. - Foster, D. (2019). *Generative Deep Learning*. O'Reilly Media. ## 8. Assessment ### 8.1. Assignments Assignments reinforce course content through practical implementation. The assignments are: 1. Develop a Breakout game clone. 2. Create custom pixel and vertex shaders. 3. Implement compute shaders. 4. Generate a virtual landscape. 5. Apply the Wave Function Collapse algorithm. 6. Develop projects using generative models (VAEs and GANs). Detailed instructions and evaluation criteria will be released with each assignment. Submit assignments electronically via the course management system by the deadlines. Late submissions may be penalized. Feedback will be provided. ### 8.2. Examination - The final examination assesses lecture content (discussions and slides). - The exam format includes open-ended and multiple-choice questions. - A resit examination is offered. - Exam topics: Theoretical aspects of computer graphics, computer vision, procedural content generation, advanced rendering, and generative modeling. ### 8.3. Grading - Assignments: 50% - Final Examination: 50% To pass, achieve a sufficient overall grade and adhere to academic integrity standards. Plagiarism or cheating will be addressed according to university policies. ## 9. Study Load and Schedule This 6 EC course requires approximately 150–180 hours of study time: - Lectures: 24 hours (12 sessions x 2 hours) - Practicums: 24 hours (12 sessions x 2 hours) - Assignments: 24 hours (6 assignments x ~4 hours) - Final Exam: 2 hours - Self-Study: 76-106 hours (reading, review, preparation) **Course Schedule:** | Week | Date | Time | Type | Topic | | :--- | :----- | :---- | :------------ | :----------------------------------------------------------------------------- | | 5 | Jan 28 | 13:30 | Lecture | Foundations of depth-buffered triangle rasterization (Part 1) | | | Jan 29 | 17:30 | Practicum | Creator Kit: {FPS, Puzzle, RPG} (Unity) | | 6 | Feb 04 | 13:30 | Lecture | Foundations of depth-buffered triangle rasterization (Part 2) | | | Feb 05 | 17:30 | Practicum | Creator Kit: Beginner Code (Unity, C#) | | 7 | Feb 11 | 13:30 | Lecture | Foundations of depth-buffered triangle rasterization (Part 3) | | | Feb 12 | 17:30 | Practicum | Breakout clone (Unity, C#) | | 8 | Feb 18 | 13:30 | Lecture | Procedural content generation; Pseudorandom numbers | | | Feb 19 | 17:30 | Practicum | Breakout clone (Unity, C#) | | 9 | Feb 25 | 13:30 | Lecture | The rendering pipeline [video lecture] | | | Feb 26 | 17:30 | Practicum | Pixel shaders; Vertex shaders; Compute shaders (Unity, C#, ShaderLab, HLSL/Cg) | | 11 | Mar 11 | 13:30 | Lecture | N/A | | | Mar 12 | 17:30 | Practicum | Pixel shaders; Vertex shaders; Compute shaders (Unity, C#, ShaderLab, HLSL/Cg) | | 15 | Apr 08 | 13:30 | Lecture | Landscape generation | | | Apr 09 | 17:30 | Practicum | Landscape generation (Unity, C#) | | 16 | Apr 15 | 13:30 | Lecture | Lindenmayer systems | | | Apr 16 | 17:30 | Practicum | Landscape generation (Unity, C#) | | 17 | Apr 22 | 13:30 | Lecture | Wave function collapse | | | Apr 23 | 17:30 | Practicum | Wave function collapse (Jupyter, Python) | | 19 | May 06 | 13:30 | Lecture | TBA | | | May 07 | 17:30 | Practicum | Wave function collapse (Jupyter, Python) | | 20 | May 13 | 13:30 | Lecture | Generative modeling | | | May 14 | 17:30 | Practicum | PyTorch Fundamentals | | 21 | May 20 | 15:30 | Lecture | Variational autoencoders | | | May 21 | 17:30 | Practicum | Variational autoencoders (Jupyter, Python) | | 22 | May 27 | 13:30 | Lecture | Generative adversarial networks | | | May 28 | 17:30 | Practicum | Generative adversarial networks (Jupyter, Python) | | 23 | Jun 03 | 13:30 | Lecture | Q&A | | | Jun 04 | 17:30 | Practicum | Q&A | | 24 | Jun 10 | 12:45 | Digital exam | | | 28 | Jul 09 | 12:45 | Digital resit | | > **Note:** The schedule is tentative. Any changes will be communicated in a timely manner.