Summary: This introductory computer graphics course introduces students to the mathematical, physical and technical concepts behind creating synthetic computer generated images. Topics include digital images, lighting and shading models, 2-D and 3-D affine geometry, 3-D viewing, lighting and shading models, curves and surfaces, human visual perception and ray tracing technologies. Homework assignments will exercise the concepts seen in class by using the modern GPU-based OpenGL (http://www.opengl.org) graphics pipeline and Qt (https://www.qt.io) for building GUI-based programs.

Requirements: Practical experience with Python (for use with OpenGL)Some knowledge of basic linear algebra (i.e., vector and matrix multiplication, dot and cross products) is desired.

Hours: Tue 2-3:40PM, Thu 4-5:40PM (Room 142B) 

Instructor: Marcel Parolin Jackowski (mjack@ime.usp.br)

Teaching assistant (TA): To be announced.

Textbook: Shirley & Marschner, Fundamentals of Computer Graphics, 3rd/4th edition

Questions, help, discussion: The instructor and the TA is available to answer questions and discuss topics related to the class by appointment. For technical related questions, please first consult with the TA.

Academic integrity: We assume the work you hand in is your own, and the results you hand in are generated by your program. You are welcome to read whatever you want to learn what you need to do the work, but we do expect you to build your own implementations of the methods we are studying. If you are ever in doubt, just include a citation in your code or report indicating where some idea came from, whether it be a classmate, a web site, another piece of software, or anything. School coursework and other factors can put you under a lot of pressure, but that is never a reason for dishonesty. If you feel you can't complete the work on your own, come talk to the professor or the TA, and we can help you figure out what to do. Think before you hand in! 

Collaboration: You are welcome to discuss projects among yourselves in general terms. But when it comes to writing up the homeworks or implementing the projects, you need to be working alone (or only with your partner if you are doing a project as a pair). In particular, it is never OK for you to see another student's homework writeup or another team's program code, and certainly never OK to copy parts of one person's or team's writeup, code, or results into another's, even if the general solution was worked out together. 

Student assessment: 3 programming assignments and 3 written exams. You are allowed to bring one A4 piece of paper with whatever notes you think may help you. For more details on the evaluation please check the slides of the first lecture.