Lecture 23: Final Competition and Student Feedback

Flash and JavaScript are required for this feature.

Download the video from iTunes U or the Internet Archive.

Description: Students vote on which ray-tracer images are accurate enough to be included in the competition, and these entries are tested against each other for speed. Students also provide feedback on the course.

The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To make a donation or view additional materials from hundreds of MIT courses, visit MIT OpenCourseWare at ocw.mit.edu.

SAMAN AMARASINGHE: Welcome to the final competition. So you guys survived this far. And I don't know how. I think, probably, with very little sleep. And knowing all the emails that I have seen and all the check-ins.-- I don't know how many people had-- Who had any sleep within last 24 hours?

AUDIENCE: Haha.

SAMAN AMARASINGHE: Oh, OK. [LAUGHTER] OK. And also what we looked at was the quality of the results keep improving because he was running tests to check what's going on. And when we moved to a machine, the things ran very fast. We're like, wait a minute. Why is this running that fast? Because people had checked in more and more, faster and faster versions. So things improved, not because we checked in faster machines, but you guys actually did a lot of work.

So first before we get started, I want to thank Akamai. So we and Akamai got this nice place. And then we are going to give a demo. And we're going to have a party sponsored by Akamai, which is really cool. So you guys actually see something-- what the real-life people who care about performance do. So it will be really fun.

And also, I also want to thank most of our MIT POSSE that help you guys a lot in meeting with you individually. So we have people from Akamai, [UNINTELLIGIBLE] Digital, Google, Lockheed Martin, MathWorks, Wordica, VMWare and couple of independent consultants who basically put lot of their sweat and edge in helping you guys.

CHARLES LEISERSON: And Microsoft.

SAMAN AMARASINGHE: And Microsoft.

CHARLES LEISERSON: So let's give a hand for the posse, MIT POSSE.

[LAUGHTER]

CHARLES LEISERSON: And a couple of the sponsors. SAMAN AMARASINGHE: So here is the process we are going to do today. Today's about the competition. So we've set up a very strict set of rules that we are going to go through, which is not going to be the way we are going to grade you guys. Because we are going to be little bit more lenient. So this is the set of rules we are going to do.

So we had a lot of these images that you get submitted. And some images were not exactly same. People did little bit things. They made them look little bit different. So what they said was instead of we're deciding. We will let you guys work on images which can participate. OK? So don't be harsh to your friends.

So what we'll do, we'll first go through the images. And then well you guys can say which images should be part of the competition. This is for the competition. Then at the end, after you get the Akamai sponsored prize-- not for the grading. So the fact that the images start to count, that doesn't mean you get zero in the grade. But you won't get to participate in the competition.

So after that, what we have done is we looked at all your projects. Ran them on our 12 core machine. And we will show you and seed them. We'll say here is the order of everything happening. And there are--

AUDIENCE: [LAUGHTER]

SAMAN AMARASINGHE: There are some-- Basically, what we'll do is we'll pick out the top set of seeds in them because we don't have time to run through everybody. And basically, a lot of these things live are not for the 48 core machine.

And then the-- accepted image that ran faster, got generated faster in the 48 core machine, wins the prize. So that doesn't mean that when you start grading, we will look at all the images and we will do some averaging. We will do a lot more fair. But hey, this is a competition. We just need to find the top guy so we have a top group. So we have a much more faster thing. SAMAN AMARASINGHE: So to get started. So here are some of the images people generated. So what we want to do is show the reference image. That's the reference image. And what we'll do is we'll first go through everybody's images generated, so you get a feel for all the variations out there. And then after that, we'll ask you to go out. We'll ask you if you don't want that image to be part of this.

[LAUGHTER]

SAMAN AMARASINGHE: You'll see. OK. So this is the reference image. Why don't you go through-- Charles. Mike.

AUDIENCE: Yep?

SAMAN AMARASINGHE: Why don't you go through the rest of the images.

AUDIENCE: OK. So before we we get into the images that we actually rendered in the last few hours, I just wanted to like honorable mention for this. I think this is the coolest. I'm sure you guys have been looking at a whole variety of broken ray tracer images But I think this is pretty much the coolest thing I've seen. So honorable mention for that.

And so now let's look at things that people actually submitted. First we're going to go through all the images and sort of look at the range. And then we'll go back and vote on them. And so I'm just going to flip through the ones on the right and give a couple seconds to each.

SAMAN AMARASINGHE: So see if they can identify the artifacts.

AUDIENCE: Which one?

CHARLES LEISERSON: You got to say when you're going because otherwise people aren't going to realize that you've been through three of them already. Here's image one.

SAMAN AMARASINGHE: Image--

AUDIENCE: Here's the next one.

SAMAN AMARASINGHE: Image two.

CHARLES LEISERSON: That's five. Four, five.

SAMAN AMARASINGHE: Image three. image four, image five, image six, seven, eight, nine, ten, 11, SAMAN AMARASINGHE: 12, 13, 14, 15, OK, 15. There are some groups that we could not get the rendering. Either it crashed, or after ten minutes it was still hadn't produced an image. So they're not a part of the competition. And of course we run them for the finals. OK, now the vote time. OK, so this image, in or out? Who thinks out? Whoa, you guys are a harsh crowd. OK.

[LAUGHTER]

CHARLES LEISERSON: Who thinks in? Who thinks in?

SAMAN AMARASINGHE: Who thinks in?

CHARLES LEISERSON: We've got to get you both. Who thinks in?

SAMAN AMARASINGHE: So we know--

AUDIENCE: Do we get screwed for this?

[LAUGHTER]

SAMAN AMARASINGHE: Imagine that. OK. That image is out. You can take notes, OK.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: OK, next image.

AUDIENCE: Number one's out.

SAMAN AMARASINGHE: OK, this one, in or out? Out. OK.

AUDIENCE: Probably the same.

SAMAN AMARASINGHE: OK, it's out.

AUDIENCE: It's got the funny ring at the bottom, which I guess that's what most of you are picking up on. I think that's kind of disqualifying for the derby.

SAMAN AMARASINGHE: OK, how about this? Out? In or out?

AUDIENCE: Out.

SAMAN AMARASINGHE: Out. Whoa.

CHARLES LEISERSON: Wow, you guys are vicious.

SAMAN AMARASINGHE: Exactly. OK, how about this? How many people think they should be out? OK, I guess that'll get in here. I guess-- OK, that image is in. OK. Make sure it's in. How about this one?

AUDIENCE: It's okay.

SAMAN AMARASINGHE: Who says it's out?

AUDIENCE: [INTERPOSING VOICES]

SAMAN AMARASINGHE: OK, Who says it's in? I think it's in.

CHARLES LEISERSON: You should look at the water.

SAMAN AMARASINGHE: Water.

AUDIENCE: The water has holes.

CHARLES LEISERSON: The water has holes. That's what's going on. The water has holes.

AUDIENCE: [INTERPOSING VOICES] It's the only one we're going to be able to reference.

SAMAN AMARASINGHE: OK, so what's the this is in charge?

CHARLES LEISERSON: Let's do it again.

SAMAN AMARASINGHE: OK. CHARLES LEISERSON: OK, you have to point out--

SAMAN AMARASINGHE: What's the problem?

CHARLES LEISERSON: --what's going on in the image.

AUDIENCE: Yeah. I think we should-- I mean, do we want to get people to like say why they think it's in or out?

CHARLES LEISERSON: It's helpful to say what's in the image, though.

AUDIENCE: Yeah.

SAMAN AMARASINGHE: OK. Let's take a vote again. How many people think it should be out?

AUDIENCE: OK, that's out. OK, yeah.

SAMAN AMARASINGHE: OK, next image.

AUDIENCE: Number 5, on the slide.

SAMAN AMARASINGHE: OK, in or out? How many people think this should be out?

AUDIENCE: Is there any problem? I mean, what's the--

[INTERPOSING VOICES]

[LAUGHTER]

SAMAN AMARASINGHE: I don't think there's a problem. OK, good. Next one. How many think this should be-- OK. That's unanimous, that's out. How many think this should be out? OK, I guess that's in. This another one?

AUDIENCE: Yeah, I think it's interesting to flip back and forth and see the difference between these two. Like, these are very close, right?

AUDIENCE: Yeah. It's obvious they're using this one.

[LAUGHTER]

SAMAN AMARASINGHE: OK, how many think they should be be out? That group once is going to kill everybody.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: How about this one? How many people think this should be out?

AUDIENCE: There's not enough caustics. You don't see the floor.

AUDIENCE: Yeah, that's an interesting point.

[INTERPOSING VOICES]

AUDIENCE: Say what?

AUDIENCE: We went past ones that look the same.

[INTERPOSING VOICES]

AUDIENCE: It's really not fair. When you have an image and then put that image right after that it's not fair.

SAMAN AMARASINGHE: We will keep this in because there's few people want it out, but it looks pretty good. OK, next image. OK, how many people think this should be-- OK, that's a clear out.

How about this image?

AUDIENCE: It looks OK. It's fine.

SAMAN AMARASINGHE: It's fine. OK, anybody want it out? No? OK, good. That's in.

Next image. How about this image?

[INTERPOSING VOICES]

[LAUGHTER]

[INTERPOSING VOICES]

CHARLES LEISERSON: We really should start the reference--

SAMAN AMARASINGHE: We need another slide to see how many people want that out.

CHARLES LEISERSON: --identical images and people could be voting.

[LAUGHTER]

AUDIENCE: Is there an explanation why all of the yellows have been so far different from the reference image?

[INTERPOSING VOICES]

[LAUGHTER]

SAMAN AMARASINGHE: So I guess this image is in. OK, next one. How about this image?

AUDIENCE: It's fine.

SAMAN AMARASINGHE: Fine. OK, anybody want it out? No? OK. How about next one?

[INTERPOSING VOICES]

SAMAN AMARASINGHE: It looks pretty good.

AUDIENCE: It's pretty good.

AUDIENCE: It's messed up on the left and the right.

SAMAN AMARASINGHE: How many people-- We have to count this one. This is too close. One, two, three, four, five, six, seven, eight, nine, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19. 19 out. Who says it should be in?

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Oh, I guess it's out.

AUDIENCE: Oh, the number of hands is more for out.

AUDIENCE: OK, and that's it.

SAMAN AMARASINGHE: That's it. So now, next thing we are going to do is, we are going to show you a rank in our seating.

AUDIENCE: Yeah, so we seeded you guys on the 12 core machines. So we seeded you guys based on the time that it took for scene three on the 12 core machines. So here is the ranking so far. Top one is number one team. And we ranked about the top 10 or so. SAMAN AMARASINGHE: Show the real run time.

AUDIENCE: I don't have the run time, actually, for the seat.

AUDIENCE: For scene one?

AUDIENCE: Yeah. Actually, I can get it real quick.

SAMAN AMARASINGHE: You had the graph, didn't you?

AUDIENCE: I don't have a graph.

SAMAN AMARASINGHE: So here are the rankings of the top ten. Do we have that graph?

AUDIENCE: What? I don't have a graph.

AUDIENCE: He has numbers.

AUDIENCE: I just have the numbers.

[INTERPOSING VOICES]

AUDIENCE: There's all kinds of other numbers, too.

[INTERPOSING VOICES]

AUDIENCE: We'll say unplug this.

SAMAN AMARASINGHE: No, nobody can see it.

CHARLES LEISERSON: It's okay.

AUDIENCE: Do we want to get the rankings?

SAMAN AMARASINGHE: No. Now, what we're going to do is we're going to start from the bottom and start running it on our 48 core machine. And while it's running, we want that team to say a little bit about what they did to get their performance. So--

CHARLES LEISERSON: We need to knock out the one--

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Either come prepared when you have formed your presentation, or make your image run very slow. So you don't have to. So I guess--

CHARLES LEISERSON: First of all we have to knock out the ones whose images did not render.

SAMAN AMARASINGHE: Oh, that's true. That's true. That's true.

CHARLES LEISERSON: So maybe they all get knocked out. And then everybody goes home with an iPod.

SAMAN AMARASINGHE: Or nobody.

[LAUGHTER]

AUDIENCE: Can we just put the next one up? Here we go. Now we have time for everybody.

SAMAN AMARASINGHE: OK, there we go. So this is the time for all the images. So is there any of these images today getting knocked out, can you check that?

AUDIENCE: We're pretty close.

SAMAN AMARASINGHE: Which images get knocked out?

AUDIENCE: So I'm looking at them from bottom to top.

AUDIENCE: This is the-- I think this one's knocked out.

AUDIENCE: Number one, two, and three.

[INTERPOSING VOICES]

AUDIENCE: I think David Lamb and Victor Wang got knocked out. Because this is their image here.

SAMAN AMARASINGHE: That got knocked out. The last image got knocked out.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: What's the next group?

AUDIENCE: In between-- the A group--

[INAUDIBLE]

[INTERPOSING VOICES]

AUDIENCE: This one was the water. 19.

AUDIENCE: Yeah, that was.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Uh-oh, they're getting knocked out.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: OK, that got knocked out, too.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Oh, man. Yeah, nobody competing at this point.

[LAUGHTER]

[INTERPOSING VOICES]

SAMAN AMARASINGHE: That survives. That survives. Push! We have a survivor. So that might be a knockout by default.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Oh, that is out. Oh, man.

AUDIENCE: Ours is so close though.

[LAUGHTER]

[INTERPOSING VOICES]

SAMAN AMARASINGHE: That's all right. OK, I at least we have two people right now.

AUDIENCE: Wasn't that the one that was really dark?

AUDIENCE: This is the one that was sort of darker--

[INTERPOSING VOICES]

AUDIENCE: Like they don't have enough.

[INTERPOSING VOICES]

AUDIENCE: So here's the two reference images.

SAMAN AMARASINGHE: We already voted. We can't vote again.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: No-- leave them knocked out.

AUDIENCE: Some people voted against it, but--

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Yeah, but it didn't get the quorum. It didn't get a quorum to get voted out.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: How about other group? First one, let's look at that.

AUDIENCE: Who's this?

[INTERPOSING VOICES]

SAMAN AMARASINGHE: OK, that survives. That's good. Mangpo. OK. That survived, too. Two. That's all right. Li Chen.

[INTERPOSING VOICES]

SAMAN AMARASINGHE: Ooooo.

[LAUGHTER]

SAMAN AMARASINGHE: Oh, man. That's a... So that is a knockout blow there. Now what we're going to do is, we're going to run it on from 48 core machine from the bottom. So we will let other teams also, if we have time, to come and explain what they did. We are running-- who's now?

AUDIENCE: This is a Dobs.

SAMAN AMARASINGHE: Dobs. OK, why don't you guys explain what you did.

AUDIENCE: Come up here.

AUDIENCE: Need the mic?

AUDIENCE: I think the mic is off.

CHARLES LEISERSON: The mic is on, but it's only for the video.

SAMAN AMARASINGHE: Video.

CHARLES LEISERSON: You have to use the mic but you can't hear the speaking.

AUDIENCE: So we parallelized the ray tracing part. The two for loops for going through all the pixels on the screen. And then we also parallelized the main loop for caustic elimination. And we changed the-- sort of the data structure-- how that works. Used some like bounding boxes to make the intersection faster. I don't know what else we did.

AUDIENCE: We found ways to get rid of--

AUDIENCE: Mic, please.

AUDIENCE: We found ways to get rid of a lot of trigonometry, which actually helped a lot. And we got rid of the recursion in locate photons, which was a major roadblock.

SAMAN AMARASINGHE: Question.

AUDIENCE: What did you do for that? How'd you get rid of the trig?

AUDIENCE: Repeat the question.

AUDIENCE: They were converting from XYZ coordinates into spherical coordinates and then back again, over and over. So we just didn't do that.

[INTERPOSING VOICES]

[LAUGHTER]

AUDIENCE: Slow down.

SAMAN AMARASINGHE: It slow down. Uh-oh.

AUDIENCE: No. The seating was done on scene one. Right?

AUDIENCE: Oh, yeah. Oh. Wait-- Apples and oranges.

[INTERPOSING VOICES] I just ran scene three.

[INTERPOSING VOICES] 48. Scene three. So there might have been a slip.

SAMAN AMARASINGHE: No. But this scene one is much more simpler. OK, good. So you're on the board now?

[INTERPOSING VOICES]

AUDIENCE: How is the seating being done in scene one if it doesn't have a surface that's--

[INTERPOSING VOICES]

AUDIENCE: --caustics. It might be that some people did really fast on that one and--

AUDIENCE: Because we ran everybody's scene three. And we guarantee that the top end teams are on it.

[LAUGHTER]

AUDIENCE: The results are rigged.

[LAUGHTER]

SAMAN AMARASINGHE: He detained the tape. OK, good. First team is in. Then the next team.

AUDIENCE: That's Elizabeth.

SAMAN AMARASINGHE: Elizabeth--

AUDIENCE: Scott, right?

SAMAN AMARASINGHE: There we go. Why their thing is being run.

AUDIENCE: Are you running it?

AUDIENCE: All right. So I guess for the display surface, the main optimization there was imagining two planes at the top bound and the bottom bound and seeing if a ray passed through them and then only checking that section of the grid. And then even within like that square bounding box--

AUDIENCE: Like if there's a square, and then the ray's going through like that, there's a bunch of grid squares--

AUDIENCE: Could you use the mic, please?

AUDIENCE: Like if a ray's intersecting a square, there's still a bunch of grid squares above and below it that you don't have to check. So we kind of imagined it as a-- projected it onto a 2D surface. So we didn't check additional superfluous grid squares. We also did the thing where we got rid of the trig by transforming from polar coordinates to XYZ coordinates. Although, before that, we used the fast sign and cosign approximation, which was almost as fast. Using a quadratic curve, which was kind of cool.

AUDIENCE: I think those are the main--

AUDIENCE: We did an SSE matrix multiply, which barely speeded it up, but whatever.

[LAUGHTER]

AUDIENCE: We moved stuff into...

SAMAN AMARASINGHE: So you are the team that had issue going to Intel to AMD.

[INTERPOSING VOICES]

AUDIENCE: Yeah, we were complaining about--

[INTERPOSING VOICES]

SAMAN AMARASINGHE: If you use Intel, certain instruction is not the same in AMD. OK, good. So we are waiting for the time to come?

AUDIENCE: So we ran it once, but we forgot to time it.

[LAUGHTER]

AUDIENCE: It was fast enough that we could run it again--

[INTERPOSING VOICES]

SAMAN AMARASINGHE: So by the way, I want to give a chance for the top team that get knocked out, explain what they did. Even though they are not in competition because they ran much faster in the same run. Who's the top team?

AUDIENCE: [UNINTELLIGIBLE]

SAMAN AMARASINGHE: Who's the top team up there?

[INTERPOSING VOICES]

CHARLES LEISERSON: They're getting sleep.

[LAUGHTER]

SAMAN AMARASINGHE: OK, 59. Uh-oh, now we-- Oops. OK.

AUDIENCE: Ooo...

SAMAN AMARASINGHE: Inversion off that. OK, next team.

AUDIENCE: So our team also did a same trick. That was done in the previous two teams. We got rid of the trigonometry. And also used a bounding box. Basically described in the previous team. And we also tried to use SSE. But as soon as the news about an AMD machine, we got rid of that.

[LAUGHTER]

SAMAN AMARASINGHE: Oh, my look at that speed.

AUDIENCE: Whoa.

SAMAN AMARASINGHE: Whoa. Woo!

[LAUGHTER] OK.

AUDIENCE: If you want to take-- could we take more time to talk about it--

SAMAN AMARASINGHE: Yeah, sure. Yes.

AUDIENCE: Because I'm sure you guys have some things that are different than everybody else's. In fact, I know it.

AUDIENCE: It's on. It's just on.

SAMAN AMARASINGHE: It's on. It's on. It's already recording. So for the cache I use like a three-dimensional grid. Because I realized that as the old times, the torrents is like usually one, unless there's some outlier. But I don't see one in my case. So I use a three-dimensional grid. And use a lot of locks to prevent contention. So I do the same thing for photon map. I basically implement my own photon map and just get rid of theirs. And also, the same thing, like using a grid. And I spent a lot of time debugging.

[LAUGHTER]

AUDIENCE: And we also do some minor optimization. We implement the rendering crest as a reducer. So that we-- a hyper rod object So that every time Cilk steals some other's job, you will create a local view of the rendered object. And we found there is a artifact that-- because we are seeding the rendered object. The default that seed is two, right? And it will create some artifact in our image, so we use a random number to seed that rendered object. That's what we do. And also, we do something like we change the-- no, we don't have locate photon. Yeah OK. So we have done a lot of thing to improve the original photon med but after that we decide to change our implementation of photon med so we don't use that. OK.

PROFESSOR 1: OK, good. Thank you. OK. OK, the suspense is on. So the final team. OK.

STUDENT 8: So one of the first things that happened is that we looked at the code and, like, it was all a KD tree. And we're like, what's that? So we got rid of that immediately and we turned it into something-- I think the other groups might have talked about it, but we gave it a nifty marketing name, we called it a photon cube. And so we created lots of these. We partitioned the large cube environment into many small photon cubes so we could just jump in and look in the relative air vicinity of photons that you're looking for.

STUDENT 9: Yeah. So this is like, when you do locate photon, you know the reference photon and you can create a sphere. So we can do constant time to find the boundary of the photon cube. Like go from x1 to x something, y to y and z to z. So then we don't have to traverse the tree. And we basically parallelized two part, so the one in render and another one in the trace photon that when we try to put the photon in the map.

And also when we create a photon to the cube, there is a reused vector to start a photon in each cube. But then it's not really good, because when you put the photon in the cube, you have to, like, new photon. Which means that the memory, it's like spurts throughout your program. So after that we convert that into a block of memory. And we use that when we call locate photon.

STUDENT 10: And for the last, about surfaces that intersect. There were four kinds of optimizations. First one is checking if the origin of ray is outside of the maximum bound and lower bound of surface, then and check whether by direction is outside or if it's toward the outside then we don't have to check, just return false. And second thing is like the square cube thing. When rays intersect we can make a boundary by directly mapping to the XYZ at the surface at the maximum boundary and lower boundary of the surface.

And also when you iterate through the x index, we can cut off again because a bitmap. We only have to check with the indexes which correspond to ray's z index at that cube, at that x location. And the last thing was for each square we pre-computed the minimum value and maximum value of y and we compared the rays by value within that range. And we just cut off if it doesn't intersect. It doesn't overlap.

PROFESSOR 1: OK. Good. OK, now this is the suspense part. OK. We are going to run this and see. The time to beat is 18.7. OK, right? Again. OK. There we go. Let's see. How many people think it's going to beat 18.7. 18.6. OK.

AUDIENCE: 8, 9, 10--

PROFESSOR 1: It's the excitement. Keep counting. OK. There we go.

AUDIENCE: 13, 14, 15, 16, 17, 18, 19--

PROFESSOR 1: Oh, oh, oh.

AUDIENCE: 21, 22, 23, 24, 25, 26.

PROFESSOR 1: Oh, OK. It came out as 26.41. OK.

[APPLAUSE]

PROFESSOR 1: So you guys are the winners. Come up here.

AUDIENCE: Danielle.

PROFESSOR 1: Where's Danielle?

AUDIENCE: Uh, Danielle disappeared.

AUDIENCE: Yes, she did.

PROFESSOR 1: OK. Let's see whether she can find her, so OK. Just hold on a second until--

AUDIENCE: Yep, there we go.

PROFESSOR 1: You can put it down now, though.

PRESENTER: So this one's the reference.

PROFESSOR 1: Put a text meter in, that's better.

AUDIENCE: Which one's reference?

PRESENTER: This one's the reference.

PROFESSOR 1: I think they don't align. Can you align them?

PRESENTER: There we go.

PROFESSOR 1: OK, so we have a winning team.

PROFESSOR 2: We have a winning team. And so it's my pleasure to introduce Danielle Smith, who is the University relations for Akamai, and she's here to give you guys your prize. So we have three winners.

DANIELLE: I just wanted to make an entrance is why I came in. Thank you. First of all, welcome to all of you guys for coming in, and we wanted to give you these prizes. So we have some cool iPod Nanos, which you may or may not have already, but it can't hurt to have another. They kind of burn out or you lose one or someone steps on it.

[APPLAUSE]

DANIELLE: Congratulations. You guys have worked really hard.

PROFESSOR 1: Congratulations. Congratulations. Congratulations. OK. So what's next. That's it. We are done?

DANIELLE: All righty. So we have plenty of food, it's going to be right on the atrium. I know that's the most exciting part. But it should be arriving in the next 10 to 15 minutes, so we have a few minutes. I thought maybe this would go a little bit longer.

PROFESSOR 1: We do have a couple of things we can chat about.

DANIELLE: Yeah. So just a couple of housekeeping things. If you need to use the ladies' room or the men's room, it's actually right outside that door. Out the double doors, you'll see it right there. I have invited some other Akamai employees to come and mingle and say hello to you guys, so I encourage you, if you see any faces that aren't familiar, to kind of go up and talk about your projects and introduce yourself. And thanks for coming. I know we wanted to switch it up a little bit because it was the last class. We wanted to get you out of the classroom and just kind of shake it up. So I'm glad that you came to join.

PROFESSOR 1: And the knock tours.

DANIELLE: And the knock tours. Thank you. So on the back of your name tags, there's a number, one, two or three. One, two or three. So that correlates with the knock tour that you're going to be on. We have to keep it to relatively small groups. So the first tour will be at 10 past 4, the second one will be at 4:40, and the last one will be at 5:10.

PROFESSOR 1: I guess if we don't have too many people we might be able to compress some--

DANIELLE: Yes.

PROFESSOR 1: So we'll see whether we can do that, compress--

DANIELLE: Yes. So I'll just call the first tour and you guys can go down. And obviously it's optional. Don't feel-- if you're not interested, you don't have to go on the knock tour. I think that's it.

PROFESSOR 1: Good. Thank you.

[APPLAUSE]

PROFESSOR 1: We can talk about a little bit. So one thing. We are trying to get HKN feedback up to hopefully 90%, and we are right now at what, 11?

PROFESSOR 2: No, we're a little bit higher. We're now at about 16 or so.

PROFESSOR 1: 16. So that's a little more way to go from 16 to 90. I hope you guys go back and then fill out this survey. Very important.

PROFESSOR 2: Please take a few minutes to do that. It really helps us in, even if you want to say bad things, OK? It really helps overall to give feedback and the department likes to see these things. Oh yeah, thanks. Likes to see how it is that people are responding to the courses. So if you hated the course, if you liked the course, in particular, we have some questions on there that are specific to how we teach the course next year.

One of the ideas we have for next year is to introduce our recitation sections, which would focus on the use of tools. OK? So basically the conceptual stuff, much as we have the lectures now, but then also having something where it really takes you through each tool, and teaches how the use of those tools which would be taught once a week. So if you think that's a good idea, that's going to really help to have that kind of feedback. And it will certainly help the students who take it next year if we can persuade the department that that's worth staffing the sections next year.

Also if you have any positive things to say about teaching assistants, that's a great place to put it. OK? If they helped you get through this term, this is a great place to say thank you and it only takes a few minutes. OK? So I'm sure that some of the TAs put in more than a few minutes, OK, on your thing. So to take a few minutes and say thank you on that form would be-- I'm sure they would very, very much appreciate.

PROFESSOR 1: One thing, as Charles mentioned, what we are trying to do in recitation is do a little bit of programmer life skills. So I know all of you guys are probably very smart, can think about the complex algorithms and stuff like that. But there are a lot of tools that, it's not the smartness but you can spend hours trying to figure out. But if you know it, it will be useful. So what we are trying to do is have these recitations to say OK, how to use a debugger. And even how to change a makefile. Things like that.

So one thing, until the food arrives, I'd like to say is, get some feedback. Think of what is a tool you'd like to know or like to learn, or something you think is very useful for people coming next year to learn. That if you have spent a lot of time worrying and you think you spent way too much time trying to understand, it would be easier for us to think about that. I mean, I would like to get your feedback. And also some of you probably will open up with some general feedback on class.

AUDIENCE: I don't know if you want to repeat that. A more in depth thing on how to use git would be really useful. Because I know it has things to make your life easier, but I don't know how to use any of them.

AUDIENCE: Yeah. women are always breaking the branches. And it's like, yeah, we maybe know how to do this and it is really easy. And then we're like, use this git command. And it's like, now your branch is broken.

[LAUGHTER]

PROFESSOR 2: Good. So git

PROFESSOR 1: Yeah. I mean that's because those are interesting tools because, if you know everything right, you can do a lot of fun things. But if you do it wrong, you end up in huge mess that all you do is scored all over the place and you don't know. So yes. I mean I can relate to that.

AUDIENCE: If you use git correctly, if you know how to use git-- If you learn how to use git you will find yourself using it even when you're working on a one person project. git is awesome. I can highly recommend learning it.

AUDIENCE: What would be helpful is that telling us that you are running on an AMD box and AMD doesn't support SSE 4.1 instructions.

[LAUGHTER]

PROFESSOR 1: Yeah, I mean, this is supposed to be X86 compatible, all those things. But I mean, some people learn the hard way that, OK, the word is not the same even though--

PROFESSOR 2: But that is part of the lesson of the course, is how do you make high performance portable? OK? And so what you choose or don't choose to use is-- But I agree.

PROFESSOR 1: That's why we ran, we want to run it the night before because we knew things like this would happen. So we can at least give some time to say OK, look. Go change something. Were you able to fix that? OK. Good. So yes.

PROFESSOR 2: Good.

PROFESSOR 1: And sometimes the problem is, a lot of these small changes you don't know until you run into things like this and oh, somewhere in page 256 in the manual that there's a footnote say, oh, by the way. And that's what happens in there. I mean if you had listed everything that would be probably and entire encyclopedia of things that you will see.

PROFESSOR 2: So one other thing that people ask about is, what comes after this course? OK? So next term Saman is teaching the compiler course.

PROFESSOR 1: It's Martin.

PROFESSOR 2: Are you teaching with him?

PROFESSOR 1: No.

PROFESSOR 2: Oh, you're not teaching. OK. I thought you were. OK. So in any case, compiler course is a good follow-on course. For those who haven't done 6.046, that's a good course and I'll be teaching that course next term. In addition, how many people here have done a UROP? Few of you. So let me encourage you to look for UROPs. You now have some skills that will make you really valuable. And in particular my group is looking for--

[LAUGHTER]

PROFESSOR 2: Probably two more UROPs than I have already. Already Boone is one of my UROPs, started just a couple weeks ago. And so we do have some other projects in both architecture and in software-related things. And so. if you're interested, you go to my group's web page. It tells you five things you have to submit if you want to work in my group. OK? That includes things like samples of your code. Well, you ought to have that by now. And so forth. So let me encourage you to do that. And Saman also has active participation of UROPs in his group.

PROFESSOR 1: Yeah. So my employees already started doing a project in my group. And I'm also looking for a couple more people to do some compiler, runtime system, and a bunch of high performance type projects I have. And also for future course, one course I want to also mention is this IAP. There's a course that is done with collaboration with VMware to look at how to build scalable large systems using this the Spring and Java platforms.

So if they're interested in trying to see how things were running on one machine and run something that can scale up to hundreds of machines. If you have ideas of creating an I 8 with web 2.0, interesting thing. Here is an opportunity to do that. So if you're looking for interesting IAP courses, this is great.

PROFESSOR 2: I really encourage every single person who completed this class to do a UROP with somebody before you leave. It's really a way of integrating your knowledge. And it is one of the most valuable experiences that you can have at MIT is to do a UROP for a professor and get involved in the research of a group. Because in some ways it's like this course, in that it integrates knowledge from a lot of different sources. And it isn't just one thing.

But even more than this course. This course we still are dealing with artificial things. And in the researcher arena, you're dealing with real problems. So let me just once again encourage you to spend some time getting a UROP and certainly looking for AUPs and MEng. How many people here are looking at MEng as a possibility? So a fair number. Yeah, that's good. That's great.

PROFESSOR 1: I want to add to that. So these days there has been a big philosophical discussion saying why do you have to have universities? You go to OCW and sit home in your bedroom and you can follow all these courses, and you don't have to pay a mighty tuition. And wouldn't that be good enough? One part that's not good enough is this class. So I mean think about it. I mean you can't go get the OCW catalog and have this kind of a dynamic. There's no seventh floor. All in OCW. And you have from there to go and get motivated. So that's one part of that.

PROFESSOR 2: There's no John or Reed or Eric or Josh to respond quickly about what's going on.

PROFESSOR 1: That's one. But I think one other thing that a lot of people miss when they look at all of the curriculum and stuff like that is the UROP ability. So a lot of these people, that is something, it's very unique to MIT and a lot of people benefit hugely with UROPs. I have had UROPs who started with me as seniors. By the time they are graduating with their MEng they have two first out papers in the best conference out there. And everybody thinks, when they say they are looking for a job, they are finishing their Ph.D and looking for academic jobs. No. They are just finishing up their masters.

And I have a couple of students that managed to become really expert in an area by being a UROP. So they are finishing up at MIT as a generalist, saying give me a job. But you're finishing up and have some deep knowledge in some area. Sitting in and at the same level as most Ph.Ds or most really deep practicing engineers in that area. So that level, even if you don't do that, just seeing what happens in a research group, being participating on that. Pushing, seeing something to the maximum limit.

I mean in the class, that's a limit. I mean even though this class is somewhat open, says make it run as fast as possible. But most of the time in the class, it's like, we give you something, if you made that, OK, you're done with it. In research, there's no limit. You really, really push your boundaries. What's that?

PROFESSOR 2: So what do we have here, John?

JOHN: I counted in my mailbox how many messages came from 6.172 staff, and it's about 3,500 over the course of this term.

PROFESSOR 2: Wow.

[APPLAUSE]

PROFESSOR 1: How much time--

PROFESSOR 2: So, this is also, as Saman mentions, a programmer life skills course. And one of the things that you should get used to in life is thanking people who help you. OK? I think that all of the MIT POSSE members, all the people who devoted, volunteered their time to help you, could really appreciate an email that says thank you and what exactly you feel you learned from them. OK? Because it's one thing to just say thanks, so long, et cetera.

In addition, these people are contacts, part of your network of understanding what the world of software developers is all about, and can serve as useful contacts to keep. How many people use a service like LinkedIn or something to-- You probably all you mostly use Facebook. Anybody use LinkedIn at this point? So many professionals use-- I don't want to pitch for LinkedIn, but it is one of the services that lots of people are on. So what are some of the other services that people use for professional contacts?

AUDIENCE: The only thing people try to contact me on is LinkedIn.

PROFESSOR 2: Yeah. So, good idea to start connecting and building a network of people who you know and who can answer questions for you. OK? Such as, gee, I'm considering these two kinds of job offers. What should I be looking for? It might be good to get a professional software engineer's input to that. OK? Because you know these folks. You've had a few meetings with them. OK? And they know you. And they may be able to say here's my take on that, as well as getting input from your family and your friends and your professors and other people that you know.

But I do think that courtesy goes a long way in life. And they really have, these are all people, as I say, who spent time looking over your code. And you should have heard some of the comments we got from them after project one. Oh my God, they have a single letter variable names for the whole thing. Or, what are you teaching these students? And I said no, this is exactly why we want you there. OK?

So I think that if you feel in particular, whether or not you feel you got anything out of it, OK? But in particular, if you did get something out of it, it would be really good idea to not forget to send some email off to thank them.

PROFESSOR 1: OK, we want to get some feedback from them.

PROFESSOR 2: Sure.

PROFESSOR 1: Have open mic?

PROFESSOR 2: Open mic?

PROFESSOR 1: Yeah.

PROFESSOR 2: Actually, open mic, let's do it like this. Because I think it'll be easier and better for the video if we just have people come up and--

PROFESSOR 1: I don't know that they're going to be too intimidating.

PROFESSOR 2: That's OK. They can handle it. These are seasoned-- So, comments about the class.

PROFESSOR 1: How we can improve? We'd really like to hear that. I mean things you liked and didn't like. For example, these absolute gradings we did for projects had passionate support and control let's say before. I mean, did you guys feel giving the top marke for the fastest and having at least a log scale, no, we didn't do a linear scale going down. I mean, hey. Was it motivating or demotivating?

PROFESSOR 2: So what do people think was the most valuable thing out of the course? I've had dinner with a few of you, and you were very opinionated over dinner. So I don't mind hearing those comments again, but making them for other people. So I know it's intimidating, but what I want to do is get a line. As one person's talking I want other people to line up behind. And just give us some feedback.

PROFESSOR 1: Come on.

PROFESSOR 2: OK, come on, come on, come on, come on. Who's brave? Yeah, yeah, yeah yeah. You got halfway of your seat. Yeah.

PROFESSOR 1: Yeah, come on.

PROFESSOR 2: I'm sure you have an opinion. Who here does not have an opinion?

PROFESSOR 1: Sure. Yeah.

PROFESSOR 2: Yeah, yeah, good. And then you can line up right-- there you go. OK? There you go. And then others can come up behind as they're motivated.

AUDIENCE: Good afternoon. First of all, I'd like to thank the professors and the TAs for this opportunity. This is absolutely wonderful. And all the students I worked with. You were all great.

I just wanted to say when you were talking about what the most valuable thing in the class people thought was, I don't even know how to pick. Of the projects that we worked on, or that they worked on, I looked at every one and just thought, what of the content of this project have I used just in the past year? And the amount of stuff that I've made significant use of that you guys covered has been at least 75%, maybe even more, of the material of the class.

And that means that if you look over multiple engineers, you probably pretty quickly get coverage of 100% of it. All these projects, profiling, parallelism, algorithms, bit hacks, these are all things that I use on. if not a daily basis, then a weekly basis.

PROFESSOR 2: OK. Good. Thanks. Thank you.

[APPLAUSE]

AUDIENCE: So for me, like, I really had no experience with C or C++ or really distributed version control before this class. So a lot of my time I think was spent kind of learning the basics of that. I spent a lot of time initially learning the basics like pointer arithmetic and that kind of stuff. And then a lot of time learning the profiling tools. So I wish, I really do wish more time was spent kind of-- well, your recitation, I think, would be a good way to really get that out of the way. Because the algorithmic stuff was more easy for me, which I thought was kind of ridiculous. You know?

[LAUGHTER]

AUDIENCE: The fact that these tools are what's holding back, that I have to spend a lot of time learning.

PROFESSOR 1: This is actually something very interesting people have observed. So if you do physics problems or math problems, if you run into an issue, after a certain amount of time you will just go ask somebody. But in programming, people seem to go on and on and on trying to debug this simple thing. And part of that, part of what we try to get is also not just all the cool algorithms and stuff like that. To give you a process. Because there are times when you start saying this program is slow, what you do? And I think that's a missing part sometimes about the process of debugging. If the program doesn't work, what do you do? Where do you start? I think that's why we are trying to do a little bit of, basically, these life skills.

AUDIENCE: It was great to learn but it was more stressful to learn. I'm not as willing to ask as a lot of people, so it's hard for me to--

PROFESSOR 1: So one thing we're trying to do is probably--

PROFESSOR 2: That's great feedback.

PROFESSOR 2: We will try to formalize next year the seventh floor lounge, because a lot of people who came there benefited. But have it a little bit more. And also get a little bit more life skills type things early on. Like if you find a problem, what will happen?

AUDIENCE: It could be a lot longer than that.

PROFESSOR 1: Yeah.

PROFESSOR 2: Yes, so that's our goal, is to make it so that people come up to speed more quickly. But in some sense, another goal but I have here, next year, is that the C students will stay in the class. OK? So what happened is most of the C students dropped out. So in case you want to know, most people are going to get A's and B's. OK? So most of the C students dropped out. And I would like to have people complete the course, even the C students, feeling that it's useful to complete the course.

AUDIENCE: So I think again, as the person before me, I learned a lot. I hadn't had almost any experience in C or C++ before the class. I had some experience with git. But I think that the class has a lot to offer. There's a lot of content covered. And I wish that, for example, there are things that I wish that I could have learned more about, how to implement in a formal way. Things like SSE instructions.

So I feel that like there was a clear cut off of people who had a lot of experience and they could be like, OK, I know how to do assembly, I know how to do other things, and if I want to optimize this function I can, whatever. Write it down. And then there's these other people that don't have that much experience that in a class it mentions this is how you use SSE or compiler optimizations. It's kind of mentioned but not really more in depth.

This is a case of how do you actually do this in real life? I mean, I think maybe the examples given in class were useful but very superfluous. Like you don't really know. I know that I was looking through other projects that were similar to ours for the final. And I think it's a class that you taught in IAP. There was a team of people that did a ray tracer in the multi-programming. And they used SSE and CMD everywhere. They packaged everything. But that's something that I said, it'll be really awesome to do, but I have no idea how to start doing it. And I think that there's still a lot of room to actually apply the concepts that are trying to be taught.

PROFESSOR 2: I think it's our intention actually to increase that part of the course, the data parallel part of the course. Which I think we'll be able to do. One of our concerns about adding material has been, OK, that means you guys have to learn it too. But I think that if we're able to reduce the workload of the learning of the tools by having recitations, we then can look at adding other material, and expect that the load on students won't go up.

AUDIENCE: Right. I mean even what I want to say. It's not even adding material, what I think. I feel that I was going to class, learning all of these cool things. And then I was looking at my project and it's like well, these are the things that I know how to do. And I know that they mentioned all these other things in class. I don't know how to make them in my project.

PROFESSOR 2: Great comment.

PROFESSOR 1: So I think one thing both good and bad about this class is what happened in-- I think it applied to all of you. When you try to teach computer science, you get people who are for the first time they are writing any piece of code more than 20 lines. And you get people who are checking in code for Apache. And you have that entire range of people in the class. So how do you teach everybody? And a lot of times when you give a fixed project, either somebody's completely struggling to finish that, or they are like in a day is done. They are like, so what's this? What's new?

The thing about performance is, asked lot of people, figured out there's no end to it. And you can keep doing it, you can do more, you can do more deeper. So the nice thing about-- one thing about this class is that there's something for everybody in that. So if you are struggling still, if you're learning, you can still get to someplace, learn a lot. But if you have done that when you are in the fourth grade, you can still go and do something more, push that.

So we try to keep that balance in there. So we don't want to bore anybody. And also we don't want a lot of people dropping out of the class either.

AUDIENCE: So continuing on with what other people said, I also ran into the same problems with that. Just the syntax, just the tools. So I guess I'll start off thanking John and Reed, they're really fast and good at what they're doing. And I feel like I've asked a lot of dumb questions, and they're good at answering those.

[APPLAUSE]

PROFESSOR 2: So John and Reed and Josh all took the class last year. OK? And it's amazing, if you ask John how he did on the final project--

[LAUGHTER]

PROFESSOR 2: He didn't do so well. OK? But it's amazing. You'll discover, it's amazing what you guys are going to learn next semester after being out of the class. Because you're on a path to learning this stuff for yourself now. OK? And you'll find that in all kinds of things you do that all these skills, you can keep building them. We will definitely be looking for TAs next fall. And so people who are interested should-- who are going to be MENGs should-- and even if you're undergraduate, you're still allowed to work hourly for the class. In fact, that's what John is doing. So if you're interested, please let us know. Please let us know.

PROFESSOR 1: So you can have this nice experience as a TA.

AUDIENCE: Yeah, so, and then I want to say something that I really love about this course. I feel like it's such an integrated experience. It's, maybe except project one, everything after that is, you get a piece of code, as you would normally, and then everything is within your bounds of-- you can do anything that you want. So I really like how it's not limited to like, oh, we're on this topic so we're going to write a little algorithm that implements this particular algorithm, and then move on to next unit, and then nothing ever comes together. So that's something I really love about this course.

And the next thing I want to say is the beta grading. For project three, I was working with Angela, I feel like from beta to final, because I don't have much experience with C, so it takes me so long to just get the syntax right, to get my own going. So for beta, we didn't have anything working. It doesn't even build. But with two or three more hours, we got it working. It's not super fast, but we kept working on it.

And by the final we have something I felt pretty proud. But the beta grading doesn't take that into account. Like if you are not very experienced with C, it takes you a long time, longer than other people have experienced to get something going in the first place. But beta kind of penalizes you for just not having enough time to do things you want.

PROFESSOR 1: I think it's a double-edged sword. Because if you don't do beta, then you have very harsh. You have one time code, it's in and out. If you just really don't do, give that much grading for beta and make it optional and stuff like that, people just drop beta. They don't just do anything in it. So we try to do something, give everybody a true chance and get everybody a real motivation to actually work for both sides. Because for a lot of you guys, beta defined and you learned a lot. Because you got something in beta.

And for most of the classes I have, we had things called checkpoints. For example, compiler class, you had to do a checkpoint and checkpoint will be used more like subjectivity to grade. We don't say how many grade percent checkpoint. But if checkpoint has nothing, then we'll be very harsh grading later. We always provide that. But still, people don't take checkpoint that seriously. But here we have to try to make something to make people get beta seriously, do something there, and then give them the opportunity to improve. I think there's a balance in that somewhere.

PROFESSOR 2: And I wouldn't worry about your grade.

[LAUGHTER]

AUDIENCE: Maybe like one idea I was thinking is maybe there's some component of improvement from beta to final. Like the proportional improvement that you made from beta to final.

PROFESSOR 2: Oh, that's a good idea, actually. That's a good idea. Yeah, to say, if you made a-- Although you want to be careful about people sandbagging.

[LAUGHTER]

PROFESSOR 1: Exactly.

AUDIENCE: And then one last small thing--

PROFESSOR 2: I want to make sure we get to everybody.

AUDIENCE: OK, sorry.

PROFESSOR 2: So if you want to go around to the end of the line.

AUDIENCE: That's actually mostly all of it.

PROFESSOR 2: OK. Thank you.

AUDIENCE: So I've said some of this on my evaluation, which I already turned in. But I'll repeat it for everyone else.

[APPLAUSE]

AUDIENCE: A couple things. One relating to the grading which you mentioned. Honestly, I found it incredibly stressful knowing that it was competitive grading. Because we had no idea where the benchmark was. So it's like, well we've improved it. But did we improve it enough? Did everyone else not improve it any more than we did? And it was just like having it be a complete unknown was pretty stressful. So I don't know if there's some way you could do like a-- like maybe the TAs got some speed up, and that's the benchmark to start with or something.

PROFESSOR 1: I guess what we did this time is basically we gave the best grade as a benchmark for the final. And if you go above that, it's just bragging rights.

AUDIENCE: I mean, when you're working on the beta, you have no idea what's going on. But I did like that. Once you know where the benchmark is, then it's nice to know what you're aiming for.

PROFESSOR 1: So the thing about that is, the flip side of that is, we don't want somebody that a lot of courses they say OK, I'm done. When you go there something, Oh yeah, I met the thing, OK, I'm getting a good grade, OK, I move on. I mean, we want people kind of to keep pushing in time. Because sometimes the thing is-- If I have a minute, I'll tell the story.

There's this guy named Tony Danzig who basically invented the simplex method. His thing was, he was always late to class. He went to class one day and there was-- normally the professor writes the problems on the board. So he copied the problems down and went home. And they were really hard problems. And so he was like, damn. I don't know how to solve this. And he worked very hard and solved it. And wrote a note to the professor saying I'm sorry this is late, and put it on his desk.

And a couple of hours later he gets this excited professor running around trying to find him. Because what the professor had done is written two unsolved problems on the board. He came late to the class, he didn't know that, he had two problems, he copied them down. He worked very hard and solved it.

[LAUGHTER]

PROFESSOR 1: And so the professor said divide this up, you get your pay at the end. Then there's lots of it. So this is something like that. If you give the thing, if you know where we are going, for some people it will be a hard climb. But other people, they will get there faster, they'll say OK, I'm done. And what we want to do is give them the ability to kind of really push to their limits, not some artificial limit. But not to penalize too much for that. We try to balance this out. So I want everybody to go to their best limits.

AUDIENCE: I had one other thing to say. Have you considered or would it be possible to make the class more than a 12 credit course?

[LAUGHTER]

AUDIENCE: No, seriously. Since there is so much material and we keep talking about wouldn't it be nice to add this and add that. But I don't know about you, but I spend a lot of time in this course already. And I mean, I think it's the kind of class where you could pack 16 or 18 credits worth of material into it.

PROFESSOR 2: More realistic would be to have a follow-on.

PROFESSOR 1: Try to make it as two classes.

PROFESSOR 2: To make a two-semester sequence. But I think Saman and I still feel that this, it's like, OK, that's a new development effort. That this class still-- I think we feel that there's more than incremental improvement we can do to make the class teachable. For example, by introducing recitations. And so I think once-- maybe after next semester, next fall we can we can-- But thank you, because I think that that would be good.

And the whole idea of the sections is to try to reduce your load. There used to be a thing that was on all the evaluations that they no longer do. And this is actually before I got to MIT. They had a measure called cums per tooling hour. OK? So a cum is how many units of knowledge you're using in whatever measure, and tooling hours, like how hard you work. And they got rid of it because they said it was not quantitative. After all, what's a cum? All right.

Well, regardless of the fact they got rid of that, because I think that it actually was a very useful measure, even if people are subjective about it. That's our goal in the course. It's not to make people spend a lot of time and then have learned epsilon. It's to have them, for the time they put in, learn as much as possible. And so I think that we recognize it's a lot more work right now that you folks are going through. We hope that it's rewarding work. But we hope we can do even better in terms of giving people the opportunity to learn these things.

PROFESSOR 1: So we are thinking about cutting things. We all are thinking about what to eliminate even if we add something. It's very hard because we think a lot things are useful-- important. But something has to give. So that's the hard decision.

PROFESSOR 2: Yeah, we're thinking of cutting caching and parallelism.

[LAUGHTER]

PROFESSOR 1: OK.

PROFESSOR 2: OK. We have to hurry because we gotta be out of the room by 4.

AUDIENCE: I just wanted to say that I agree. That I didn't really like the way the course was graded. But I did like the material in the course a lot. So that was good. But for one thing, the thing about the competitive grading was that it was way more stressful than necessary. My luck was good because we had the kind of benchmark thing. It was a reasonable high performance to attain.

And also I didn't like the way some of the stuff was weighted. For example, it didn't really correspond to how much time I spent on it. The pset was worth like 3% or 4% of the grade and it took like hours, I think. Many, many hours. That's all.

PROFESSOR 1: OK, thank you.

PROFESSOR 2: OK.

AUDIENCE: There is one thing that's pretty general about course six, I guess, is that they're really lenient on prereqs. Since I've only been at MIT for like three months.

[LAUGHTER]

AUDIENCE: So yes, I'm a freshman.

PROFESSOR 1: One freshman in the class. There you go.

AUDIENCE: I'm really thankful that Professor Leiserson and Professor Amarasinghe let me into the course without any prereqs. And I like the breadth of the topics. But I think with office hours we could have gotten a bit deeper into them. And one suggestion I'd like to make is that get the nightly builds working. It was there for one night for project one, and that was it.

[LAUGHTER]

AUDIENCE: So I decided this is my last--

PROFESSOR 2: Can you talk in the mic?

AUDIENCE: So this is my last term at MIT. And I decided to take things easy by not taking that many courses and TAing this course.

[LAUGHTER]

AUDIENCE: So yeah. It would be nice to have 48 unit TA shifts too.

PROFESSOR 2: Thank you.

AUDIENCE: I just want to say that this was like-- should I take it?

PROFESSOR 1: Sure.

AUDIENCE: OK. That this was like an amazing class. I think everyone can agree that we learned so much that is not found in textbooks. And what I thought was really weird is that every little random thing I've ever read on the internet related to coding, I guess, has come up in this class in like, useful, come up like useful in this class. Like every little bit of outside knowledge that you take yourself has appeared useful in this class later on. And I thought was really cool.

And related to the hardness that people are talking about. I think everyone came into the class bracing for the absolute worst, because we've heard about you guys.

[LAUGHTER]

AUDIENCE: But, yeah. I was actually really pleasantly surprised that there were helpful TAs waiting in the G7 lounge for you, even before office hours start. And so I was actually really pleasantly surprised by-- just like everyone, the class. I feel like everyone who has survived until this point has some sort of magic skill. That you really learn a lot by working with them on the group projects. And so I was just really inspired. And I thought it was a great class.

PROFESSOR 1: Thank you.

PROFESSOR 2: Thank you.

[APPLAUSE]

AUDIENCE: Hi. I love the class. I appreciate you Professor Leiserson, and everything that everybody else before me said. I just wanted to mention two things I don't think were mentioned. Beta programming, to be honest, was amazing because except the final project, everything I did was beta programming in the projects. And the amount of bugs that we avoided because of that is ridiculous. Especially when we're doing pointers, and if it doesn't work, make it a pointer, and all those philosophies that we came up with. That's the first thing.

Second thing is, and I've already mentioned this. A book or readings for this class or links. Because as amazing as the lecture slides are, a lot of work done there, so thanks a lot. They're hard to connect together, especially when you're trying to figure out what our cache-oblivious algorithm is trying to do with those. So that's pretty much it. Are you telling me the stack overflow is as much as this course? Well, thanks a lot again for the TAs. Most of my learning came from them, to be honest.

[LAUGHTER]

[APPLAUSE]

AUDIENCE: Hands on learning. Hands on. Thank you.

[LAUGHTER]

GUEST SPEAKER: Hi. my name is Harold Pokob, I'm the head of engineering at Akamai. So I wanted to use the opportunity to thank all of you for taking the class. Charles was my adviser when I was at MIT and he told me about his plans for the class. I thought it was a great idea. Getting a lot more hands-on experience going. Back when I spent time at MIT, it was a lot more theory, and Scheme was one of the main programming languages. So in that context I really like this type of class. And I'm glad MIT is investing in that and supported from Akamai. So I'm honored that we could sponsor it. I'm very happy you're here. There is, I think, refreshments downstairs in a few minutes.

PROFESSOR 2: Yeah. I'd also like to ask Harold to say what the topic of his master's thesis was.

[LAUGHTER]

GUEST SPEAKER: My master's thesis was cache oblivious algorithms.

[LAUGHTER]

PROFESSOR 2: So you have Harold to thank for one of the papers that you read during the term.

GUEST SPEAKER: It's nice that something that I did in academia is still used. Not all now practical business stuff that I do these days. Great to have you here, and I hope to see some of you downstairs. And I've got to actually go into a meeting at 4:00 for half an hour, but I'll be back down afterwards. Thank you.

PROFESSOR 1: Thank you very much for sponsoring this event and getting all the food.

[APPLAUSE]

PROFESSOR 1: OK. Now we have food.

AUDIENCE: We also have quizzes here.

[LAUGHTER]