Course Overview
Course Description
Content
Fundamental concepts of computer graphics. Topics include hardware and software systems, scan conversion of graphics primitives, color and color perception, modeling of curves and surfaces, clipping, antialiasing, model-view and projection transformations, light and shading, and hidden surface removal.
Background
As a student, learning computer graphics helped me reason in higher dimensional spaces relevant for machine learning and data visualization. As a graduate student, I worked on a 3D interactive visualization of the Earth (before Google Earth) requiring efficient data structures and algorithms for accessing the relevant parts of the model based on the camera's position and view direction. This course applies numerical linear algebra to quickly create a 2D image from virtual camera's position and orientation using a 3D model.
Structure
There will be homework assignments, programming assignments, and in-class quizzes.
Objectives
- get comfortable with the mathematics of computer graphics,
- learn some fundamental algorithms for computer graphics, and
- write computer programs to render 2D images from 3D models.
Instructor Information
Biography
Dr. Parry grew up in Indiana, went to college at Univ. of Virginia, and graduate school at Georgia Tech. His research interests include artificial intelligence, date mining, and visualization, especially applied to music, sports, and education. He prefers teaching and learning when it can be motivated by challenging and interesting problems.
Course Requirements
Materials
Required
- Fundamentals of Computer Graphics, Fifth Edition by Steve Marschner & Peter Shirley, A K Peters/CRC Press, 2021.
Supplemental Materials
- OpenGL Red Book
- Vector Math for 3D Computer Graphics (Cent. Connecticut State)
- 3D Math Primer for Graphics and Game Development by Fletcher Dunn & Ian Parbery, 2011
Assignments
Homework
Homework assignments will be graded by in-class quizzes.
Programming assignments
Programming assignments will write code to render 3D scenes as 2D images.
Programming quizzes
You will explain what your code does on an in-class quiz or in-person code review.
Grading & Policies
Course Policies
Attendance Policy
This class meets in person and attendance is mandatory; unexcused absences will deduct 1% from the final grade.
If you are sick, please stay home.
Statement on Student Engagement with Courses
In its mission statement, Appalachian State University aims at "providing undergraduate students a rigorous liberal education that emphasizes transferable skills and preparation for professional careers" as well as "maintaining a faculty whose members serve as excellent teachers and scholarly mentors for their students." Such rigor means that the foremost activity of Appalachian students is an intense engagement with their courses. In practical terms, students should expect to spend two to three hours of studying for every hour of class time. Hence, a fifteen-hour academic load might reasonably require between 30 and 45 hours per week of out-of-class work.
Printable PDF of the Statement of Student Engagement with Courses
Since our class is a 3-hour class, you should expect to spend at least 9
hours per week outside of class. Because programming can be more
time-consuming than studying things in other disciplines, that amount
of time should be considered a minimum.
Instructor Responsibilities
I will vigorously pursue knowledge and share my learning process with you. Just like debugging, a scientific approach to learning nearly always provides a path forward. I will be accessible during class, office hours and over email. If you need to meet outside of those times, email me to set up an appointment. I really do want this class to succeed. So, please send me your comments, positive or negative, that will help improve the course.
Academic Integrity
All work that you submit in this class must be your own, written directly by you. You may use authoritative sources as reference and produce derivative works as long as you cite the source as a comment, including a direct link to the example. Authoritative sources include the textbooks for this class and their associated GitHub repositories, as well as the official documentation for the libraries we use in class. Undocumented features will not be permitted.
AI-based Assistance
Students are allowed to use advanced automated tools on assignments in this course as long as they comply with the Academic Integrity policy above. (See ai.appstate.edu for a list of such tools licensed by App State.) In this class, students may use the University licensed versions of Copilot, Gemini, and NotebookLM.
Our classroom policy is adopted from Georgia Tech:
We treat AI-based assistance, such as ChatGPT and Copilot, the same way we treat collaboration with other people: you are welcome to talk about your ideas and work with other people, both inside and outside the class, as well as with AI-based assistants.
However, all work you submit must be your own. You should never include in your assignment anything that was not written directly by you without proper citation.
Including anything you did not write in your assignment without proper citation will be treated as an academic misconduct case. If you are unsure where the line is between collaborating with AI and copying AI, we recommend the following heuristics:
Heuristic 1: Never hit “Copy” within your conversation with an AI assistant. Do not copy your own work into your own conversation, and do not copy anything from the conversation back into your assignment.
Instead, use your interaction with the AI assistant as a learning experience, then let your assignment reflect your improved understanding.
Heuristic 2: Do not have your assignment and the AI agent open at the same time. Similar to the above, use your conversation with the AI as a learning experience, then close the interaction down, open your assignment, and let your assignment reflect your revised knowledge.
This heuristic includes avoiding using AI directly integrated into your composition environment (IDE): just as you should not let a classmate write content or code directly into your submission, so also you should avoid using tools that directly add content to your submission.
Deviating from these heuristics does not automatically qualify as academic misconduct; however, following these heuristics essentially guarantees your collaboration will not cross the line into misconduct.
ASU Academic Integrity Statement
Appalachian State University's Academic Integrity Code is designed to create an atmosphere of trust, respect, fairness, honesty, and responsibility. The Academic Integrity Code outlines "user-friendly" procedures and mechanisms for resolving alleged violations of academic integrity. The Academic Integrity Code is the result of cooperation among Appalachian's faculty, students, and administrators, and promotes a campus dialogue about academic integrity. All members of the Appalachian State University community are responsible for promoting an ethical learning environment.
Students attending ASU agree to abide by the following Code:
- Students will not lie, cheat, or steal to gain academic advantage.
- Students will oppose every instance of academic dishonesty.
Access & Opportunity
Appalachian State University is committed to providing accessible learning environments and equal opportunity to individuals with disabilities in accordance with disability laws. Students needing appropriate accommodations or academic adjustments should contact the Office of Access & Opportunity: Disability Resources (828.262.3056 or odr.appstate.edu). Appalachian is also committed to creating and maintaining an institutional environment free of discrimination and harassment. Reports of prohibited conduct may be made to the Office of Access & Opportunity: Equal Opportunity (EO) (828-262-2144 or eo.appstate.edu). All University employees are mandatory reporters for alleged prohibited conduct. Students who receive outreach from EO are provided resources and not required to engage.
Public Sharing of Course Materials
All course materials, including video, may be subject to intellectual property protections under applicable law and regulation and are for the sole use of students enrolled in this class. Students do not have permission to copy or record materials except for personal use in the context of this class and students do not have permission to share any class materials, including videos, in any manner on any platform without the prior express permission of the faculty member teaching this course.
Course Modification
The instructor reserves the right to make minor changes to the syllabus for educational or scheduling purposes.
Grading
Your final grade will be determined by three things:- In-class quizzes and in-person code review (Q%).
- Computer programs (P%).
- Unexcused absences (A).
- Your final score is the weighted harmonic mean of Q and P, less any unexcused absences: score = N/(NQ/Q% + NP/P%) - (1% per A). The weights NQ = number of quizzes, NP = number of programs, and N = NQ + NP.
- All grades will be posted to ASULearn.
- The maximum percentage required to earn each letter grade is shown below:
-
GradeScore Required
A 93 A- 90 B+ 87 B 83 B- 80 C+ 77 C 73 C- 70 F 0
Calendar
The official sequence of class activities is maintained on ASULearn.