 So, today, I don't have much of a plan, except answer questions about the exam. And when we run out of questions, we'll leave because it's nice outside and there's some sort of other talk going on right now. All right, so, yeah, today is just open the floor for exam questions. Just the latest update on people completing the assignments. So remember that you have, we're going to hold office hours through the remainder of the week, but you have, you know, probably until like next Friday to complete, keep working if you want to keep submitting things. Again, we'll keep answering questions on the forum and stuff like that. No office hours next week. There's exams, but we do have office hours for the rest of the week. So, if you're still working on assignment three or assignment two, you know, keep coming in. There's still people around to help you. I think it's going to stop. Oh, you know what? There we go. Okay, the course evaluations are now about 72%. I suspect everybody in here has done the evaluations. That's the problem. I ended up talking with the people that did them. But if you have some friends in the class, you might want to email them and say, hey, you should do the evaluation. The exam is on Monday, so you just don't have that much time left to get your plans on these questions. And I actually really want you to do this because then I don't have to write as many questions. So please finish these, right? Yeah, so right now there'll be a short answer release as soon as I write it. And then when you get to 80%, you get the medium answer or 95%. It's possible that these might come out on like Sunday night or something. So that's, but, you know, a little bit of time is better than none. So please, please finish these. The evaluate, has anyone done the evaluation? I'm assuming most people have. It's short, right? Yeah, it's easy. I'm sorry it's so ugly. Oh my God, they have like a, yeah. No, it doesn't count the people that dropped the class. I know. Good, good, good try. I like that, yeah. I know, I know, I know that too. And still, I know exactly how many students are in the class. And I can add the two numbers that are on the sheet, right? And they add up. No, I'm just, you guys are, this is good. You guys are, you know, you guys are regression testing me, but no. I've done the math. There's 118 students left in the class. There's 118 students, I don't know why they have that button. I don't know why a lot of things about the course evaluation system. But anyway, okay, so yeah, please, I mean people can't withdraw a late but no one has done that as far as I know, so, okay. Plus, you saw 5%, I'm not asking for 100, that's asking for 95, right? Okay, so I want to give some shout-outs to the staff this semester, and I hope you guys will help me with this. Particularly, Carl and Carl is here. You know, Carl has obviously been here a lot. I, you know, everybody in the course staff has done great work this semester. And I think the performance of students in this class on the assignments is a reflection of that. But Carl has, you know, done something very unusual this semester, or obviously he's been here. He's been lecturing. I think he's been pretty good at lecturing. How many people agree with that? Yeah, I mean, Carl's awesome, right? So I really want to thank Carl, and let's give him a round of applause for, I've lost track of how many times he was a guest lecturer. When I asked him the first time, I was like, oh, this will just happen once, right? And now it's like, I don't know, it's been like 10 times or something. So it's sort of a little bit embarrassing on my part, but I mean, Carl's been fantastic. And I think for him, given what he wants to do, this was a nice experience as well. And he obviously is really good at it. So by the way, I'm gonna suggest to the powers that be that Carl actually teach this class next year. I know that they're looking for people to do it. Maybe they found people already, but maybe Carl is better than the people that they found. So if he does that, then the course will be taught largely in its present form. Some of you guys may end up being involved with it and stuff like that. But I don't know if that's gonna happen. You know, obviously no one cares what I think anymore about anything, so all I can do is offer an alternative and see what happens. But I mean, how many people here think Carl would be a great instructor for the class? Yeah, me too, okay, great. I won't ask you to vote. Won't embarrass anybody. Okay, the rest of the course TA, right? So Ali and Carl have been doing a great job recitation. Vicki's been doing a great job in office hours, so let's give them a round of applause. Also all the grading that they did. By the way, Carl reminded me to remind you to pick up your midterm papers. There's a lot of people that haven't done that yet. If you want to have some sense of, A, how you did on the midterm, and B, mistakes that you might want to avoid on the final. So we have those available, come by office hours and we can pick up your paper for you. The ninjas, so obviously there's only people that did office hours this year. You know, I probably don't have all of them even up on the slide. Some of the people that finished have been showing up in office hours. So I think this is a big reason why the class works the way it does. I'm sure that you guys have your favorites on this list, but I think that all these people made a contribution, so let's give them a big round of applause. Okay. Yeah, and none of these people were paid to do this. They were all sort of doing it out of the goodness of their heart. I put together a slide at some point for talk I was giving about how many office hours the volunteers were doing and I was looking at it and I was like, I didn't tell Bridges to do six office hours a week. Like what is he doing? But anyway, he wanted to, so he did that. And I think you guys benefited, particularly Bridgesh with his hack nights and things like that. This was great. Okay, exam. So the exam is next Monday. It's in this room, unfortunately, because it's a tight fit, but we'll, so essentially the exam, we're gonna handle it in the same way as the midterm. Karl reminded me to remind you that that requires you having a UB ID. So if you don't have a UB ID for some reason, you have until Monday to get one so that you can take the exam. The format is gonna be the same as in previous years. So the midterm is typically an exam that people feel like is hard to complete in the time allotted. How many people agree with that statement? Yeah, so the final exam is not. It's about twice as long, but you have about three times as long to do it. So, you know, perhaps in the same way, there are 10 multiple choice questions, six short answer questions, one of which I'll release, one or two medium answer questions I haven't decided how many I wanna bother writing and then two long answer questions that you have to answer of potentially three. The medium answer question on the exam is similar in expectations to the long answer question on the midterm and the medium answer question and most of the multiple choice and short answer questions will focus on material that we covered in the second half of the class. So I guarantee that the medium answer question will be on something that we covered since the midterm. So virtualization, file systems, things like that. The long answer questions, anything is fair game. So if you look at previous exams, the long answer questions, you know, can cover stuff from the first half of the class. They can integrate material that you guys have done throughout the class, whatever. So those are designed to be more holistic. Any questions about the format? Okay, questions about the exam or material that we covered in the class or life skills? Well, I'll give you guys a minute to think about this. Let me make a few suggestions. So now you're done with the class, right? And there may be some holes in your schedule. Some people were like, oh, I'm gonna get out my gaming laptop. I don't know, I don't necessarily support that, but let me talk about some things that you can do next, at least here at UB. So there are some decent courses that are follow-on to this. How many people will be here next year taking classes in some form? Okay, awesome. So some courses that you might like. So the database class, I would suggest taking this with Oliver. These are just my personal preferences, as far as people who I think teach the course in a way that's rigorous and will give you some chance to hack on stuff. So Oliver teaches a very nice version of this class where he and I share a lot of the same approach to sort of how we do this. So the class is implementation heavy. You get to build real things. A lot of the grading is automated. It's performance driven. So that's a neat class. Distributed systems. So Steve's version of this class is from what I hear pretty cool. Some people are taking that now. Is anyone taking that now? Is it good? Yeah, okay. So a lot of the graduate students take these two classes together. This is a good option. This is taught in the spring by Steve, I think. Although I don't know about next year. No promises. Networking. Again, how many people know something about a computer network? Okay, you guys should. Yeah, come on. The internet, right? So you can't graduate from, this is why people are like, oh, UV graduates don't know anything about how computers actually work. I mean, you should study something about networking before you leave, right? That's kind of a component of the modern computing environment. So Demetrios, I think a nice version of the class. There's some cool assignments. People, graduate students took that as well with Demetrios. Is it good? Absolutely. Okay, yeah, so what Dave says is good. What Dave says is good. I trust Dave's opinion of other classes. There's also some of the graduate level. I don't, again, my interest in the schedule here is waning, but I think there's this class taught sometimes by Steve or by other people, of course on advanced computer systems and more of a project-based graduate class. I do think other graduates have taken this class, but we have to do weird things so could you guys credit for it? Yeah, so let me make sure not to let you leave without a ringing D-dorsement of C as a programming language, okay? C is a miserable, terrible programming language. It was invented a long time ago. It's not C's fault, it's just old, right? Programming languages don't age well, unlike wines and bourbon and other things like that. Like you don't say, wow, what a great whiff of C. It's been in the bottle since 1960, okay? C is an old language and it's not a language. Do not, I'll just put it this way. Do not start a project in C unless you have no other choice. If you go to a company and they're like, our entire software stack is in C, I would be a little bit worried. Unless you're writing like kernel device drivers or stuff that's really, really low level, stay away from C as a programming language. It's had a lot of ugly problems. It's just old, you know, again. I mean C was a very important language a long time ago. Better options, go. Anyone programmed go before? Okay, so all the test 161 tool is written in go. It's awesome, it works really well. Rust, anybody written themselves some rust? Do you like rust? It's different, okay. Yeah, but actually this is kind of, this is cool because these languages are new. So there was this long period of time where kind of if you wanted to do systems programming and really get things to work quickly, which is not always a design requirement. I mean my biggest piece of advice is don't use any of these languages if you don't have to. Like write it in Python and be done. If it doesn't really have to screen, but once you have to build things that scale really hard or have really, really good performance, things like these systems programming languages are great options. But there's also been a lot of development in this space. So both go and rust are relatively new languages. Relatively new as in, you know, within the last decade. Now that these are languages that people are using to build real things and they work and they solve a lot of the well-known, well-understood problems with things like C and I would argue C++. Does anyone like C++? Okay, interesting. Anyway, I criticize C++ a lot, but C++ and I really don't know each other very well. So I should probably do some C++ programming again, but every time I look at C++'s examples online, I'm like, ooh. Okay, anyway, these are nice languages, a lot cleaner than C++. And again, really anything but C, you know. And I would probably say anything but any of these languages until you have a performance problem. Don't waste time, you know, getting things to go fast before you need to. Okay, the last thing I would point out, I mean, as you guys develop these incredible skills, I mean, I saw this poster up and there's a version of this poster up in the computer laboratory in Cambridge, UK about a couple months ago. And I've never seen this before, but I really feel like this describes my life now. And I think your lives as you get better at programming. I mean, you guys can really solve any problem you want. The question is just what should you work on? Like what, you know, problem should you tackle? And I would think carefully about that because simply you just don't have enough time, right? I have about six software projects sitting around just personal things that I would like to do. And then probably that many different other tools I would like to build that are professionally related. The barrier for you starts to be just time in the day, time in the week, rather than the specific ability to solve any of these problems. I know I can build all these things. Maybe I'm just an ecotistical asshole and so I'm overconfident, which is probably also true, but I know I don't see any like technical limitations to doing these things I want to do. I just don't have time to do them all. And so thinking about what you work on and the kind of projects that you tackle becomes really important. This is also, of course, true when you pick a job because you're gonna spend a lot of time working on just one or two things. And you'll be able to do those things and you'll build cool stuff, but there's lots and lots of things that you're gonna look at as a computer scientist and be like, I could do a better job of that and not have time to because we'd be doing other stuff. All right, back to the questions. Any questions about the exam? Otherwise, we can make this a very, very short class. Go out into the spring weather. There might be, yeah, no guarantees. Yeah, you will have to, let's put it this way. What is certain is that you will have to answer one medium question and two long answer questions. There may or may not be multiple options there. It just depends on how motivated I am between now and Sunday night. Okay, so this, yeah. Yeah, yeah. Well, let's put it this way. It's not all new questions. Whether it's a mixture or not, I don't know. You know, again, the midterm was supposed to be a mixture of new and old questions. Yeah, I mean, look, I still have a few questions that I haven't. It's so frustrating now when I write exam questions because I'll be like, I have this great idea for a question and I start writing it down and I'm like, wait, I go back. It's like on the 2013 final and I've already used it. So most of my ideas, I'm like, oh, it's new. I have a short memory, so. But, you know, the internet does not. Yeah, there definitely will be repeats from past years. There hopefully will be at least a few questions. Yeah. Oh, good question. What papers did we go over? I mean, there may be questions on paravirtualization. I think like the hint stuff is fair game. I mean, that's pretty general. There won't be, I mean, the high level stuff that we discussed in class is fair game on the papers. There won't be questions about details of the papers that we didn't ask you to look at carefully or stuff that we didn't talk about in class. But comparing full and paravirtualization as a technique and talking about what's different about them, like that would be fair game. That's stuff that we described in class. But no deep, deep details. Yeah. Did we cover the MIT Exo-Colonel? We did not. Yeah, so there are a few things from past exams that we didn't cover this year. That's a great point. We talked about OS structure. Kind of a boring lecture. We didn't talk about the Mckin's work on browser virtualization. We didn't do the Linux performance paper that we looked at last year. The content has changed a little bit year to year. So if you see something on an old exam, a question that's like referencing material that you don't think that we covered, then look at the slides, but it's possible. There were some things that didn't get covered this year. The people want, I can try to write some of them down in a post. Those are the ones that come to mind immediately. Okay, so you guys did, this class did extremely well on the assignments. I don't have the graph up here, but I went back for fun and sort of pulled statistics from the last few years and even, well, I mean, you guys did, by the time people gave up on assignment 3.3, you guys did a little bit better than last year's class overall, which I think is pretty impressive. I mean, I know that this is somewhat of a self-selected group. At the same time, there are more undergraduates in this class, the undergraduates historically have tended to do not as well on the assignments as the graduate students, so I think those two things balance each other out, but I think overall, you guys did really well. I'm looking forward to sharing the leaderboard with some people I know. I do have people that approach me saying, can you identify strong programmers to work at my company? And I don't do that anymore, I just send them that link. So if you're still working on assignment 3.3 and you're trying to get up there, I mean, that doesn't stop going away. I send that link to people all the time, all throughout the year, and I know that there's people that have, at least that's helped them get a job, right? So good luck on the exam. I will see you guys on Monday. Thanks for a great semester.