Course Syllabus

CSCI 4611: Programming Interactive Computer Graphics and Games

 

Tuesday/Thursday, 4:00 - 5:15pm in Tate Hall 101
(lectures will also be live streamed and recorded)

 

Instructor
Evan Suma Rosenberg  (they/them)
Office Hours: Wednesday 4-5pm or by appointment
Office Location: Keller 6-201 or virtual

kiet_square.jpg

Graduate TA
Kiet Tran  (he/him)
Office Hours: see calendar
Office Location: virtual

frank.jpg

Graduate TA
Frank Bender  (they/them)
Office Hours: see calendar
Office Location: (Friday - Keller 2-209 beginning 2/25) Monday - virtual

headshot2.JPG

Undergraduate TA
Tammy Pham  (she/her)
Office Hours: see calendar
Office Location: virtual

Undergraduate TA
Christian Halvorson  (he/him)
Office Hours: see calendar
Office Location: Keller Atrium Table 4 and virtual

 

Click Here to Book an Appointment for Office Hours

 

Communication

Slack: The best way to communicate with the instructor and TA is through the course Slack workspace. This is more efficient than email, and you may find that your question has already been asked and answered in a channel for a particular assignment.

Email: You can also email graphics-class@umn.edu, which will forward to the instructor and TAs. However, this may have a longer turnaround time than Slack.

Office Hours: The instructor and the TA will hold regularly scheduled office hours either in-person or virtually using Gather.Town.

When posting a question to the Slack channel, it is essential that you keep in mind the public nature of the communication. In particular, channels are not a place to discuss a grading decision or a personal concern; please send a direct message or email with these questions. You should use channels to ask general questions that apply to the entire class (e.g. a clarification about an assignment, a technical question on programming, or a question about a topic discussed in class). All work in this course are individual assignments, so it is also important to not distribute part of your solution to the class when posting or responding to channel visible to other students.

 

Acknowledging this Moment

We all enter this semester with a lot of uncertainty.  The pandemic continues, and the Omicron variant is surging.  Although we begin the semester in an in-person modality, remote participation may still be necessary for many people, and the University may need to pivot based as the situation continues to develop.  We are low on reserves after the past few years, which have included multiple events that might be described as once-in-a-generation.  The country is still heavily divided after a divisive election.  Twin Cities communities of color continue to lead a critical, now worldwide, movement for anti-racism education and activism.  It would be naïve to expect that all these events will not enter our classroom.  Instead, let us acknowledge from the beginning that this continues to be a seriously hard time for all of us.  Let us be flexible, generous, and do what we can to support each other. 

As you navigate your semester, please do not hesitate to take advantage of the many resources the UMN provides to support you.  As a department, we have collected many of these on our new http://csidea.umn.edu website.  You can also find additional info on several topics at the bottom of the syllabus.   Please take care of yourself this semester, and feel free to contact us if you need help.  We will do our best to support you.

 

Course Overview

Computer graphics is an exciting field within computer science that has seen dramatic recent growth. The impact of graphics on our culture and on our daily lives is far-reaching, as we can see through applications in art, design, education, games, movies, science, and medicine. This course covers the tools and techniques used today for programming games and other interactive computer graphics applications. Some of the core concepts covered include: event loops, rendering and animation, polygonal models, texturing, and physical simulation. This is a heavy programming course, and assignments will be implemented using web-based graphics toolkits and TypeScript.

 

Learning Objectives

In this course, you will learn to:

  • Understand basic concepts and algorithms relevant to computer graphics programming.
  • Identify, define, and solve 2D and 3D graphics programming problems.
  • Critically evaluate and select the right graphics toolkit to solve new problems.
  • Communicate information through visual means using computers.

 

Prerequisites

The prerequisite for the course is CSCI 2021. Please contact me if you have any questions about whether the course is a good fit for your interests and background.

 

COVID-19 Precautions

Although this course will be taught in-person, we may need to adapt based on the situation and guidance from the University. Regardless of modality, all efforts will be made to support remote participation for students that do not feel comfortable or cannot come to class due to illness, and in-person course content will be live-streamed and recorded for offline viewing.  Please see the following supplemental document for more details about COVID-19 course policies.

 

Textbook

Three.js and TypeScript
I recommend buying the Kindle edition of this book, which is only $10.  Note that you do not need a Kindle device.  You can read it using the free Kindle app on PC, Mac, Android, or iOS.

All code examples are provided on the textbook website.  Purchasing this book gives you access codes for the video tutorials. 

 

Course Structure

Tuesdays: Graphics Concepts

For one class each week, we will cover lessons on graphics concepts, math, and techniques. These classes will generally follow a standard lecture format, but may also involve some in-class activities and discussion.

Thursdays: Programming with the Professor

The lectures on conceptual material will be complemented with live programming sessions with me, which will typically occur on Thursdays.  On these days, feel free to bring your laptops to class to follow along in real-time.  Note that writing code during class is optional; you can also just watch and take notes.  The live programming sessions have been very popular with students in the past, and gives me the opportunity to show you an expert in computer graphics goes about programming and problem solving.  This is a great way to learn not only about graphics, but also about debugging, TypeScript syntax, and how to break a programming project into small steps.

 

Assignments

There will be a total of six assignments in this class.  Although they are challenging, they are also the most exciting and rewarding aspect of the course (and your chance to impress your friends with some sweet 3D graphics). We will introduce this semester's specific assignment topics on the first day of class. Briefly, the assignments will cover a broad range of applications of computer graphics programming, including: simple physics simulation, modeling shapes and data in 3D, character animation for movies and games, realistic real-time 3D rendering, art-inspired rendering, and more. You will use both 2D and 3D graphics programming toolkits to implement the assignments. Your goal in these assignments should be to come away with a great practical understanding of how to tackle new computer graphics programming challenges using the latest and greatest programming toolkits.

Each assignment lasts for 2 weeks and is broken into two separate submissions.  At the end of the first week, you'll submit an assignment Worksheet. This covers the key mathematical or algorithmic concepts in the assignment.  Then, at the end of the second week, you'll submit the Program.  Always start with the worksheet, seek help from TAs as needed, and make sure that you understand the key concepts first.  At a minimum, your goal should be to have a full understanding of the concepts and how you will solve the programming portion by the end of the first week.  This way, you will be sure to have at least one full week to implement and debug the program.

 

Grading

Final course grades will be calculated based upon the following percentages.

  • Worksheets - 10%
  • Programs - 50%
  • Midterm Exam - 20%
  • Final Exam - 20%

The grading in this course is on an absolute scale.  This means that the performance of others in the class will not affect your grade.  Letter grades will be assigned using the following scale:

  • A    ≥ 93.0% 
  • A-   ≥ 90.0% and < 93.0%
  • B+  ≥ 87.0% and < 90.0%
  • B    ≥ 83.0% and < 87.0%
  • B-   ≥ 80.0% and < 83.0%
  • C+  ≥ 77.0% and < 80.0%
  • C    ≥ 73.0% and < 77.0%
  • C-   ≥ 70.0% and < 73.0%
  • D+  ≥ 67.0% and < 70.0%
  • D    ≥ 60.0% and < 67.0%
  • F     < 60.0%

For S/N grading, a satisfactory grade (S) requires a grade of 70.0% or above.

 

Flexible Late Policy

To provide some relief during this unusual time, we have implemented a flexible late. Each assignment will have a due date, but each of you will be granted 10 late points at the beginning of the semester. 

Each late point is worth a 24-hour extension for any programming assignment.  You are free to allocate them however you want throughout the course. For example, if you are sick, have a family emergency, or even just a big project due, you could apply all points to that assignment and hand it in 10 days late.  Alternatively, you could decide to spread these days around and hand every programming assignment 1-2 days late. 

If you have late points remaining, you do not need to contact us for an extension on programming assignments. These extensions are applied automatically with no questions asked. When you submit your code using GitHub, the time is logged by the system.  If the submission is late, we will apply an extension in the grading system and deduct the corresponding number of late points.  

Your current late points will be visible in Canvas and will be updated when your assignments are graded.  Note that you are responsible for keeping track of remaining points if you submitted an assignment late, but it has not been graded yet.   If you run out of late points and anticipate further difficulties in completing work on time, then you should contact me to discuss your situation.

Frequently Asked Questions

Do I have to tell you when I want to use my late points?  No, we'll apply credit automatically.  We know everybody is having a hard time and probably needs a day or two here and there -- just take them automatically if you need them.  It's fine as long as you don't take so many up front that you fall terribly behind.

Do these apply to the worksheets as well as the program portions of the assignments?  These only apply to the programs. The worksheets are worth less and are very lightly graded -- plan to just complete those on time no matter what.  They are quick and will at least get you thinking about the assignment early.

What if I get really sick or something and need an extension beyond this?  That is possible in rare circumstances, but you need to talk with me about this situation.  You can expect that the first thing I will ask is: How have you used the late points that I have already given you?  That's quite a lot already, and are more really justified in this case?

Is there a penalty if I run out of late points and submit an assignment after the deadline?   If you use all your late points, we will still accept it and grade the assignment with a late penalty of 5% for each day it is late.

If I don't use all my late points by the end of the semester, will I receive bonus points?  No.  The late points are meant to increase equity for students that are disadvantaged in this course.  If they were redeemable for bonus points, then this would effectively penalize the students who need extensions for legitimate reasons beyond their control.  If this seems unfair to you, then please consider this explanation from the National Association of Colleges of Employers: The term “equity” refers to fairness and justice and is distinguished from equality: Whereas equality means providing the same to all, equity means recognizing that we do not all start from the same place and must acknowledge and make adjustments to imbalances. 

 

Standard Policies

This class follows standard university policies. It's your responsibility to be familiar with:

 

Academic Integrity

First, please review the Departmental Policy on Academic Dishonesty; this is a little more specific than the university-wide policy above.  How this applies to this class specifically:

Collaboration Policy

All work submitted for this course is required to be your original work. You are expected to do your own thinking, your own design, and your own coding. You are encouraged to discuss the content of the lectures and the texts with your peers. With respect to programming assignments, you are also permitted to discuss and make posts about programming in general (e.g., a syntax error you are stuck on, missing include file). However, your communication with others must stop before discussing a solution to the homework or assignment. If you have any question about whether discussing something with peers might go beyond what is permitted, then stop and ask us first for clarification on the policy.

Use of Web and External Resources

The web will be one of your best learning tools and sources of documentation for working with TypeScript and computer graphics toolkits used in the class, but you are not allowed to use web or other external resources to find solutions to the core computer graphics problems in your assignments.

What you can do: You are expected/encouraged to use the web to lookup questions about the APIs used and even to look at example programs written with TypeScript and computer graphics toolkits.

What you cannot do: You are not allowed to search for solutions to assignments. For example, if your assignment is to develop your own texture mapping routine for a sphere, you can lookup the API documentation to learn the right function to call and the right syntax to use to set the texture coordinate for each vertex in a mesh. What you cannot do is google for “texture map a sphere” and find out how to setup a for loop and use cos() and sin() equations to determine the correct texture coordinates for each vertex of the sphere. This is the difference between using the web as a programming toolkit reference vs. using the web as a reference for the computer graphics algorithms/solutions that are being taught in the course. With the exception of the small snippets of code that are found in the official language or API documentation, you should never copy code like a routine, class, object, etc. from a website and include it in an assignment or project. 

Third-Party Art Assets

Although it is not required to complete assignments in the course, some students may want to include additional art assets (e.g., 3D models, images, sounds) in their programs.  You are permitted to use third-party assets from the web, with the following requirements: (1) the content does not include any code, and (2) the content is cited in a readme file.

Consequences of Academic Dishonesty

Academic dishonesty in this class will result in a 0 on the assignment or exam in question for the first offense, and an automatic F in the class for the second offense.  All cases of academic dishonesty are required to be reported to the University Office for Community Standards.

 

Inclusive Conduct in Class and the Field of Computing

At this point in your careers, I trust you are already aware that computing as a field has a huge problem with a lack of diversity.  At all levels, there is an underrepresentation of populations, including women, African Americans, Hispanics, American Indians, Alaska Natives, Native Hawaiians, Native Pacific Islanders, and persons with disabilities.  I want to make sure you are aware of this because it is a problem, and it is something that you have a responsibility to help change as you continue in this field.  One way we will do that in this course is to be sure to use inclusive language and be respectful in all of our interactions, including written and face-to-face communication.  If you are in the majority in our field, I want to make a special appeal to you to join me in this line of thinking.  Studies show, our interactions with women and other students who belong to groups with longstanding underrepresentation in our field often turn them away.  I'm talking about experiences, often in the classroom, that turn students off to the point that they leave computing.  This could take many forms, such as:

  • An offensive joke by a professor
  • Speaking over someone
  • Limiting who we "allow" to participate when working on a group activity
  • Someone who already has a lot of computing experience from outside of school providing a "know it all" explanation to the class that others can't even understand making them feel like they don't belong
  • Commonplace daily verbal, behavioral or environmental slights, whether intentional or unintentional, that communicate hostile, derogatory, or negative attitudes toward stigmatized or culturally marginalized groups (microaggressions)
  • And many more...

To those who may already feel as though they do not belong here, an experience like this within the classroom can be the thing that makes them switch majors.  So, my appeal is to please keep this in the forefront of your minds in this classroom and others, but be especially careful in your computer science courses and eventual workplaces.  Bias and rudeness show up in many settings, but these things are seriously damaging in computer science. So my feeling is that we need to resolve to do better than any other discipline on campus.  Please join me in that.  And, if you find yourself passionate about this, please consider working with the CS-IDEA committee, which you can find out more about on http://csidea.umn.edu.

 

Mental Health Information

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce your ability to participate in daily activities. University of Minnesota services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus at http://www.mentalhealth.umn.edu.

 

Disability Information

If you have already been working with the Disability Resource Center and have a letter from them to help direct your instructors on to set you up for success, then please send that to me at the beginning of the semester, and I will make every effort to make sure this class is a good experience for you.

University policy is to provide, on a flexible and individualized basis, reasonable accommodations to students who have documented disability conditions (e.g., physical, learning, psychiatric, vision, hearing, or systemic) that may affect their ability to participate in course activities or to meet course requirements. Students with disabilities are encouraged to contact the Disability Resource Center to discuss individual needs for accommodations.

 

Acknowledgments

Aspects of this syllabus (including this statement) were adapted from Nathan Taylor, Daniel Keefe, Blair MacIntyre, Shana Watters, Lana Yarosh, and the American Association of University Professors Joint Statement on Rights and Freedoms of Students, because writing a good syllabus is hard.

 

Course Summary:

Course Summary
Date Details Due