CSCI 315: Computer Graphics — Fall 2013
Course Syllabus
Instructor
Joel Ross
email:
jross@pugetsound.edu
office:
Thompson 405
phone:
x3558
Class Meetings
Lecture:
Mon/Wed/Thu/Fri 2:00pm to 2:50pm (Thompson 387)
Around one day per week (usually Thursday or Friday) will be a "lab day", meeting in Thompson 420. Lab days will be announced in advance and listed on the
calendar.
Website:
http://cs.pugetsound.edu/~jross/courses/cs315/
Moodle:
https://moodle.pugetsound.edu/moodle/course/view.php?id=7675
Piazza:
https://piazza.com/class/hz022ediuzq1wm
We will be using Piazza for class discussion and Q&A. The system is catered to getting you help fast and efficiently from classmates and from myself. Rather than emailing questions to me, I encourage you to post your questions here.
Assignment Submissions:
for Windows,
map
\\vhedwig\jross_cs315
(instructions).
For Mac,
connect
to smb://vhedwig.pugetsound.edu/jross_cs315
(instructions)
Office Hours
Feel free to stop by any time. I will definitely be in my office during "official" hours: Mon/Wed/Thu/Fri 1:00pm to 2:00pm, Tue 2:00pm to 3:00pm. We can also schedule to chat at a specific time.
Course Description
This course is an introduction to the process of generating images with a computer. The emphasis is on the design of computational systems for generating two- and three-dimensional graphics. Students study the mathematical theory underlying computer generated graphics (including geometric transformations and projections), and will implement programs utilizing popular computer graphics pipelines and APIs. 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. Note that MA 210, MA 280, or MA 290 may be useful, but not required.
Course Goals
After completing this course, a student will be able to:
- Describe the digital representation of images and the use of graphics in interaction.
- Understand the modern graphics pipeline and utilize a current graphics API (OpenGL ES).
- Describe and apply the mathematics of basic rendering, including affine and perspective transformations, in both 2D and 3D.
- Contrast the efficacy of forward and backwards rendering pipelines.
- Describe techniques for computationally modeling complex geometry (including curves and surfaces)
- Utilize and implement simple lighting, shading, and texturing models
- Recognize applications of visualization and evaluate the effectiveness of those visualizations.
Textbook
Angel & Shreiner.
Interactive Computer Graphics: A Top-Down Approach with WebGL, 7th Edition.
Addison-Wesley, 2015.
(highly recommended text)
May be available
on Amazon
for cheaper than the bookstore, or as a
digital textbook rental.
Relevant readings from this text are listed on the
calendar.
Additional readings will be made available on Moodle (see the course calendar).
Resources
- Textbooks and Math
- Angel textbook resources Code and resources for our textbook
-
Shirley et al., Fundamentals of Computer Graphics, 3rd Edition, CRC 2009.
(Amazon)
Another excellent graphics textbook and reference, covering many additional topics. (Some readings are drawn from this book) - CS315 Essential Math handout A review/primer of some of the basic mathematics we will be using in this course
- JavaScript
- Mozilla JavaScript Guide An in-depth JavaScript tutorial created by Mozilla (the group that makes the Firefox browser)
- Re-introduction to JavaScript A more concise summary of the JavaScript language, if you just need a refresher
- Eloquent JavaScript One of many free textbooks for learning JavaScript
- Codecademy course on JS
- JavaScript for Cats
- OpenGL/WebGL
- Does your browser support WebGL?
-
OpenGL ES API
Official documentation for OpenGL ES 2.0.
- Quick Reference Card (I recommend the reference card, especially for GLSL!)
- GLSL ES API Official documentation for GLSL ES.
- glMatrix.js documentation for the vector/matrix library for JavaScript (optimized for WebGL) we will be using
- WebGL Playground A site for practicing with WebGL.
- ShaderToy An online tool for practicing and experimenting with GLSL.
- Learning Modern 3D Graphics Programming An online textbook for learning OpenGL (full version, in C++, if you're curious)
Other
- Sublime Text A light-weight text-editor for programming. This is my recommended system for web development. Google for various plugins that can help with programming (e.g., for code completion, etc.). I recommend the packages Sublime Linter, OpenGL Shading Language, and GL Shader Validator.
- Node.js A (framework for a) JavaScript based web server. This is an easy way to serve and run your WebGL code.
There are many, many resources for learning graphics programming online. If you find a good one, let me know and I'll add it to the list!
Course Components
Homeworks
You will have a number of computer graphics programming assignments to complete as homework. These assignments are intended to give you a chance to practice implemeting concepts we have discussed in class and utilizing graphical APIs like OpenGL.
Programming assignments will be completed in JavaScript, often using WebGL. JavaScript shares some syntax with Java (though there is no relationship between the languages), and we will go over some of the differences. WebGL is a subset of OpenGL, an API originally written in C--thus much of the programming will be like speaking JavaScript with a C accent. Moreover, we will also be using GLSL (the OpenGL Shader Language), which is a specialized language with a C-like syntax. So we will be mixing a number of programming languages and styles. Writing code may feel a bit 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 larger assignments may be worth more weight than others (as described in the individual assignment)
Homework assignments are to be completed individually (unless otherwise noted), and will be submitted online. Homeworks are worth around 60% of the course grade in total.
Worksheets
Each week, you will be required to complete a worksheet containing a small "problem set". These worksheets are intended to assess your understanding of the theoretical concepts of computer graphics which in practice may be abstracted by programming libraries like OpenGL.
You are welcome to use the textbook and other documents when completing worksheets; however, you must complete them entirely on your own--you should not consult with classmates. You can almost think of worksheets as weekly take-home quizzes.
Worksheets will be due on Mondays at the start of class (turn in a hard copy), at which point the next worksheet will be made available. Worksheets are worth around 30% of the course grade in total.
Labs
Around one day per week (usually Thursday or Friday) will be a "lab day", meeting in Thompson 420. Labs are intended to give you a chance to explore and test course concepts. This is a good chance for your to experiment and ask questions! Labs may involve completing small self-contained programming tasks, exploring related technologies and applications, or even working on homework assignments. Lab assignments will not be turned in; however, participation in labs activities and completion of tasks will be a significant part of the Participation course grade (see below).
Participation
You are expected to be an active participant in this class, and this course component 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, and otherwise contribute to a conducive learning environment. Try to speak up every day.
Participation will also include lab activities (see above).
Overall, 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.
Correspondence
I will send out course announcements and information 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.
I have set up a public discussion forum through Piazza. This is a great place to ask (and answer!) technical or homework questions. You may get responses from other students faster than from me, and any answers can be shared with the entire class.
For more private correspondence, you are welcome to email me. When emailing, please 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.
Collaboration
Unless otherwise indicated, assignments should be completed individually. It is always permissible, even desirable, to talk with your classmates about the conceptual course material or the requirements of an assignment. It is always permissible to get with the development environment or with syntax errors.
However, the final product (the program you create 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.
This process assures that you are able to reconstruct what you learned from the collaboration afterwards all by yourself. The most important part of the assignment is the process of the getting the solution--including the false starts, bugs, misconceptions, and mistakes--because the learning occurs in the doing. Completely apart from the ethical issues, copying a solution deprives you of the whole point of the assignment.
It is never permissible to copy and paste another person's solution (whether code or prose). If you use code written by someone else (such as the textbook 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.
Attendance
Make every effort to attend each class meeting; we will often cover material that isn't directly in the textbook. Classes will prompty begin and (usually) end on time--so please do your best to get to class before the start of the hour. Students are expected to attend all lectures, with exceptions permitted in case of illness and family emergencies.
Technology in Class
Please silence all cell phones/pagers/etc. before the beginning of each class. Laptops are allowed in class, but only for class purposes: do not use class time to check your email, update your Facebook, read reddit, make LOLCats, etc. Such usage is distracting and interferes with learning both for you and for all the other students in the class. If the temptation is too much, simply don't bring your laptop--you will not need it for any lecture. If another student's computer is distracting, please ask them to close it (or let me know outside of class).
Late Work
Late assignments will lose 15% per day late; assignments more than 2 days late will not be accepted.
At the beginning of the semester, each student has five (5) "free late days" that can be used to extend homework assignment due dates. Late days are spent in 24h increments. I will optimize your free day usage and late penalties at the end of the course.
If you find yourself falling behind, please check in with me ASAP; I am glad to help! It is better to seek help before the deadline.
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.
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 http: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. Lie on the floor out of sight and away from windows and doors. Place cell phones or pagers on vibrate so that you can receive messages quietly. Wait for further instructions.
Finally, please consider getting a flu shot, to protect yourself and others!. Influenza is a miserable experience, and you do not need it while you are trying to complete a class. If you do get sick, stay home!. E-mail me and we will work around it.
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 assignments and relevant readings. Changes will be announced in class, and I will do my best to keep this schedule updated. Any changes to due dates will be announced.
- Lab lists which days each week we will be meeting in Th420, as well as links to lab assignments (if any).
- Readings are from the Angel & Shreiner texttext unless specified otherwise. Note that we will be jumping around in the text a bit.
- Homeworks are due on the day listed (generally at midnight, though check each assignment for specifics).
- Worksheets are due at the start of class on the following Monday (so Worksheet I is due Sep 15).
Week | Date | Topic | Lab | Readings | Homeworks | Worksheets |
1 | 09/01 | Introduction; JavaScript | Fri | Ch 1 | ||
2 | 09/08 | Perception and Graphical Devices | jQuery | Ch 8.13; 3.1-3.4, 3.6-3.8 | Hwk 1 - Grapher due Fri | Worksheet I |
3 | 09/15 | OpenGL | Hexagon |
Ch 2; 4.1-4.6
Gortler Ch 1 |
Worksheet II | |
4 | 09/22 | Transformations | Thu | Ch 4.7-4.14 | Hwk 2 - Glyphs due Fri | |
5 | 09/29 | Viewing and Projections | Ch 9.1-9.5, 9.8; 5.1-5.7 | Worksheet III | ||
6 | 10/06 | Animation; Curves & Surfaces | Fri |
Lasseter 1987
Ch 8.11; 11.1-11.10 |
Hwk 3 - CubeBot due Fri | Worksheet IV |
7 | 10/13 | Rasterization | Fri | Ch 8.1-8.4, 8.7-8.12; | Hwk 4 - Dancing CubeBot due Fri | Worksheet V |
8 |
10/20
Mon-Tues: break |
Meshes; GLSL | Thu | Ch 2.4 (review) | ||
9 | 10/27 | Lighting and Shading | Toon Shading | Ch 6 | Hwk 5 - Street Scene (Part 1) due Sun | Worksheet VI |
10 | 11/03 | Textures | Thu | Ch 7 | Worksheet VII | |
11 | 11/10 | Ray Tracing | Wed | Shirley Ch 4, 13 | Hwk 6 - Street Scene (Part 2) due Tues | Worksheet VIII |
12 | 11/17 |
Bounding Volumes and Constructive
Geometry; UI Design |
Thu | Ch 8.6; 9.10 | Worksheet IX | |
13 |
11/24
Wed-Fri: holiday |
UI Design (cont.) | Rogers Ch 6 | Hwk 7 - Ray Tracer due Tues | ||
14 | 12/01 | Information Visualization | d3js |
Shirley Ch 27
Norman Ch 3 Tufte Ch 1 |
Worksheet X | |
15 | 12/08 | Special Topics (TBD) | ||||
Finals | Final Exam Period: Wednesday 12/17, 4:00pm | Hwk 8 - Final Project due Wed |