Main / Main - CS559 2007
You should check this page regularly for news and other announcements as this is the main way of spreading the word about class announcements. Check out the rss feed of this page, if you prefer to get your information that way. Either way, you will be held accountable for the information that appears on this page. This page will be updated frequently.
The final exam has been graded. I will post a key after Christmas. It is here
The high score was 98. The mean was 65. The grades on the exam were well correlated with the grades on the projects. You needed to score more than 60 points to get a B.
Unofficial final grades, exam grades, and project 3 grades will be sent by email (once we get a script to convert excel to shell script).
To deal with the cases where grades were close (so arguing about a point here or their might make a difference), we just have everyone an extra 1/8 grade on their total average to compute the course grade. If you prefer to quibble over your grade, we won't give you those extra points.
I'll be in the lab after demos today from 5:00 - 6:30, and then tomorrow in my office from 12:00. I'd like to get everything set up before 2:00 tomorrow. If you're doing an audience demo, please come see me during one of these two time slots. - y
Update: I'm leaving (early) at 6:00, since only one person came in and I'm pretty sure nobody else is. I'll see the rest of you tomorrow. - y
9 Groups have volunteered to participate in Friday's demo session. We'll have it at 3:30pm in 1221 CS. With 9 groups, giving 15 minutes per group, this may go on for a while.
Even if you aren't presenting in the session, feel free to come by and watch and cheer on your classmates. Having seen a few projects already, there is a lot of neat stuff!
For those of you who are presenting: Yoh will contact you to make arrangements so that your demo runs on his laptop.
The last class Lecture (Friday, December 14th) will be an exam review. Bring questions. I won't have anything planned for exam review.
There are notes on the exam content here. Note: unlike last year, the exam will be closed book and closed notes.
The final exam will be at 2:45pm on Friday December 21st in room 1221. A previous announcement was incorrect and gave the ending time (not the starting time).
Be sure to sign up for a project 3 demo timeslot before the demos begin Wednesday, 12/12, at 1:30pm.
The signup sheet is available outside 1301 CS (cx's office). At this late time, it will be difficult for us to make arrangements for people who cannot fit into the scheduled slots.
The rules for Project 3 Demos are described here.
A Project 3 Demos sign up sheet has been placed next to CX's door. Please sign up - even if you have already signed the sheet for the "audience demos." (it seems some people who wanted to do an audience demo didn't sign up).
If you have any questions, please ask.
A file has been placed in each student's P2-Final directory that has your project grade. There is a brief "synopsis" of why you got the grade that you did. If you want to double check the big messy spreadsheet and see where the numbers came from, contact the professor or a TA.
Hi everyone. Office hours this week for Yoh have been moved to Thursday from 10:30 - 12:30. I'm sorry about the short notice. As always, I'll meet with you anytime if you send me an email. - y
I've added Non-Photorealistic Rendering (NPR) to the list of topics for this week. The reading is Shirley 9.3. The calendar and readings page have been updated.
The written assignment (originally due on Monday, December 3rd) has been cancelled. Instead, we'll give you some extra review questions for the exam.
Is here. We'll get feedback to you soon.
Yoh will be in and out of his office today, so he'll hold his office hours at the usual time (12 - 2) on Wednesday. If you have any pressing questions, don't hesitate to email me! - y
A fixed version of the P3 code (as well as instructions on how to apply the fixes yourself to your own version) have been posted. See the discussion here
Rather than have an afternoon help session for P3, we'll have it in class on Wednesday, November 28th. Hopefully, this will make it easier for more people to participate.
Please bring questions and ideas to class on Wednesday to discuss.
We will release an update to P3 on Monday that will run correctly in release build. Debug mode is fine for your projects in this class, and the problem is in a piece of code that you don't have to use (the driving system).
If you notice, P3 only builds and runs in debug mode. This is a bad programming practice.
We can give you the project setting to make it build and run in release mode if you want. However: the roads system doesn't seem to work in release mode. This is indicative of some deeper problem with it.
The road system was meant to be an example to show behavior, not necessarily code for you to look at. It has a bunch of bad practices in it. One of them is causing a hard to catch bug that only manifests itself in release builds.
One way this manifests itself (in addition to just being hard to understand) is that it will not run
Remember that we're doing demos for Project 2 from Monday - Wednesday this week. Also, Yoh's office hours are cancelled today. - y
We've pulled together all of the images you submitted for P1 and put them in a gallery so you can see each other's results. Check it out here! - y
I put some basic info on getting CVS to work using a CSL Linux server and a Windows client in Main.CVS. This is not a tutorial on CVS. If people are interested in that, we can do it when we have the project help session after Thanksgiving.
There are two "graphicsy" courses being offered next semester (Spring 2008)
Also, tell your friends: CS559 will be offered in the Spring taught by professor Li Zhang (and will be taught next fall, taught by me).
David Stork will speak about analyzing Renaissances painting to see if the artists were "cheating" by using mirors and reflectors.
Nov 19th, 4pm, 1221 CS.
The midterm grades are assigned as follows:
(This works out to mean=B, 1 std. dev per whole letter grade)
The signup sheet for project 2 demos is on CX's door. Please sign up for a slot if you haven't already.
If you cannot make one of the available slots, please make an arrangement ASAP. We will not be able to demo projects after thanksgiving.
Project 3 has been posted. Look at the sidebar, or just click here.
While you may still be pre-occupied with P2, there are two things that you should be aware of immediately:
Many people had turned in their visual studio internal debug files with their handins (for P1 as well as the checkpoint). We have deleted some of them. Getting rid of the ".ncb" files alone saved as much disk space as we need for an entire project handin.
In the future, please be careful about what files to turn in. For example, if you place a ".ncb" file in your hand in directory, we will penalize you!
We have been running out of disk space for the hand in directories.
Please be careful about what you turn in: if you need to turn in! Do not turn in executables, or intermediate files - just the source code and project files.
If you feel the need to turn in more than a few megabytes of files, send email first explaining why, and we'll try to find a way to accomodate you.
We will allow you to get your exam after class on Monday, or at the professor's office hours on Tuesday or Wednesday. If you think your exam was mis-graded, send email to the professor AND return your exam before class on Friday, November 16th.
Comments on what the exam markings mean are here.
OK, if you're pulling you're hair out at the last minute trying to get your train oriented correctly, here are some hints:
There are two steps to getting the rotation right:
Get part 1 working right first. Draw little vectors sticking out of your train to check to make sure these are right. Also, in the event you don't get #2 right, you can show them to us in your demo and get partial credit.
For part 2, you can determine the matrix using vector algebra (as we did in class), or decomposing it into a sequence of rotations (harder, but not that hard). In the book, they do something very similar for pointing cameras at things.
No, project 3 is not being announced yet.
As many of you have guessed (and I think I may have told you), this year's project 3 will be an update of last year's project 3. (there WILL be changes, including an improved sample solution that you should use as your starting point)
Every year, I get feedback from students on how to improve the projects. Last year I was given a lot of (conflicting) ideas about project 3.
This year I'd like to try an experiment: I want to ask for feedback on the project before you've done it. Yup, that's right: I want to ask your opinion now, while I am trying to form the project, even though you haven't experienced doing it.
So, what I would appreciate (and this is optional, but will be very much appreciated):
If you want to send your comments anonymously, print them on a piece of paper and stick it in my mailbox, or give it to me after class. (I promise not to open anything until I've forgotten who gave it to me). Or send it to a TA and they'll strip your name off and forward it to me.
Ben Schneiderman of the University of Maryland will be giving a seminar on Thursday, November 15th that should be of interest to everyone in the class. Prof. Schneiderman is a pioneer in the fields of Human Computer Interaction and Information Visualization.
His talk is entitled "Information Visualization for Knowledge Discovery" and will be in 1221 at 4pm on 11/15. There will be cookies beforehand in 2310.
We have graded the midterms and assigned numerical scores, but we have not decided what grades these correspond to.
There is a file in your handin directory called "login-midterm.txt" that has your score. You'll see two final scores, an initial (out of 70) score, and a "corrected" score. Because of some issues on 2 questions (they were consistently misinterpretted), we have everyone who got them wrong 1 point back on each.
The (corrected) mean and median is 52. A statistician would be happy. (remember, the scores are out of 70).
An answer key is available at pub:midterm-key.pdf. Note that for some questions, there are multiple right answers. And, for some questions, if you misinterpretted the question (but got the right answer for your misinterpretation) you will effectively get full credit (after the correction factor).
In the coming days, we'll provide a mechanism for you to look at your exam, and provide some explanations of how we arrived at scores.
In your P1-Final directory, there should be a file called "login-grade.txt" (where login is your login).
Basically, things are graded on a 100 point scale. 60 points come from the 0-100 score of the features from the table we sent out at the beginning of the project, and 40 points come from things like actually turning in a project, doing the preliminary stages, etc.
The grade cutoffs are: A:92, AB:82, B:72, BC:62, C:52, CD:42, etc. If you were close, we gave you the benefit of the doubt (we gave you up to 2.5 points). Note: if you want your project regraded, we might not give you these free points.
We will have a project 2 help session on Monday, November 5, at 4:30 in 1221 (the same room as class).
Sorry for the short notice.
Please bring questions and/or ideas for things you'd like to hear about.
I have updated some of the readings on the readings list to be sample chapters from the upcoming 3rd edition of "Real-Time Rendering".
"Real-Time Rendering" is kindof a bible for real-time graphics programmers (like game developers). Its a great book. The new edition, which will come out next summer will be a substantial update. The authors have made some of the chapters available to us.
Here's a comic inspired by the rollercoaster project from last year! "Rollercoaster Sim" - y
Yes, I am giving you the answers to the homework before its due. I strongly recommend that you do the homework before looking at the answers (so you are sure you understand how to do it). But this way if you want to check to make sure you're doing things right before the exam, you can.
I am getting some questions from people (especially those who can't come to the review session). They are generally asking for clarification on the homeworks.
I am posting the answers at SomeExamReviewQs, since they might help others.
There is a page that describes the topics we've covered (to help you prepare for the midterm) here.
The rest of project 2 has been announced! This includes:
If you have installed Visual Studio on your laptop or home machine, make sure that you have downloaded and installed the service pack. This is essential for Vista, but turns out to be important for XP as well.
We (both CSL in the labs, and the course staff on their laptops) use SP1. There seem to be some incompatibilities if you take a program compiled using Visual Studio using the service pack and use them on a computer that doesn't have the service pack installed. (if you really want to know, it seems that the C runtime has been updated, and since we build programs to load the C runtime as a DLL, if you haven't updated VS, you might have the new one, and windows has this rather complex mechanism for doing the version checking).
This may solve some of the problems that people have had using libraries and programs we provide on their own computers.
(update: the problem isn't related to Vista, since at least one person has it on XP - see the October 21 message for some ideas)
At least 2 students have had problems with our FlTk distribution and Windows Vista on their laptops. We are looking into it, but I cannot replicate the problem on my laptop (which does run Vista). Yoh also has a Vista laptop and is looking into it as well. But unfortunately, we cannot promise to support everyone's laptop.
One student said that compiling her own version of FlTk fixed the problem.
Remember: make sure your programs compile and run on the CSL XP machines (in the Storm lab). If you need to use different settings at home, make sure that you hand in what is needed to compile in the labs. If the program doesn't compile and run on the Storm (B240) computers, it doesn't run.
I gave you feedback on what you handed in for the written Project 2 - Stage 1. You can find it in a file called feedback.txt in your P2-Written handin directory. The answer key is posted here. - y
We will hold an exam review session on Wednesday, October 24th at 4:30pm, in room 1221 (the same room as class).
We will go over any questions people have, so please bring questions. The session might be very short if people don't bring questions.
In fact, its even better if you send questions by email (to the professor) so we can be prepared.
If you can't make the review session, be assured that we will not cover any new material. We may try to record it to see if we can make things available. Also, if you have a question, send it by email, and we can either help you by email, or maybe try to make a "video explanation".
The Demo sessions for the projects (including P1 today) are in B240 CS.
Please arrive a few minutes early to get logged in.
Professor Dyer gave me the slides from last Wednesday's class. They're posted here. - y
Now that project 1 is done, its time for Project 2.
This is a reminder that the CS559 midterm exam will be Monday, October 29th, at 7pm. If you cannot make this time slot, you must contact the instructor before October 17th to make alternate arrangements.
In particular, we are aware that the CS577 exam is scheduled for the same time slot, so if you are taking both classes, you must contact us before October 17th.
Because of a family emergency (I need to go to the East Coast for a funeral), I will not be at lecture on Wednesday and Friday. There will be guest lectures.
On Wednesday (October 10th) - Prof. Chuck Dyer will talk about perspective. His lecture should give you some insight on what perspective is about so that when we go through the math next week, it will be easier to understand.
One Friday (October 12th) - The TAs will give a presentation on how to get started with OpenGL and FlTk. This will help you get started on the next programming assignments (that will be announced today).
The project 1 demo sessions will be:
Each student will sign up for a 15 minute slot to show off their project to the TAs/instructor.
There will be a signup sheet available on Wednesday. Yoh will bring it to class (so you can sign up for a time after class), and after that it will be posted outside of CX's office.
Please sign up for a time slot before the demos begin. If you can't make an available time slot, first check with other students to see if you can trade times. If you're still stuck, then send a note to the instructor to arrange another demo time.
Please come to your demo at least 5 minute early so you can get logged in and set up.
When we send email for feedback on assignments and projects, we will use your CS email account. If you don't check this regularly, please have it forwarded to an account that you do check.
I made a mistake in my notes (and therefore in the Lecture) on compositing. What I described as the "atop" operator is really the "held-in" operator.
For the project (and for the homework) we will accept either of the two to be correct. The notes have been corrected.
Everyone should have received feedback from me regarding P1 written homework. Send me email if you haven't received. - cx
Because of a family emergency, I will be out of town Wednesday through Sunday. There will be guest lectures both days, but I will not hold office hours on Wednesday morning, and I may not be responsive to email while I am away.
Since I'm sure that it will come up:
The policy for late projects has been posted here since the first days of class.
To paraphrase: Project 1 is due Monday at 11:59pm. If you turn your project in before 9:30am on Friday it is considered late. If you turn it in after Friday at 9:30am, it will be considered very late.
Late projects get a 1/2 letter grade penalty. Very late projects get another 1/2 letter grade penalty.
The first project that you turn in late, we won't penalize you for. So if you turn in project 1 late, you won't be penalized (but you'll have to turn in later projects on time). If you turn in project 1 very late, we'll waive the late penalty, but you'll still get the 1/2 letter grade for being very late.
While the exact point values for things have not been determined (the point values we gave were tentative and approximate), for project 1, a half letter grade is roughly 10 points.
We will also take into account the preliminary stages of the project in determining your project grade.
The targa viewing program that I gave a few days ago has a problem: it requires a windowing library (fltkdll.dll) to be in your path. I have placed this file in the directory (p:/cs559-gleicher/public/bin) as the TargaWindow.exe binary so you should be able to run it now.
The specification for P1 is ambiguous as to what the RGBA values for the fill command mean. It doesn't say if they are pre-multiplied or not.
You can interpret these values either way - providing what you do is consistent. Its probably safest to assume the user's input is not pre-multiplied and pre-multiply it for them. That way you don't have to decide what 255,255,255,0 means in the premultiplied case.
I (Mike) will be in the B240 lab tomorrow from 2:30-3:30 to help people working on projects.
As you should know from the project description, Project 1 is due on Monday (October 8th) at 11:59pm. Late projects will be accepted (see the Project Late Policy) until the demos begin.
The first demo sessions will be on Monday October 15 at 4pm, so no late projects will be accepted after that. Information on how to sign up for demo time slots will be given next week.
I have placed a simple TGA viewer program in p:/course/cs559-gleicher/public/bin/TargaWindow.exe
This program will show you what libtarga thinks your .TGA image looks like. It gives you the option of looking at the alpha channel, or compositing your image over a checkerboard (so you can see if alpha does what you think it does).
I have found that there are some .TGA files that seem OK when I load them in Photoshop, but don't work with LibTarga. (I am trying to figure out what the problem is). However, mysteriously if I save them in photoshop (using "save as" and writing a 32 bit TGA, they work fine. Yoh's font examples have this property.
You can use the TargaWindow program to check your results, and to look at your sample images.
If you haven't gotten that wonderful collection of sample images that Yoh promised to give to every one 2 weeks ago, but want them, please bug him. He also should have a collection of example scripts to test your program with.
here is a sample solution binary you can refer to if you're confused about a command or if you want to see if your program is doing the right thing. it's not thoroughly tested, so please email me (firstname.lastname@example.org) if you find problems with it. - y
The answer key for the P1 written assignment is available here.
You should expect some feedback from the TAs soon. CX made the key (with some additions from me), and I believe it to be correct. If you don't understand how we got an answer, please ask.
There is a trick to the compositing equations as presented in class that I forgot to mention.
The results of doing the compositing computations on pre-multiplied inputs are premultiplied.
This implies that if you use the compositing equations, as described in class, on non-premultiplied inputs, you'll get a premultiplied result.
Here's an example: (I'm using numbers between 0-1 rather than 0-255).
Aa Ac + (1 - Aa) Ba Bc
Its pretty obvious what we get out if the premultiplied version of the pixel (since we're multiplying it by alpha).
You can do a similar experiment and try to composite that half-full red pixel atop a full black pixel.
So, this is another reason why the premultiplied form is so nice: we get the same format answer out as we put in. Our system can work entirely in premultiplied form. This is especially handy if we are going to be applying multiple compositing operations (like A over B over C atop D over E).
Note: you can "un-premultiply" the results of a compositing operation by dividing by alpha.
Tentative values for the point assignment for the various parts of P1 are lists here.
These might change slightly, but should give you the idea. As you can see, you get the most points for doing the easy stuff (getting the basic functionality). So you should focus on trying to get the basic functionality working, and then try to get the more advanced and optional parts working.
Also, there is a premium on correctness. The points described are for getting things correct - not just for trying them.
Everyone should have heard back from me regarding what you handed in for Project 1 - Stage 2. If you didn't hand it in, I've talked to you or sent you an email. If you did hand something in, you should have gotten an email from me this morning.
i put up professor zhang's lecture slides from monday and wednesday here. note that you won't be tested on the mosaicing stuff in our class, but you can take the computer vision class if you're interested in that sort of thing. - y
The TAs are working on providing sample images and scripts that you can use to test your program. Check out the Test Images and Scripts page this weekend and early next week, because we'll continue to add to the page. - y
I have put copies of my notes (that I use to give the lectures) in: http://www.cs.wisc.edu/graphics/Courses/559-f2007/wiki/pub/Lectures/
These notes were designed to help me give the lecture, they may or may not be useful for a student trying to remember what was said. Some people have liked them in the past, so here they are.
Note: sometimes, I have more in my notes than we cover in class.
I got a good question about the naming of the B-Spline kernels. An answer is here.
Next week, we will have guest lectures in class:
The TAs will be in class to answer project related questions.
I will be out of the country to present at the ACM Multimedia 2007 conference. My email connectivity will be limited, so please send any urgent questions to the TAs.
I thought I would remind everyone that Project 1 Phase 2 is due on Monday, 24th. I suggest that you start early so that if you have problems with the mechanics (figuring out how to build the sample code, ...) you can ask.
The notes that I made for the help session are here. Although, most of the discussion was in response to questions.
For those of you who came, thank you for having such good questions and for staying so long. I hope it was helpful.
For those of you who couldn't come, I strongly suggest that you start working on the project soon so that you can unearth questions early enough so that we can help you.
This written homework, including handin instructions, is available here.
The book has a pretty nice discussion of various filter kernels. However, it is missing one of the most popular filters for image resampling: the Lanczos (windowed sinc) kernel. If you really want to know this stuff, I'd recommend learning it. (its beyond what's required for the class)
You can find information about it on the web (for example at Wikipedia. There is a discussion of the various resampling kernels by Ken Turkowski here that might give you some ideas as to why someone would choose one filter over another.
At Monday's help session I (Mike) will talk about C++ programming, and how this leads to the design of the example code that you should use as a basis for Project 1.
Bring Questions - I can guess what you might want to hear about, but I might guess wrong. You might want to look over the sample code ahead of time to see if there's anything you want to ask about.
If you can't make Monday's help session, I plan to put my notes for it online. But, if it goes anything like previous years, a lot more of it will be discussion and not from the notes.
There are also C++ programming hints at Main.CPP (go to the bottom).
You might notice that in the sidebar on the left, there is a link to Project 1.
Because we're a little bit slow in getting this out, and we haven't really talked about alpha and compositing yet, the first phase of the project (described here) won't be "due" Monday. Look at that page for details.
Please look over the project, and the sample code. Some of the things won't make sense until we cover them in class, but you should be able to get started.
Everyone in the class should have their own handin directory now. The handin directories are in /p/course/cs559-gleicher/handin/LOGIN (where LOGIN is your cs login). You should have read access to your handin directory, and write access to the subdirectories inside of it. Please check it.
We'll have a help session to discuss project 1 (yes, it will be announced by then), discuss some C++ programming tricks for the project, and maybe review some of the relevant image processing things.
Monday, September 17th, 4:15pm. 1221 CS (the same room as class)
Prof. Gleicher's office hours are cancelled on Wednesday 9/12, and the last week of September (9/25, 9/26)
We need a picture of each person in the class. We won't show it to anyone (we're going to put it on the private "staff web") - but its helpful for us to learn who people are, and if we need to remember you in the future. Yoh (the TA) will take pictures before and after class on Friday and Monday, or you can stop by his office hours.
We're trying to get plain headshots with a plain background.
There is an "entry survey" that is required of all students. You must do this survey - we will not accept any other assignments from you until you have completed the survey.
The survey is on Learn@UW - the campus wide "course management system". Go to http://learnuw.wisc.edu, log in using your "wisc" account, and you should be able to access the course's Learn@UW content. Right now, the only thing there is this one survey. Part of the role of this survey is to make sure that everyone can access Learn@UW (including the course staff).
The survey is available now (or it should be), and will only take a few minutes to complete. Please do it as soon as possible. If you have any problems with it, contact a TA or the instructor.
If you're trying to decide whether or not to take this class, I recommend you look at the Should You Be Here page. I'd also recommend the Basic Info page for the course and looking at last year's web.
In case you haven't already noticed, the "front page" of the course web is for announcements to the class. You might be looking for the Basic Course Info, which is often found at the front door of course webs. Once we get past the first few weeks, you will probably want to see the announcements much more than you want to see the Basic Course Info.