Basic Info

Calendar

Note: the details pf the calendar (including assignment dates, order of topics, lecture plans, …) are all subject to change. The midterm and final exams are in University assigned time slots and locations. Each week, the class will have 2 lectures - lectures are required. Each week (for almost all weeks), there will be a workbook which is a combination of tutorial, reading assignment, demo and programming assignment. Each week there will be an online quiz. Read more…

Policies

Policies Overview Communications: The course web is used for providing information and policies; Canvas is used to make announcements, communicate grades, and provide documents; Piazza is used to communicate with course staff; and GitHub is used to get workbooks and hand them in. Avoid email - use Piazza to communicate with course staff. (See Communications) Lectures and Attendance: Lecture attendance is required. Lecture materials (when available) are not meant to replace lectures. Read more…

Object Oriented Programming in JavaScript, Part 2

Last time (Traditional Object Oriented Programming in JavaScript), we showed you how to use JavaScript’s class syntax to make your code more readable and less error-prone; this time, we’ll take a look at how we can use it to do the things you’re used to in object oriented programming: inheritance, polymorphism, and more. For the workbooks, you’ll need to understand inheritance and polymorphism. The code Framework uses these features a lot. Read more…

Traditional Object Oriented Programming in JavaScript

JavaScript has many different mechanisms for doing object oriented programming. Many of them are hard to learn. Fortunately, newer versions of JavaScript (like we use in class) give us a nicer option. JavaScript ES6 introduced classes to JavaScript, which use notation similar to what you may have seen in other object oriented languages. Eloquent JavaScript has an excellent introduction in Chapter 6. However, it first shows you the old way to do objects (prototypes), which is useful, but not essential for CS559. Read more…

Communications

The prefered way to communicate with the course staff is via Piazza. If you have a question about grading, post a private message to course staff. It will be difficult to answer grading questions in person (either in class or at consulting hours). Piazza Rules If you think that your question may be of interest to other students, please post it publicly. If the course staff feels a posting is inappropriate for being public, we may make it private. Read more…

Syllabus

The “Syllabus” is an official University form with pre-defined questions. This information has been posted on the official University systems (AEFIS and Canvas). As a student, you are probably more interested in the detailed Policies or the Calendar. More generally, all of the things you want are somewhere on the course web page . In particular, you might want to look at: The Class Overview page Overview The Class Policies page Policies The Course Schedule page Calendar The Course Learning goals page (which has details of the topics) Learning Goals The content of the official syllabus is provided as a PDF Read formatted page...

Software

It will be really worth your time to set you computer up for class. The tools you need are discussed at Tools. Here are some steps that I used to set up a new Windows laptop for working on class projects. This can give you a sense of how to get the things on the Tools page setup on your machine. It will probably be different for you. If you have a Mac or are running Linux, I can’t provide as much help. Read more…

Typed JavaScript and CS559

JavaScript does not require you to declare the types of your variables, function arguments, objects, object properties, or much of anything. However, if you give it some hints as to what you expect (as comments in your code), you can help a reader understand your program, and software tools find mistakes. This page describes some programming practices that are recommended for CS559. We (the course staff) will try to use this in all of the example code and framework code that we provide to you. Read more…

Learning Goals

This class is meant to teach you about Computer Graphics. Computer Graphics is the study of how we make pictures with computers. The focus of the class is teaching you the key ideas of computer graphics. The class will also teach you about how to do interactive graphics programming. We will use web technologies for this. On one hand, doing interactive web programming is a means to an end: you need to program graphics in order to really learn it. Read more…