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:

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

Other

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.

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