Welcome to CS425 Computer Graphics One!
This course introduces students to the field of Computer Graphics (aka CG). Over the past 50 years, the use of CG has grown exponentially. It is now an essential part of digital media, entertainment, interactive applications, and popular culture at large. While much of this growth has been driven by advances in graphical processing hardware, the foundations of the field lie in the theory, math, and algorithms that power the modeling of 3D geometry, surface appearance, and light.
The course will introduce students to these core CG concepts. We will cover a variety of topics, including algorithms for real-time rendering, scene transformations, and light modeling. The course begins with a refresher of the fundamentals of linear algebra. We will then explore geometric matrix-based transformations, graphics pipelines, shading models, texturing, and ray tracing. We will make use of JavaScript and WebGL as the programming language and graphics library to apply these concepts.
TA: TBD
Office hours: TBD
We will meet in CDRLC 1402.
CS251 Data Structures is required before taking this course. Previous experience with JavaScript will be helpful (although not required). It is expected that students are willing and able to learn these programming tools as needed within a few weeks.
Required: Interactive Computer Graphics, 7th edition, Pearson (ICG)
This book will cover the underlying theory and principles for the class. We will use this book because it utilizes WebGL in its examples, which makes them directly usable in the course. We will assign weekly reading from this book.
That said, if you already have a copy of Fundamentals of Computer Graphics, 4th edition or higher (FCG), and don't want to purchase ICG, you may utilize that book for the course. To accommodate either book in the course, we will list relevant chapters for reading from both books for each week.
I expect students to read the assigned chapters for the week. While the lectures will explain the core concepts, the slides alone cannot cover everything in the book. Therefore, it is required and expected that students read the assigned materials. Skipping on readings will leave gaps in your understanding and prevent you from successfully completing the course and its assignments.
There are other online resources that you may wish to consult. These websites provide tutorials, examples, and references on using HTML, JavaScript, and WebGL:
| Week (Date) |
Topic | Assigned Chapters | Slides |
|---|---|---|---|
| 1 (Aug 24) |
Intro, raster images, color |
ICG: 1 FCG: 1, 2, 3 |
01-intro.pdf 02-color.pdf |
| 2 (Aug 31) |
Javascript, web development, and WebGL |
ICG: 2, 3 FCG: N/A |
03-web.pdf |
| 3 (Sep 7) |
Rendering pipeline, and WebGL (No class Mon Sep 7 — Labor Day) |
ICG: 2, 3 FCG: N/A |
|
| 4 (Sep 14) |
Linear algebra and transformations |
ICG: 4 FCG: 5, 6 |
|
| 5 (Sep 21) |
Viewing transformations |
ICG: 5 FCG: 7 |
|
| 6 (Sep 28) |
Rendering pipeline |
ICG: 2, 8 FCG: 8, 17 |
|
| 7 (Oct 5) |
Light and shading |
ICG: 6 FCG: 10, 18 |
|
| 8 (Oct 12) |
Texture mapping |
ICG: 7 FCG: 11 |
|
| 9 (Oct 19) |
Shadows |
ICG: 5.10, 5.1 FCG: 11.4.4 |
|
| 10 (Oct 26) |
Ray tracing |
ICG: 12 FCG: 4 |
|
| 11 (Nov 2) |
Antialiasing and transparency |
ICG: 8.12 FCG: 8.3 |
|
| 12 (Nov 9) |
Curves and surfaces |
ICG: 11 FCG: 12.1, 15 |
|
| 13 (Nov 16) |
Spatial data structures |
ICG: 9 FCG: 12 |
|
| 14 (Nov 23) |
Thanksgiving break | ||
| 15 (Nov 30) |
Modern rendering techniques, review for final exam | FCG: 11.3, 20.1 | |
| 16 (Dec 7) |
Final exam |
There will be one final exam. You are expected to demonstrate ability to use critical thinking in explaining (and applying) the material covered in class and assignments. Make sure you are as detailed and thorough as possible.
There will be an initial WebGL assignment to make sure you are familiar with the main components of web development. After that, there will be three main assignments covering different aspects of computer graphics. You must use Javascript or Typescript with WebGL to complete your assignments. Do not use any high-level library, such as Three.js, unless clearly specified in the assignment.
We will use GitHub Classroom for the assignments. Assignments will be followed by short in-class quizzes; these quizzes will provide an opportunity for you to demonstrate your understanding of the basic concepts covered in the assignments. Assignment grades will be weighted by the scores of these short quizzes.
Graduate students enrolled in the course will be required to complete additional tasks in the assignment (e.g., implementing additional features). Those will be specified in the assignment details. Undergrads do not need to complete those grad-only tasks, but may do so for extra credits.
Late submissions will be penalized at a deduction rate of 20% per day; After 5 days you will have a maximum grade of zero. For fairness, no further extensions will be granted, except under extraordinary emergencies.
UIC is an academic community committed to providing an environment in which research, learning, and scholarship can flourish and in which all endeavors are guided by academic and professional integrity. In this community, all members including faculty, administrators, staff, and students alike share the responsibility to uphold the highest standards of academic honesty and quality of academic work so that such a collegial and productive environment exists. As a student and member of the UIC community, you are expected to adhere to the Community Standards of integrity, accountability, and respect in all of your academic endeavors. When accusations of academic dishonesty occur, the Office of the Dean of Students investigates and adjudicates suspected violations of this student code.
Unacceptable behavior includes cheating, unauthorized collaboration, fabrication or falsification, plagiarism, multiple submissions without instructor permission, using unauthorized study aids, coercion regarding grading or evaluation of coursework, and facilitating academic misconduct. Please review the UIC Student Disciplinary Policy for additional information about the process by which instances of academic misconduct are handled towards the goal of developing responsible student behavior. By submitting your assignments for grading you acknowledge these terms, you declare that your work is solely your own, and you promise that, unless authorized by the instructor or proctor, you have not communicated with anyone in any way during an exam or other online assessment. Let's embrace what it means to be a UIC community member and together commit ourselves to the values of integrity. Please familiarize yourself with the UIC Department of Computer Science Student Code of Conduct.
You are welcome to consult online resources while working on this course. Searching the web, reading documentation, following tutorials, and studying code samples (e.g., MDN, WebGL 2 Fundamentals, Stack Overflow) is a normal and useful part of learning graphics programming. If you adapt a non-trivial code sample that you found online, cite the source in a comment next to the code.
You may not, however, use generative AI tools to solve the assignments. This includes (but is not limited to) ChatGPT, Claude, Gemini, GitHub Copilot, Cursor, and any similar code-generating assistant, and it applies whether the tool produces JavaScript, shader code, or written answers, in whole or in part. The assignments exist so that you develop the ability to reason about geometry, transformations, and shading on your own. Outsourcing that reasoning to a model defeats the purpose of the course and will leave you unprepared for the quizzes and the final exam.
Submitting AI-generated work as your own is a violation of academic integrity and will be handled under the policy above. Keep in mind as well that assignments are followed by short in-class quizzes on the concepts they cover: if you cannot explain the work you submitted, your assignment grade will reflect that.
If you are unsure whether a particular tool or a particular use of it is acceptable, ask me before you use it.
UIC values diversity and inclusion. Regardless of age, disability, ethnicity, race, gender, gender identity, sexual orientation, socioeconomic status, geographic background, religion, political ideology, language, or culture, we expect all members of this class to contribute to a respectful, welcoming, and inclusive environment for every other member of our class. If there are aspects of the instruction or design of this course that result in barriers to your inclusion, engagement, accurate assessment or achievement, please notify me as soon as possible.
UIC is committed to full inclusion and participation of people with disabilities in all aspects of university life. If you face or anticipate disability-related barriers while at UIC, please connect with the Disability Resource Center (DRC) at drc.uic.edu, via email at drc@uic.edu, or call (312) 413-2183 to create a plan for reasonable accommodations. In order to receive accommodations, you will need to disclose the disability to the DRC, complete an interactive registration process with the DRC, and provide me with a Letter of Accommodation (LOA). Upon receipt of a LOA, I will gladly work with you and the DRC to implement approved accommodations.
This syllabus is intended to give the student guidance in what may be covered during the semester and will be followed as closely as possible. However, as the instructor, I reserve the right to modify, supplement and make changes as course needs arise.