CS 315 Computer Graphics - Fall 2013
Course Syllabus
Instructor
Joel Ross
email:
jross@pugetsound.edu
office:
Thompson 405
phone:
x3558
Class Meetings
Mon/Wed/Fri 2:00pm to 2:50pm (Thompson 381)
Website:
http://cs.pugetsound.edu/~jross/courses/cs315/
Moodle:
https://moodle.pugetsound.edu/moodle/course/view.php?id=6311
Submissions:
for Windows,
map
\\hedwig\jross_cs315
;
for Mac,
connect to smb://hedwig/jross_cs315
(instructions)
Office Hours
Mon, Tue, Wed, Fri: 10:00am to 11:00am; Thu 11:00am to 12:00pm; whenever my office door is open, or by appointment.
Course Description
This course is an introduction to generating and processing images with a computer. The emphasis is on the design of computational systems for generating two- and three-dimensional graphics and for working with graphical images. Students study the mathematical theory underlying computer generated graphics. While this course will cover the traditional computer graphics rendering pipeline (scan conversion, clipping, transformations, projections, lighting, texture mapping, etc), we will also discuss applications of graphical concepts, including animation, graphical user interfaces, and data visualization. This is a programming-intensive course.
Prerequisite: CSCI 261 with a grade of C- or better.
Textbook
This course has no required textbook. However, there are a couple of recommended texts that will provide useful references:-
Shirley et al., Fundamentals of Computer Graphics, 3rd Edition, CRC 2009.
(Amazon)
This textbook contains many of the implementation and mathematical details we will cover or gloss over in lecture, so can be worth reviewing. -
Shreiner et al., OpenGL Programming Guide, 8th Edition, Addison-Wesley, 2013.
(Amazon)
This text is a foundational reference for OpenGL (though we will be using OpenGL ES, a subset of the full language), and will be even more valuable if you do graphics programming beyond this course. Note that the 2nd edition is available online for free, though is organized around the fixed-function pipeline rather than the programmable shader pipeline we will be using. -
Angel & Shreiner, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, 6th Edition, Addison-Wesley, 2012.
(Amazon)
Another decent textbook covering many of the topics we will address.
Additional readings will be made available on Moodle (see the course calendar).
Resources
- CS315 Essential Math handout A review/primer of some of the basic mathematics we will be using in this course.
- Android SDK Installation instructions. YOU WILL NEED TO DO THIS FIRST.
- Android API reference References and tutorials for developing Android applications.
- OpenGL ES API Official documentation for OpenGL ES 2.0.
- Android OpenGL Guide Google's tutorial for using OpenGL in Android.
- Learn OpenGL ES Another set of tutorials for programming OpenGL in Android.
- GLSL ES API Official documentation for GLSL ES.
- ShaderToy An online tool for practicing and experimenting with GLSL.
- WebGL Playground An site for practicing with WebGL, which is a JavaScript implementation of OpenGL ES.
- Learning Modern 3D Graphics Programming An online textbook for learning OpenGL (full version, in C++).
There are many, many more resources for learning graphics programming online. If you find a good one, let me know and I'll add it to the list!
Course Goals
After completing this course, a student will be able to:
- Understand the modern graphics pipeline and utilize a current graphics API (OpenGL ES).
- Develop graphical applications for mobile platforms.
- Implement and explain explain 2D graphics algorithms, such as for rastorizationm, line drawing, and clipping.
- Create geometric models for 2D and 3D images, and manipulate them through transformations and projections.
- Understand and apply concepts in graphical shading, including color, lighting, texture mapping, and ray-tracing.
- Describe and implement basic image processing algorithms, including image compression.
- Evaluate the effectiveness of graphical data visualizations, in terms of components used and information conveyed.
Course Components
Homeworks
Computer graphics programming will occur primarily through homeworks, assigned every 1-2 weeks. These homeworks will give you a chance to practice implementing concepts we have discussed in class and utilizing graphical APIs like OpenGL ES. Homeworks should be completed individually (unless otherwise specified).
Programming will be done primarily in Java---but through the Android platform, which makes it very different from the Java programming you've done through 261. We will be implementing OpenGL programs through Java, which gives them a C++ style without the C++ syntax. Moreover, we will also be using GLSL (the OpenGL Shader Language), which is a specialized language with a C-like syntax. Programming will likely feel uncanny.
As computer graphics is a highly creative domain, many assignments will be strive to be open-ended, letting you create your choice of images and applications. You are highly encouraged to exert your creatively---create applications that are novel and will wow us!
Combined, homeworks will be worth around 60% of the course grade. Note that some homeworks may be given more weight than others (as described in the individual assignment)
Exams
There will be two exams: a mid-term and a final. The final is not expected to be comprehensive. Exams will emphasize underlying theoretical concepts rather than the programming components applied in homeworks---don't expect to do any programming on the exam, but you should expect to do math!
Each exam is worth about 15% of the course grade.
Participation
You are expected to be an active participant in this class, and this course compnent reflects that. The best way to earn participation points is to be both physically and mentally present! Show up to class, ask and answer revelant questions, share an opinion (particularly in regards to supplementary readings), and otherwise contribute to a conducive learning environment. Participation is worth about 10% of the course grade.
Course Policies
Respect
This class may involve in-class discussion of topics on which you and your classmates may have differences in opinion. Please be respectful of others (students or otherwise) at all times.
Collaboration
Unless otherwise indicated, assignments should be completed individually. It is permissible, even encouraged, to talk with your classmates about the conceptual course material or requirements of an assignment. It is also permissible to get help with the development environment or with minor syntax errors.
However, the code you write and submit must be your own. When you ask for help from other students, you should follow the Gilligan's Island Rule formulated by Larry Ruzzo at University of Washington:
Leave without any written record of the collaboration (erase all whiteboards, delete all e-mail, recycle all paper, smash all stone tablets, etc.), and then spend at least half an hour engaging in mind-numbing activity such as watching Gilligan's Island before resuming work.
That way the code you actually write will have been reconstructed by you, from your own understanding.
It is never permissible to copy and paste another student's solution (whether code or prose). If you use code written by someone else (such as a textbook, tutorial, or instructor), you must include a comment giving credit to the author and explaining where the code came from. Failing to give appropriate credit is a form of plagarism, and so is considered cheating.
Correspondence
I will send out course announcements by email, so you should check your email daily. Note that this email will go to your pugetsound.edu address. If you prefer to read your email on another account, you should set your Pugetsound account to forward your email to your preferred account (see http://www.pugetsound.edu/files/resources/6291_ForwardWebmail.pdf).
When emailing me, please try to use proper grammar and make sure to sign your emails! This will let me know who is writing, and will help me to better answer any questions.
My office hours are listed above. I am more than happy to talk about any questions or concerns you may have about the course or its material. I highly recommend you take advantage of professor's office hours; it's one of the greatest benefits of attending a school like UPS.
Attendance
Make every effort to attend each class meeting; in-class discussions are an important component of the class. Classes will begin prompty on time in order to try and end on time---please do your best to get to class before the start of the hour. Students are expected to attend all lectures (attendance counts towards your participation score), with exceptions permitted in case of illness and family emergencies. I reserve the right to drop from the course any student that misses 5 or more classes.
Technology in Class
The use of cell phones and laptops will not be permitted in class unless specific permission is given. Please silence all cell phones/pagers/etc. before the beginning of each lecture.
Late Work
At the beginning of the semester, each student has two "free late days" that can be used to extend homework assignment due dates. Late days are spent in 24 hour increments---if the assignment is due at 9:00am and you hand it in at 10:00am, you will have used one "late day". Days may all be used on a single assignment or split across multiple assignments. After late days have been used up, late assignments will lose one full letter grade per day late.
If you ever find yourself falling behind, please check in with me ASAP (that means before the due date!); I am glad to help or try and work something out!
Academic Honesty
Please review the Academic Honesty Policy in the Student Handbook, and ask me if you have any questions regarding its application to this course. The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.
This course will often require you to utilize resources (tutorials, etc.) online. Adapting code from such resources is expected; just make sure to include a comment citing your source if you borrow any code whole-cloth!
If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work. It isn't worth it.
Special Accommodations
Academic accommodations are available for students with disabilities who are registered with the Office of the Office of Accessibility and Accommodations. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of the Office of Accessibility and Accommodations, 105 Howarth, 253.879.3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
I also encourage all students having difficulty, whatever the reason, to consult privately with me at any time.
Emergency Procedures
Please review university emergency preparedness and response procedures posted at www.pugetsound.edu/emergency/. There is a link on the university home page. Familiarize yourself with hall exit doors and the designated gathering area for your class and laboratory buildings.
If building evacuation becomes necessary (e.g. earthquake), meet your instructor at the designated gathering area so she/he can account for your presence. Then wait for further instructions. Do not return to the building or classroom until advised by a university emergency response representative.
If confronted by an act of violence, be prepared to make quick decisions to protect your safety. Flee the area by running away from the source of danger if you can safely do so. If this is not possible, shelter in place by securing classroom or lab doors and windows, closing blinds, and turning off room lights. Stay low, away from doors and windows, and as close to the interior hallway walls as possible. Wait for further instructions.
Course Calendar
Below is the planned schedule for the course. This includes a list of topics to help students plan their work in this course, as well as reading requirements and assignment deadlines. The calendar is subject to change.
- Assignments are due on the day listed, but be sure and check the individual assignment page for details!
- Readings should be completed before the class session for which they are listed. Readings can be found on Moodle or online.
Week | Date | Topic | Assignments | Reading |
1 | Sep 02 | Introduction |
Review the
CS315 Essential Math handout
Shneiderman & Plaisant, 2010 |
|
2 | Sep 09 | Graphical Devices and Interfaces | Homework 1 due Friday | Galitz 2007; Golden Rules |
3 | Sep 16 | Rasterization | Homework 2 due Sunday | |
4 | Sep 23 | OpenGL and Transformations | Homework 3 due Sunday | Shreiner 8e, Ch 1; Appendix E (2e online) |
5 | Sep 30 | Projections and Viewing | ||
6 | Oct 07 | Advanced Geometry | ||
7 |
Oct 14
Mon: work day |
Midterm |
Homework 4
due Friday
Midterm Fri, Oct 18 |
|
8 |
Oct 21
Mon-Tues: break |
Perception and Color | Healey 2009 | |
9 | Oct 28 | Lighting and Shading | ||
10 | Nov 04 | Textures and Shadows | Homework 5 due Sunday | Wolfe 1997 |
11 | Nov 11 | Raytracing | Rademacher 1997; Optional: Own 1999 | |
12 | Nov 18 | Image Processing & Vision | Avidan and Shamir 2007 | |
13 |
Nov 25
Wed-Fri: holiday |
Curves | Homework 6 due Tuesday | |
14 | Dec 02 | Information Visualization | Tufte 1990 | |
15 | Dec 09 | Conclusions | ||
Finals | Final Exam: Wednesday Dec 18, 4:00pm | Homework 7 due Wednesday |