1. Course Overview
1.1. Course Goal
The goal of Introduction to Computer Graphics is to provide a broad exposure to the computer graphics field in order to be prepared for follow-on study.
1.2. Course Outcomes
The following are the intended outcomes for this course:
- Students will be able to describe the history and evolution of computer graphics, both hardware and software.
- Students will be able to describe and implement 2D graphics and algorithms including: line drawing, polygon filling, clipping, and transformations.
- Students will be able to explain concepts of and techniques used in 3D computer graphics, including viewing transformations, hierarchical modeling, color, lighting and texture mapping.
- Students will be able to synthesize an interactive 3D application using a current graphics API.
- Students will be able to describe algorithms and techniques fundamental to 3D computer graphics and explain the relationship between the 2D and 3D versions of such algorithms. Students will be able to reason about and apply these algorithms and techniques in new situations.
1.3. Course Prerequisites
The prerequisites for this course are:
- MATH 241 (Linear Algebra)
- CSCI 243 (The Mechanics of Programming)
- CSCI 250 (Concepts of Computer Systems)
or permission of the instructor. At a minimum, you should be familiar with traditional data structures (linked lists, trees, etc.), and should have some familiarity with matrix and vector mathematics, geometry, and trigonometry.
Please contact me as soon as possible if you haven't reached this level. If you haven't taken these courses (or their equivalents), there is a very good chance that you don't have sufficient programming experience to allow you to succeed in this course.
There is no required textbook for this course. However, much of the material in the course is covered in this optional book, available at the bookstore:
- Donald Hearn, M. Pauline Baker, & Warren R. Carithers, Computer Graphics with OpenGL (Fourth Edition), Prentice-Hall, 2011, ISBN-13: 9780136053583
Other potentially useful references are:
- John Kessenich, Graham Sellers, and Dave Shreiner, OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V, ninth edition, Addison-Wesley Professional, 2017, ISBN-13: 9780134495491
- Graham Sellers, Richard S Wright, and Nicholas Haemel, OpenGL SuperBible: Comprehensive Tutorial and Reference, seventh edition, Addison-Wesley Professional, 2016, ISBN-13: 9780672337475
- Randi J. Rost, Bill M. Licea-Kane, Dan Ginsburg, John M. Kessenich, Barthold Lichtenbelt, Hugh Malan, and Mike Weiblen, OpenGL Shading Language (Third Edition), Addison-Wesley Professional, 2010, ISBN-13: 9780321637635
The programming assignments for this course must be done in C/C++ or python. OpenGL was designed for use with C and C-like languages; it can be used easily with C++, or with true object-oriented languages like Java, but it doesn't take advantage of any of the object-oriented capabilities of those languages, and there are a few minor annoyances that you will run into when using OpenGL and its support libraries with them.
Your final grade will be based on two "exam projects", a series of out-of-class labs, and homework that will require small writeups. The distribution between these groups is:
Lab assignments will be announced in class and posted to the course web site along with their due dates. They will involve the use of either the OpenGL graphics libraries or similar libraries; none will require features that aren't supported by the library versions we have installed on the CS Ubuntu® lab machines. All labs will be weighted equally in the calculation of your final grade.
The minimum acceptance test for programming assignment submissions is that they must compile and link cleanly (i.e., without fatal compilation or linking errors).
In lieu of traditional exams, a portion of your grade will be based on two larger programming projects, one due at the middle of the term and one due during finals week. Both projects will be weighted equally in the calculation of your final grade. It is expected that the code created for the smaller programming assignments will be reused and incorporated into the code for these projects.
4. RIT and CS Department Policies
4.1. Academic Conduct
Academic dishonesty will be dealt with in accordance with DCS and RIT policies.
- RIT's Honor Code (from the RIT Student Policy Library).
A general statement that sets standards of behavior for all members of the RIT community.
- RIT's Academic Integrity Policy (from the RIT Student Policy Library).
Defines the basic forms of academic dishonesty (cheating, duplicate submission, and plagiarism) and explains the official RIT policy regarding academic dishonesty.
- The DCS Policy on Academic Integrity (PDF).
Explains the official Department of Computer Science policy regarding incidents of academic dishonesty.
4.2. Section 504 of the Rehabilitation Act
RIT is committed to providing reasonable accommodations to students with disabilities. If you would like to request accommodations such as special seating or testing modifications due to a disability, please contact the Disability Services Office. It is located in the Student Alumni Union, Room 1150; the Web site is
www.rit.edu/dso. After you receive accommodation approval, it is imperative that you see me during office hours so that we can work out whatever arrangement is necessary.
4.3. Gender-Based Discrimination and Harassment
RIT is committed to providing a safe learning environment, free of harassment and discrimination as articulated in our university policies located on our governance website. RIT's policies require faculty to share information about incidents of gender based discrimination and harassment with RIT's Title IX coordinator or deputy coordinators, regardless whether the incidents are stated to them in person or shared by students as part of their coursework.
If you have a concern related to gender-based discrimination and/or harassment and prefer to have a confidential discussion, assistance is available from one of RIT's confidential resources on campus (listed below).
- The Center for Women & Gender: Campus Center Room 1760; 585-475-7464; CARES (available 24 hours/7 days a week) Call or text 585-295-3533.
- RIT Student Health Center: August Health Center, 1st floor; 585-475-2255.
- RIT Counseling Center: August Health Center, 2nd floor, room 2100; 585-475-2261.
- The Ombuds Office: Student Auxiliary Union/Room 1114; 585-475-7200 or 585-475-2876.
- The Center for Religious Life: Schmitt Interfaith Center, room 1400; 585-475-2137.
- NTID Counseling & Academic Advising Services: 2nd Floor Lynden B. Johnson; 585-475-6468 (v), 585-286-4070 (vp).
5. Other Course Policies
- Disclaimer: Normally, the number, type, and relative weights of assignments will not change from those specified in the syllabus and other course documents. However, I reserve the right to make changes to these or any other facet of the course, at my discretion, based upon the events of the term; if such a change must be made, you will be notified in class, via electronic mail, and on my web page for the course.
- Course content: This is a basic computer graphics course. Therefore, although you will be using your creative, artistic talents in doing portions of your programming assignments, much of the work will involve programming the underlying graphics routines.
- Withdrawing: During the add/drop period, you may drop this course and it will disappear from your transcript. After that time, you can only withdraw from the course; the course will appear on your transcript with a grade of
Deadline to add/drop: Tuesday, January 23 , 2018
Deadline to withdraw: Friday, April 6, 2018
- Warning: This course requires a significant amount of programming. I strongly suggest that you very carefully consider whether or not you should take any other programming courses along with it.
- Coursework: Unless otherwise specified in the assignment, all work you submit for grading must be your own. Code or ideas (specific algorithms, optimizations, etc.) obtained from or inspired by other sources must be properly attributed.
- Due dates: I select due dates for assignments in order to provide adequate time to complete the assignments, while allowing sufficient remaining time in the term to complete the remaining assignments. Should it become necessary, I reserve the right to change due dates; this, in turn, may require modification of due dates for other assignments during the term, or (in some cases) elimination of some assignments.System downtime on or near the due date for an assignment is not usually grounds for an extension. An exception to this is extended system downtime (on the order of multiple days, not just hours); if this occurs, I may consider modifying a due date, but this is not guaranteed.
- Documentation and Programming Style: I expect students to follow some reasonable form of programming style. I don't mandate a specific style; for the most part, it's more important that your code be neat, clear, and (above all) consistent. Here are the major things I'm looking for:
- reasonable length functions
- reasonable length lines of code
- program file headers describing the contents of the file along with your name
- function and class header documentation describing purpose, parameters, return values, etc.
- in-line documentation of complex sections of code
- clear and consistant indentation
- Make sure your name is on every document and file you send to me!
An example style standard for C++ from the old CS4 course can be found online in HTML format. An example for Java from CSCI-142 is available in text form; a sample program is also available. A similar set of recommendations for C programs from CSCI-243 is available in PDF format.
- Programming assignment submission: Unless otherwise indicated in the assignment, programming assignment solutions are to be submitted electronically using a mycourses dropbox by 23:59:59 (11:59:59pm EST) on the specified due date. Any day of the week is a valid due date. Solutions submitted through any other method will be ignored.Your submissions may be graded by a grader. If so, and you have complaints about your grade, first talk to the grader. If you are still convinced there is a problem and you are unable to convince the grader, come and see me.
- Extensions: Assignments are expected to be submitted on time, as specified in the assignment. Occasionally, circumstances arise which make this difficult for lab assignments. The following rules apply to the use of these extensions:
- To request a one-day extension, send email to me requesting the extension before the assignment is due; you cannot retroactively request an extension. The date and time of the request will be determined by the timestamp on the message as it is delivered to my mailbox.
- Regrading: Once a grade for an assignment has been returned to the class, you have one week in which to request a regrade or to bring any other questions about your grade to my attention. No regrading will be done after that time.
- Final Exam: RIT has an official set of Final Examination Policies which detail procedures related to the scheduling of final exams. Most important among these is the procedure to be followed by students who wish to request a change in date or time for an exam.
- Assignment of final grades:
I use the percentage-based grading scale shown at right in this course.
I reserve the right to alter these division points as I see fit at the end of the term if I believe it to be necessary, based on my overall evaluation of individual or class performance and effort.
Score Range Grade n ≥ 95%
90% ≤ n < 95%
85% ≤ n < 90%
80% ≤ n < 85%
75% ≤ n < 80%
70% ≤ n < 75%
60% ≤ n < 70%
n < 60%
- Course evaluations: RIT uses SmartEvals, a web-based, Institute-wide system for student rating of teaching effectiveness. SmartEvals allows you to evaluate each of your instructors using a uniform platform and common look and feel experience across all of your courses. Access to each of your course rating forms will be open weeks 13 through 15 of the semester; each form should take 10 or fewer minutes to complete. Information about this system will be shared with you via email and a dedicated website.I take your comments seriously and your responses allow me to reflect on my teaching and course delivery, I encourage you to participate in SmartEvals for this course so as to achieve as close to a 100% participation rate as possible. In keeping with Institute guidelines, I do not offer extra credit or points as incentives to complete this evaluation.
Portions of the material in this course are based on courses offered by other faculty, notably Warren Carithers, Nan Schaller, Joe Geigel, Reynold Bailey, Sean Strout, and Thomas Kinsman, and are used with their permission.