Project 1 Updates and Help

by Mike Gleicher on October 30, 2014

Remember: Project 1 is due on Wednesday, November 5th.

The project is designed to give people freedom and flexibility to do really cool stuff. This makes the description a little long, and I am gathering (from whispers I hear) a little confusing to some. Please ask for clarifications if you need them! We will try to be extra vigilant about responding to project related emails and Piazza questions (until the blackout, below). Please do not post your buggy code to Piazza (or send it to us by email). If you want us to look at code, you need to come to a lab session or office hours – and even then, it’s easier for us to help with conceptual questions. Debugging takes time, and we need to help everybody.

Lab sessions: because of scheduling and the use of the labs by 302, help sessions are challenging. Adam will be in the Windows lab (unclear which one) from 3-5 on Friday – I will try to come for part of it. Adam will hold his office hours in the Windows lab on Monday, and can extend them if people have questions. I will also stop by the lab in between other things to check in with people.

Office Hours: Adam will hold his office hours 2:30 Monday in the lab so he can help people in a more hands on way. My office hours Tuesday (2pm) and Wednesday can go a little long if there are lots of questions (update: I need to end my office hours promptly on Wednesday because of a faculty meeting – but I will be there 11-just before noon). Adam also has office hours Wednesday afternoon for last minute issues.

Blackout:  In fairness to people who do not wait to the last minute, there will be a “project questions blackout” beginning at the end of Adam’s office hours on Wednesday afternoon. We will not respond to (project related) email or Piazza questions submitted after 3:30pm on Wednesday until after Monday. So, you can turn your project in late, we just won’t help you do so.

What if there’s a handin problem?  If you have a problem submitting your assignment via moodle (it breaks down at the last minute, or something), DO NOT EMAIL YOUR ASSIGNMENT TO US. Place your ZIP file in your AFS home directory (U:/public/) with an easily identifiable name and send email to Adam giving the whole path. Do not email files to us.

Late Policy: The late policy for projects  is non-specific. For this project, there will be a grace period. If you turn your project in on Friday, there will be no penalty on this project. If you turn your project in on or by Monday 10 November, there will be no penalty for this project providing that you turned in Assignments 7 and 8 on time. Note: even though there is no penalty for being late, we will note your lateness, and reserve the right to penalize chronic lateness when figuring out final grades. Also, remember there is a project help blackout from Wednesday 3:30 until the time the grace period ends.

How we will do grading: We will not require live demos for this project. This means its very important that you follow the instructions and we can build and run your program and see its features. We may schedule optional demo sessions so that people can show off stuff in person – but only for cases where it is less clear what’s there.

Grading Scale: There are no precise pre-defined point values. But roughly, to get a B, you need to have a solid implementation of the basic features. To get an AB you should have the main advanced features (arc length parameterization, rail ties, multiple cars). To get an A you need to add bells and whistles. But if you don’t have the simpler stuff solid, the bells and whistles don’t count as much.

Is there a curve? I hope so. It’s be a pretty boring roller coaster without it. Oh, you meant a grading curve. Yes, we curve grades in this class in the positive direction only: if everyone does great, I have no problem saying “I have a smart class everyone gets an A” (yes, this happened to me!). If no one gets an A, well, it must be that my standards are too high, so I’ll adjust them.

Data Visualization Class Next Semester

by Mike Gleicher on October 29, 2014

If you have an interest in Data Visualization (an important application of graphics), I will be teaching a class on it next semester:

What kinds of things are on the exam (big hint alert)

by Mike Gleicher on October 26, 2014

Several people are asking – via email and Piazza – about what will be on the exam in detail.

I wanted to avoid direct replies since if I inadvertently give a hint, I want to make sure that everyone gets the same hint.

So, here are some hints…

  1. You are not responsible for knowing syntax of anything (SVG, C++), or the specifics of the parameters of a library. You might be asked to write simplified psuedo-code, or to read programs (most likely in a simplified form).  
  2. In general, we try to create questions that rely on you remembering and understanding concepts, not necessarily remembering the details of the equations. If you think about it, in class, we usually derive the equations we need based on the principles.
  3. You can get pretty far remembering the important concepts, and not necessarily the details of the equations. If you don’t remember what the magnitude of the cross product is, you should still remember orthogonality and right-hand-rule.
  4. I try to avoid having people need to do too many calculations by hand (since many of us make silly arithmetic mistakes). You will not need (or be allowed to use) a calculator.
  5. Having the intuitions for the equations is more important than memorizing the equations. For example, we didn’t even have the blending functions for Catmull-Rom cubics in class – I think I told you to look them up when you need them. But you should understand how the control points relate to the properties of the segment (for example, to convert to Hermite form). And from Hermite form, you could convert to Bezier form or …
  6. For example, you may not memorize which way the negative sign goes in a rotation about the Y axis, but you could probably figure it out if you needed to by remembering the right-hand rule. You should know the properties of a rotation matrix.

OK, and here’s a big hint for reading:

  • Even though everything we discussed in class up until now is fair game (including texturing), there are no texturing questions on the exam. I had intended to write a texturing question, but I didn’t like the ones I came up with. You should still know about texturing. And everything else!

The week in 559: Week 09 October 27-31

by Mike Gleicher on October 25, 2014

This past week, we talked about texture.

This week, the dominant things are the midterm (Tuesday, 7:15pm, 12140 CS, Oct 28) and the project is due next week.

In class, we’ll talk about tricks for real-time graphics (some of which are used in the project framework), and then talk about the graphics hardware and how to program it.

There’s no assignment this week: I couldn’t give one for the day after the exam.

The readings on shaders can be read after the lectures on shaders (and they aren’t available yet).

Video Tutorial: Blending Functions

by Mike Gleicher on October 24, 2014

I just posted another video tutorial on blending functions. This will be useful for the project, as it will help you translate from the way we discussed things in class to the way things are derived in the book. It is also a good review for the exam.

What will be on the exam?

by Mike Gleicher on October 22, 2014

The midterm exam (7pm, Tuesday, October 28th, room 1240CS just like class) will cover all material discussed in class (or described in the syllabus up to (and including) class on Thursday , October 23rd (that means textures).

You are responsible for topics discussed in lectures, things discussed in readings (although in some cases the readings go beyond what we cover in class), concepts presented in our online tutorials and assignments, …

An outline / study guide of the topics is given here. My notes that I use for lectures are temporarily available to you – but they are really more notes to myself to remind me what I need to talk about, rather than details of the stuff you should know. My notes from previous years might also be useful. In 2010, these were a lot of hand-written ideas, although earlier years have more details. 2009 is well organized, 2008 is also organized and more complete. Be warned, the topics discussed n class have been evolving. (and the order has been changed around). The main important stuff is still there.

Video Tutorial: Arc Length Parameterization

by Mike Gleicher on October 21, 2014

I have posted another tutorial video. This time about arc-length parameterization.

It’s a concept that was not covered well in class. The video will show the basic concept a different way, as well as give you an idea on how to compute it in practice for a complicated curve (which will be useful for the project).

The video is on media space at:

As an experiment, I’ve also put it online at:, this viewer allows you to watch at 2x speed, although it doesn’t work in all browsers.

The week in 559: Week 08 October 20-24

by Mike Gleicher on October 16, 2014

Last week, we talked a bit about getting triangles from our program to the screen, including figuring out what color they should be (lighting).

Next week, we’ll talk about doing fancier things with those colors – changing the appearance on a per-pixel basis. This is called “texturing.” We’ll also review some of the lighting and graphics programming concepts that might have been hidden away in the lectures last week.

For readings, you should go back to last week’s readings (on lighting and the pipeline) if you haven’t looked at them already. Then you should have a look at this week’s readings on texturing.

The assignment for Wednesday is the first checkpoint of project 1. It’s not a lot for this week – but hopefully, will at least have you look ahead at the project.

Speaking of looking ahead – don’t forget that the mid-term exam is Tuesday evening, October 28th. That’s not so far away. There will be more information about what to expect coming soon. Next week’s content (on texturing) will be fair game.

For what it’s worth… having to write an exam is worse than having to take one. I can say this having been on both sides of it.

C++ / FlTK Tutorial

by Mike Gleicher on October 15, 2014

I have posted the first (probably of several) tutorials about C++ and FlTk to help you do the project.

These will be under Tutorials and the first one is about FlTk callbacks (that I mentioned in class), which gets at pointers to functions and casts and other C++ issues.

Please let me know if this is helpful – and if there are clarifications to it that might make it better!

Project 1 Announced!

by Mike Gleicher on October 14, 2014

Project 1 has been posted!

The project is described here.

The framework code (and example solution) is described here.

The first checkpoint is described here.