CS 488: Lecture 6 – Lit Sphere
Dear students: Our goal today is to add lighting to our renderer. To make this work, we need a new mathematical tool: the vector. First, we take a tour through a handful of operations that we’ll need to work with vectors. Second, we’ll apply these operations to compute the “litness” of every fragment on the […]
CS 488: Lecture 5 – The Third Dimension
Dear students: Our goal today is to render a rotating cube. No more flat geometry—we’re going to the third dimension! A few new concerns arise as we get more and more triangles in our scenes. We will overcome them with the power of our graphics API. Indexed Triangles In most of our computer games, triangles […]
CS 430: Lecture 3 – Variables
Dear students, Computer science has its roots in mathematics. It was the mathematicians who first had problems they wanted to mechanize. Computer science soon grew into a discipline of its own that appeals to people who don’t like mathematics. My hot take is that there’s one big reason for its success: computer science has more […]
CS 488: Lecture 4 – Spaces and Orthographic Projections
Dear students: Let’s step back and look at where we are. We can make shapes out of triangles. We can color them. We can move them around and resize them using a compact and fast system of matrices. We can tie these transformations to mouse events. That’s pretty nice. Where do we go next? It’d […]
CS 488: Lecture 3 – Vectors and Matrices
Dear students: Last time we explored the three common transformations that we use to move objects around the screen. We saw how to apply one transformation at a time using slow mathematical operations. Today we will learn a system for applying an arbitrarily long sequence of transformations in constant time. The system is built on […]
CS 430: Lecture 2 – Syntax
Dear students, Today we look at the first steps of how a program becomes an executable. The source code that we write is a foreign language to the computer. It must be translated into a language that the machine does know. That’s the job of the compiler or interpreter. Translation is a process with multiple […]
CS 488: Lecture 2 – Triangles and Transforms
Dear students: Last time we discussed plotting individual points to the framebuffer and the role of vertex and fragment shaders. Today we explore how to stitch those points together into filled shapes. I say filled shapes, but in reality, we will only stitch them together in triangles—never quadrilaterals, pentagons, hexagons, or anything else. We limit […]
CS 488: Lecture 1 – Points
Dear students: Welcome to CS 488 – Computer Graphics Applications. This is a class where we learn how to make output that non-computer scientists can enjoy. In particular, the output is 3D and interactive. You can show the 3D worlds that you make in this class to others, and you will be a hero. Graphics […]
CS 430: Lecture 1 – Programming Languages
Dear students, Welcome to CS 430: Programming Languages! What’s this class about? Well, imagine you are a biology student taking a course on mammals and every lecture, lab, and homework is on cows. You wouldn’t really be a biologist at the end of the course. You’d be a cowist. A cow gives you one picture […]
CS 347: Lecture 25 – CS 347 Wrapped
Dear students: Our mission’s nearly over. You asked me to give you homework and projects so that you could learn full-stack web development. I’ve done that, and all that’s left is project 2 and the final exam. We won’t see each other again as a CS 347 family, so this is where we say goodbye. […]