WEBVTT 1 00:00:05.400 --> 00:00:15.360 William Cheng: Okay, this is a week for discussion section. So just want to sort of wrap up a warm up to, because right now the only thing that should be left 2 00:00:15.990 --> 00:00:21.780 William Cheng: Is handling control. See, and as I mentioned before, if you focus on getting your simulation to work perfectly. 3 00:00:22.290 --> 00:00:30.660 William Cheng: Without worrying about control C. And if your first procedure all nice and simple handling, Control C should be very straightforward. Okay, so, so today I'm just going to briefly. 4 00:00:31.200 --> 00:00:36.360 William Cheng: Talk about control see handling and then I'm not going to start talking about the colonel programming assignment. Yeah. 5 00:00:39.930 --> 00:00:51.150 William Cheng: Alright, so the requirement of handling control see is that you have to terminate your simulation gracefully. So when the user press Control see your program shouldn't just die. 6 00:00:51.990 --> 00:01:09.060 William Cheng: So, so in this case you need to catch, Control C and in lecture, we talked about, you know, different ways to catch control. See, you can catch it asynchronously, which is not recommended and the right way to do it is to to to catch up inside a control see catching threat. 7 00:01:10.080 --> 00:01:10.830 William Cheng: So, 8 00:01:12.480 --> 00:01:15.960 William Cheng: So I guess one of the things that are important is that inside your simulation. 9 00:01:16.680 --> 00:01:24.240 William Cheng: You know, the requirement is that when you catch control. See, you need to print a line in your printout to say, Control C is caught 10 00:01:24.510 --> 00:01:35.880 William Cheng: And also from this point on, you should not generate any tokens or generate any packet. Okay, so that line is part of your simulation. So again, every event inside your simulation. They have to have a timestamp. 11 00:01:36.510 --> 00:01:49.080 William Cheng: Okay, so, so, so again we know what is this simulation, we are you this. The first line your simulation is beginning begin simulation and the last time we were simulations and simulation everything in between. You have to have a timestamp. 12 00:01:49.710 --> 00:01:59.760 William Cheng: Okay, so therefore, will you, will you know what we call control. See, you should create a message and that message has to have comes that you got to make sure that timestamp is sore that there can be no timestamp that out of water. 13 00:02:00.060 --> 00:02:03.540 William Cheng: Guys, okay, this is, you know, the simulation supposed to look like. 14 00:02:04.050 --> 00:02:17.280 William Cheng: Times you only go for it should never go back there. Alright, so once you print out that line to say that, you know, Control C has been pressed. So that means that you know the entire simulations should now try to gracefully shut down as soon as possible. 15 00:02:17.760 --> 00:02:21.210 William Cheng: Okay, so which means that you are. You're required 16 00:02:21.690 --> 00:02:31.530 William Cheng: To ask the Pakistan and the token a threat to die as soon as possible and the mechanism usually use is to use the cancellation mechanisms. So this way they would die as soon as possible. Okay. 17 00:02:32.070 --> 00:02:39.360 William Cheng: If you don't do that, then they will be, they may terminate at a later time. So again, if you need a grading guidelines that way that's going to take points off. 18 00:02:39.780 --> 00:02:44.880 William Cheng: If they don't die, you know, soon after you print out that line to say that, you know, Control C has been pressed. Yeah. 19 00:02:45.450 --> 00:02:53.310 William Cheng: The server threat. You are not allowed to terminate the server. So the server three they're busy serving a packet. They need to finish during the packet and then the server. 20 00:02:53.730 --> 00:02:59.280 William Cheng: They will all have to self terminate. When I say it again, you need to write code to make sure that this happened correctly. Yeah. 21 00:03:00.000 --> 00:03:08.460 William Cheng: Alright, so now let's just do it with your main threat is your main thread is supposed to create those for childcare and those also now you need to create the control see catching threat. 22 00:03:09.000 --> 00:03:14.190 William Cheng: You need to wait for all those for Chelsea has to die. But what about do you have to wait for the control C. 23 00:03:15.150 --> 00:03:25.290 William Cheng: Control C catching thread to die. The answer is no. You don't have to wait for it because you have control sees never press and if you try to join without threat. Well, then in that case your mentor will never return 24 00:03:26.100 --> 00:03:33.540 William Cheng: Okay, so therefore, some people insist that they want to join with the controls the kitchen threat. Well, in that case, right before you join with it. You should cancel it. 25 00:03:33.840 --> 00:03:38.130 William Cheng: Right. Because if it's a you know if the controversy catches there is waiting and singing segue. 26 00:03:38.340 --> 00:03:46.140 William Cheng: segue as a cancellation point. So in that case, if you calculate it will die right away. And then when you join with it, you're going to end up that you don't have to wait for it to die. 27 00:03:47.100 --> 00:03:54.090 William Cheng: Okay, so, so if you want to do it that way. That's fine. Also, it's perfectly fine, not to join with the control see catching threat. Yeah. Alright. 28 00:03:54.810 --> 00:04:01.500 William Cheng: So, so after you know all these students are dead right in that case, there still might be a pack is left over in Q1 and Q2. 29 00:04:01.710 --> 00:04:12.780 William Cheng: And these packet. We call them removed packet. Because what you're supposed to do, is that you're still in the middle of a simulation. You're supposed to be part of your simulation. You got to remove these packet one at a time. Because remember, 30 00:04:13.260 --> 00:04:19.860 William Cheng: Remember, since these are simulation event every time, will you remove a packet. You have to read the clock and then print out exactly what time it is. 31 00:04:20.370 --> 00:04:27.540 William Cheng: You know when you remove these packets. Okay, so once you finish removing all the packet and now your simulation and so you live, what you need to print out last life is a 32 00:04:27.720 --> 00:04:35.160 William Cheng: Simulation ends and again that law has a timestamp and that timestamp is going to be your total simulation time you going to use that to calculate your statistics. 33 00:04:35.460 --> 00:04:48.390 William Cheng: OK. So again, once you finish doing that now you can calculate statistics, right, and then you print out all the statistic outside of your simulation of a simulation simulation and star simulation and and then everything else. 34 00:04:50.010 --> 00:04:50.700 William Cheng: sort that out. 35 00:04:52.410 --> 00:04:56.880 William Cheng: Yeah. Alright. So if you're confused about this. Make sure you send me email. Yeah. 36 00:04:57.990 --> 00:05:08.310 William Cheng: All right, I guess this picture. I just explained on already. So again, there are different ways to do it. My recommendation is to use the control see catching thread. And then we saw the code. 37 00:05:08.580 --> 00:05:14.610 William Cheng: In lecture, over here, right. So the idea here is that your main threat as soon as you start your main threat you block you blocks again. 38 00:05:15.330 --> 00:05:21.540 William Cheng: OK, so now if control sees press that will become pending until they deliver and now you're going to create all your child through so 39 00:05:21.810 --> 00:05:28.200 William Cheng: Again, the P or the rule is that whenever you create a child throughout the chapter is going to inherit the signal mass from the parent 40 00:05:28.380 --> 00:05:37.350 William Cheng: So the parents as blocking siggins so therefore all the child will blocks again. Right. So, therefore, all you know so so so from this point on your entire program is blocking. So again, 41 00:05:38.460 --> 00:05:47.490 William Cheng: Okay, so, so, so this way. If somebody. These are press Control see then control, see what the company. So when will get controls what will come to see that deliver 42 00:05:47.760 --> 00:05:55.620 William Cheng: Well, only when you onboard cigarette in one of the threat. So the idea here is that you're going to have a control see catching threat and this will be the threat that the 43 00:05:55.980 --> 00:06:06.420 William Cheng: Blocks again. So therefore, when this box to give you will be the only threat that are that are capable of receiving the the that is the only threat. 44 00:06:07.560 --> 00:06:11.370 William Cheng: That that's a candidate you know for delivering a second 45 00:06:12.060 --> 00:06:21.180 William Cheng: Okay, so definitely this case we call subway in a politically on blog. The signal and wait for the signal. So this way you know that when seeking get deliver it must be delivered in the middle of segue. 46 00:06:21.720 --> 00:06:30.780 William Cheng: Okay, even though if you have signal handler specified, they will completely ignore. So the only thing that happens when you deliver Seguin is a Segway will return and now Seguin is block everywhere again. 47 00:06:31.530 --> 00:06:38.310 William Cheng: Okay, so if the user press Control see twice, while it doesn't really matter because the signal hundred. See, I will become pending because again this block right now. 48 00:06:39.060 --> 00:06:46.350 William Cheng: That. So in this case for war is supposed to do is that we're going to do something that would you know that the big change and global variable. 49 00:06:46.590 --> 00:06:51.480 William Cheng: Okay, so for warm up to what you should do is out as soon as you returned from Subway, you should lock the new tax. 50 00:06:52.080 --> 00:07:00.060 William Cheng: Okay, and do everything else with the new tax law. So what does everything else, right, you need to cancel the package where you need to cancel the, the, the token threat. 51 00:07:00.600 --> 00:07:08.070 William Cheng: That what else do you need to do. You should also set a global global to say, Control C has been pressed. And this way you can tell tell all your third to say now. 52 00:07:08.250 --> 00:07:16.200 William Cheng: don't generate a packet don't generate token don't do anything that you're not supposed to do. Okay. So, therefore, if all the other side when they're trying to do something you all, they should check this. 53 00:07:16.650 --> 00:07:23.670 William Cheng: This global variable because if Control C has been pressed, they must not do this must not do the stuff they're not supposed to do. 54 00:07:24.360 --> 00:07:34.530 William Cheng: Okay, so again, read the spec to find out what what they're not supposed to do that. So again, it's very important over here to set a global variable to say it's time to quit. Everybody self terminate. Yeah, and also 55 00:07:35.070 --> 00:07:45.630 William Cheng: It is possible that that your server threat. They're all sleeping in the condition variable queue, because there's no pocketing Q2. Right. So, therefore, with the new tax law. You also need to Brock has the condition 56 00:07:46.020 --> 00:07:54.960 William Cheng: Okay, so in this case both servers will wake up and they should check the goal, but rather than to say if it's time to quit. If it's time to quit, they're not allowed to start a new package transmission 57 00:07:56.250 --> 00:07:59.160 William Cheng: Guys it again. It's very, very important to us that global variable that 58 00:07:59.370 --> 00:08:10.320 William Cheng: So, so why is it broadcast TV. What else do you have to do it. There's nothing you have to do right so you unlock the new tasks and now you're a threat and copy through accent or you can break out of the infinite loop and now your control see catching yourself terminate. 59 00:08:12.090 --> 00:08:24.180 William Cheng: Alright, so again, you know, if you're not clear about this, you know, send me an email. So, so, so please again. I recommend everybody to use the prefer we're doing this and not use signal handler in lecture I mentioned all these kind of bad things about signal handler. 60 00:08:24.660 --> 00:08:27.660 William Cheng: So those are the real reason you shouldn't use the signal habit. Yeah. 61 00:08:29.670 --> 00:08:39.990 William Cheng: Okay. Secrets of the comic operation it unblock the signal and this guy's a city in and wait for the signal one atomic operation. Okay, so therefore they will. There's no way for it to miss us again. Okay. 62 00:08:40.650 --> 00:08:55.800 William Cheng: All right. Finally, this thing is about a cancellation over here. So again, my recommendation over here is that, you know, when you try to cancel the packet threat and the token, if you want to make your life really, really simple. Then, then you should avoid. You know, using 63 00:08:57.510 --> 00:09:01.470 William Cheng: So, so, yeah. If you want to make your life really, really simple. What you should do is that you should avoid. 64 00:09:02.280 --> 00:09:10.020 William Cheng: You know, using the the PCI Council push and PCI Council pop because those things could get a little messy. Okay, you're going to allocate memory, you're gonna 65 00:09:10.800 --> 00:09:17.430 William Cheng: You're gonna lock new taxes or something like that. So there's a really, really simple way to do that. And just by using disable and enable cancellation. 66 00:09:17.730 --> 00:09:24.120 William Cheng: Okay. The reason that this is a lot is that, you know, a week disable cancellation. We only disabled for a very, very short period of time. 67 00:09:24.510 --> 00:09:33.660 William Cheng: That. So in lecture I sort of mentioned that this is the way to go. Right. So what you do is out your package your tokens that as soon as they started. The first thing you need to do is to disable cancellation. 68 00:09:34.050 --> 00:09:42.990 William Cheng: Okay. And right before you call you sleep you enable your neighbor cancellation. So this way when I tried to cancel you he will die in the middle of you sleep. 69 00:09:43.920 --> 00:09:51.180 William Cheng: Okay. And also, as soon as he returned from you sleep you need to enable as I as soon as he returned from from use me, you need to disable cancellation. 70 00:09:51.870 --> 00:09:57.990 William Cheng: Okay, so this way you can go ahead and lock the new textbook do everything that you need to do if somebody tried to cancel you at this time. 71 00:09:58.140 --> 00:10:07.980 William Cheng: While since cancellations disable, you don't have to worry about anything you can you can do everything that you need to do. And eventually, you can unlock the new tax and then if there's cancellation pending next time. 72 00:10:08.490 --> 00:10:14.220 William Cheng: I guess they can you go to the top of the loo. And then when you call you sleep. That's when you act on Castle. That's when you that's when your thread with that. 73 00:10:15.270 --> 00:10:21.510 William Cheng: Okay, so if you do it this way, you don't have to worry about piece of cleanup push and piece of cleanup pop because they are kind of complicated 74 00:10:22.380 --> 00:10:30.690 William Cheng: Guys, okay. The, the, the purpose of this warm up to is for you to understand the mechanism like cancellation and you don't really, you know, it's truly not to 75 00:10:31.050 --> 00:10:37.500 William Cheng: Do for you to exercise your people are pushing people pop. Right, right. So the closer look like this. 76 00:10:38.040 --> 00:10:43.620 William Cheng: Last, last discussion section. So to show you that the pseudo code for the packet or tokens will look like this. Right. 77 00:10:43.830 --> 00:10:51.120 William Cheng: Forever, they go there they go to sleep. And then, then what do we do that it would generate a token, if the, if it's a token to add it. Whichever way apocalypse a package. 78 00:10:51.600 --> 00:10:54.630 William Cheng: And then they will add the pack of the token to the token bucket filter. 79 00:10:55.110 --> 00:11:04.110 William Cheng: Okay. So in this case, where would you like to me attacks. Right. So one thing that you will do is that as soon as you return from from sleep. You will lock to me attacks and as soon as you're done with all these kind of stuff you can unlock them your tax. 80 00:11:04.560 --> 00:11:12.060 William Cheng: Okay, so what's important to understand is that generating a pocket and do all these things with the new types lock the only execute the milliseconds. 81 00:11:12.660 --> 00:11:19.980 William Cheng: OK, so the last two operation over here. This is done very, very quickly. The only thing that's time consuming for your packets through and you're totally asleep. 82 00:11:21.330 --> 00:11:30.840 William Cheng: Okay, so then what we should do is that, you know, when you have the new tax law or right before you have the beach is that if you disable cancellation on this case, you don't have to worry about piece of cleanup pushing piece of 83 00:11:31.170 --> 00:11:37.950 William Cheng: Pop, man. So therefore, the pseudo code will change into the following, you know, at the beginning of your first procedure, you should disable cancellation. 84 00:11:38.670 --> 00:11:39.990 William Cheng: Okay. And then when you get into these 85 00:11:40.680 --> 00:11:50.670 William Cheng: Even a little over here right before you go to sleep you enable cancellation and then right after you return from sleep you disable cancellation. Right. And then all this code that you run over here with the new tax law. 86 00:11:51.420 --> 00:11:56.610 William Cheng: Then there will be done with cancellation disable so therefore if you press Control see in the middle of this or you know 87 00:11:57.480 --> 00:12:05.010 William Cheng: That person to see if the sick in catching threat if the control see catching through cancel this one. What this thread die. 88 00:12:05.730 --> 00:12:13.950 William Cheng: Okay, so if in the middle of the way all the new tab over here, another third to cancel this way, since cancellations disable Castle, you'll become penny. 89 00:12:14.160 --> 00:12:18.030 William Cheng: And then next time when you come to the top of the infinite loop over here. When you enable cancellation. 90 00:12:18.240 --> 00:12:27.210 William Cheng: And then you call you sleep you sleep is the cancellation point and that time you'll say, well, Apple castle, and then you don't have to worry about memory leak. You don't have to worry about Peter be tax law. 91 00:12:28.980 --> 00:12:34.560 William Cheng: Okay, so this is really easy way to go over here. I said there's a race condition over here, who is the race condition. 92 00:12:35.580 --> 00:12:44.700 William Cheng: Then the race condition and happen over here is to say, let's say that you didn't get castle. The only time that you get canceled is right, you know, right in the middle where he caught disable cancellation. 93 00:12:46.530 --> 00:12:55.800 William Cheng: Guys over here at Roosevelt. So let's say that right after you returned from sleep right between returning from you sleep. And when he disabled cancellation another third try to cancel, you 94 00:12:56.790 --> 00:13:05.910 William Cheng: Okay. So in this case, you know, your cancellation is still enable and somebody tried to cancel you but since you are not in a cancellation point your cancellation will be disabled. 95 00:13:06.480 --> 00:13:12.840 William Cheng: So now you love to meet has over here and then you try to generate a packet what but you are not allowed to generate a packet. So what do you do 96 00:13:13.290 --> 00:13:22.770 William Cheng: Well, so therefore, what you should do is that as soon as you log the the the metrics over here. The first thing you need to do is to check whether it's time to quit or not. Because if it's time to quit, you're not allowed to generate a packet 97 00:13:23.490 --> 00:13:31.980 William Cheng: Okay, so this race condition can be avoided simply as soon as you like the new tax you see if it's time to quit. If it's time to quit. You are not the new tax, he jumped out of the infinite loop. 98 00:13:33.570 --> 00:13:43.740 William Cheng: Okay, so that would be the simple solution, right. So this guy's again. You don't have to worry about Peter I mean type proportion piece. I mean, that's a piece that castle push aside pizza clean up, push a piece of mail pop. Yeah. 99 00:13:45.930 --> 00:13:56.640 William Cheng: Okay, so that's, you know, so that's the rest of our warm up to it, right, just to have a control, see. So again, if you have other questions like calculating statistics. I think in the 100 00:13:57.690 --> 00:14:08.100 William Cheng: The the the warm up to FAQ and mentioned that when you calculate hit statistics statistics, you should do it on the fly. Okay, you shouldn't just, you know, you know, store all your package. 101 00:14:08.310 --> 00:14:16.110 William Cheng: Instead of my for two lists and India when you try to print out statistics, you're going to take all the packet and try to compute the average and those kinds of those will be the wrong thing to do. 102 00:14:16.350 --> 00:14:32.190 William Cheng: Okay, the right thing to do is to to to to keep sharp Java running average. Okay, so what was the running average right so so for example if you have an samples and the average over here is a over here, right, that you know that the some of the sample is going to be n times as 103 00:14:33.270 --> 00:14:39.060 William Cheng: Well, right, because as the average over and right so. So again, in this case up time and time zone over here. 104 00:14:39.270 --> 00:14:51.510 William Cheng: That will be the sum of all the, you know, service time all the travel time whatever the statistic that you're keeping and now you get an extra sample right the extra sample we hear is going to be an interval. So what you do is that the total not become this plus 105 00:14:51.750 --> 00:14:55.800 William Cheng: The new interval. And now the new average over here will be this one divided by n plus one. 106 00:14:57.630 --> 00:15:03.450 William Cheng: Okay, so this will be the new a riser the A prime over here is going to become this value over here. And then what about what about the new end 107 00:15:03.690 --> 00:15:07.470 William Cheng: And now you just got a new sample. So therefore, and prime is going to be n plus one, right. 108 00:15:07.710 --> 00:15:21.270 William Cheng: Okay. So, therefore, this is a sort of a simple formula for you to to to to keep a running average whereas it this way, you only need two variables, you know, for every statistics. Okay, the two variables is going to be running average. And then the number of samples that you're keeping 109 00:15:22.860 --> 00:15:32.340 William Cheng: Guys. And this way you know you're running average. You don't need to keep a link. So again, this scenario is over here is that if you have 1 billion pack is over here. What are they, in that case, your listeners will be 1 billion long 110 00:15:32.700 --> 00:15:38.400 William Cheng: India. India we each had a couple calculus that this is when take a very long time. So clearly, that's not the right way to do it. 111 00:15:38.700 --> 00:15:42.630 William Cheng: Right, you should keep a running average and this way, we're only going to cost you to variable. 112 00:15:42.900 --> 00:15:53.130 William Cheng: To keep running average right so every time when you try to wait when we rejecting a packet, you need to update all the statistics and again update all these values over here using the simple equation. So, again, I think the 113 00:15:53.970 --> 00:16:02.400 William Cheng: Warm up to FAQ also talk about this guy's those will make sure to check it out and you need to be unique. You need to keep track of a running average the right way now. 114 00:16:03.180 --> 00:16:15.030 William Cheng: Alright, so in last week's discussion section. I also show you the same slide over here and there are some source code for the other. The first few of the first first few see fall over here. 115 00:16:15.540 --> 00:16:20.820 William Cheng: So again, if you're not familiar with the cancellation, if you're not familiar familiar with some of the pizza. Stop. 116 00:16:21.390 --> 00:16:23.850 William Cheng: Again, I recommend you to play with small programs. 117 00:16:24.270 --> 00:16:30.180 William Cheng: So the rest of the slide over here is talking about these other small programs. But again, you should try to play with them, even though some of them. 118 00:16:30.420 --> 00:16:39.270 William Cheng: Are sort of messing around with signal handler, which you're not supposed to use. But again, you should have sort of learn that, you know, set breakpoints in them to see what happens over here so you can understand what's going on. 119 00:16:39.660 --> 00:16:40.770 William Cheng: You know what the signal handler. 120 00:16:41.130 --> 00:16:49.050 William Cheng: Eventually, there's something that that deal was sick way to gauge you play with our Co. Why don't you understand that co perfectly that you could only then can you copy that code. 121 00:16:49.260 --> 00:16:53.940 William Cheng: And then, you know, put it inside your warm up to code because he BECAUSE HE DO YOU GOING TO DO VERY something very, very similar. 122 00:16:55.110 --> 00:17:00.930 William Cheng: Okay, so I'm going to sort of skip all the slides over here, feel free to check them out and run them debug them so you understand what's going on. 123 00:17:01.770 --> 00:17:10.680 William Cheng: Okay, so the next thing I want to talk about is the give you a quick introduction of the general Colonel programming assignments, because the deal. 124 00:17:11.400 --> 00:17:17.010 William Cheng: I think I sent an email to you to say like this Sunday my my plan is to give you the colonel assignment. 125 00:17:17.790 --> 00:17:29.040 William Cheng: Okay, so, so, so, so I guess you know Saturday is the early submission deadline for warm up to. So next Tuesday. YOU SHOULD BE DONE WITH A WARM UP TO and NEXT WEDNESDAY. The Colonel team formation deadline. 126 00:17:29.640 --> 00:17:36.180 William Cheng: So you're supposed to send me your team integration by then and then so so so when when next once they start, you should be working on your kernel assignment. 127 00:17:36.780 --> 00:17:47.250 William Cheng: Okay, so first. So first I'm going to sort of give you a sort of overview right now. So if you're watching this video on Thursday night on Friday, I don't have the colonel spec out yet. 128 00:17:47.580 --> 00:17:53.640 William Cheng: I'm still sort of working on. So maybe I'll release part of so you can actually contrast with your set of slides. 129 00:17:54.180 --> 00:18:05.010 William Cheng: Or the other things that you can actually wait until Sunday after Sunday, you should go through the slides again and then try to read some of the commands that I mentioned over here and to make sure that every everything that you see matches. What's in the kernel spec. 130 00:18:05.760 --> 00:18:14.700 William Cheng: Okay. And if there's any issue any problem. I need to know right away, right, especially if you don't have a bunch of 16 point or 14 start on your machine on there, you need to 131 00:18:15.390 --> 00:18:27.090 William Cheng: Our current on Sunday only work on about 260 504 okay so if you don't have the right version, you have to reinstall one you have to install a new virtual machine. Okay. So, okay, you should do this as early as possible. Yep. 132 00:18:27.660 --> 00:18:32.070 William Cheng: Alright, so now I'm just going to give you a sort of a high level introduction of the colonel assignment. 133 00:18:33.600 --> 00:18:44.250 William Cheng: Alright, so again, I just want people I know that there are, you know, previous semesters, the Colonel's on a floating around, right. So again, the rule for you know the the warm up some in a colonel assignment is that 134 00:18:44.520 --> 00:18:48.930 William Cheng: Accessing a submission from a previous semester is considered cheating, right. So what is accessing 135 00:18:49.740 --> 00:19:00.780 William Cheng: Simply if you compile it and run it then cheating if you look at a co you're cheating you know so. So the basic idea over here is that you have to throw it away, you, you're not allowed to look at it. Why are you not allowed to look at it. 136 00:19:00.990 --> 00:19:12.570 William Cheng: Because when you look at it. Sometimes, some people are surprised by how good your memory is OK. And then they end up writing the same code. Okay, when you're writing the same code that cheating. Okay. So, therefore, you're not allowed to do that then. All right. 137 00:19:13.950 --> 00:19:21.600 William Cheng: OK, so again if I, if I can. You Cheating by copying co from previous semester or copying co from, you know, the current semester. That's also no no 138 00:19:22.350 --> 00:19:30.570 William Cheng: You know, the standard punishment is a great app in the class right so lecture one I mentioned before, pretty much the only way you can fail this class is by cheating. 139 00:19:31.050 --> 00:19:39.090 William Cheng: Okay, so therefore, again, we, you know, I give you all these extra credit or something like that, you know, to strongly, strongly encourage you not to cheat. 140 00:19:39.360 --> 00:19:52.620 William Cheng: Yeah, right. And also, you let you want to sort of talk to you about what kind of gray that you get if you miss lecture one, make sure you watch it and to understand what kind of gray that you should expect. And again, the reason I'm doing that is to ask you not to cheat. 141 00:19:53.040 --> 00:20:01.110 William Cheng: Okay, if you want to learn the material in this class copying code is really another way to go. You have to write the code yourself. Okay, so this way you will learn a lot there. 142 00:20:01.860 --> 00:20:13.020 William Cheng: Right. And also please understand that, since those there's only one submission from a team, even if only one team member cheat at the entire team is considered cheated the entire team will get an F in the class. 143 00:20:13.710 --> 00:20:19.290 William Cheng: Okay, I mean every semester. I'm going to get people to say that, you know, can you know we have a team of four people only one person cheated. 144 00:20:19.560 --> 00:20:28.650 William Cheng: Can we get a partial credit for the other three team members, there's no way to do that. You only make one submission and that will be the only solution that will gray. So if your co has 145 00:20:29.070 --> 00:20:33.900 William Cheng: You know, has plagiarized code in that the entire submission is invalid and that everybody get an F. 146 00:20:35.010 --> 00:20:41.250 William Cheng: Okay, so therefore you it's your responsibility to make sure that your team is not cheating, right. So my recommendation is though. 147 00:20:41.460 --> 00:20:48.570 William Cheng: To have a meeting with your team. Often, and then you know when when people talking about their code and you ask them, Why did you write your code this way. 148 00:20:48.780 --> 00:21:00.180 William Cheng: And if they say, I don't know why I wrote my code this way, then what you do is that you delete every piece of code or that person right and I have some another team member rewrite the entire code because chances are that students cheating. 149 00:21:01.530 --> 00:21:08.310 William Cheng: Okay, so please take this very seriously. Okay. Because if one of your team member cheated at the entire team is going to get an F. 150 00:21:08.730 --> 00:21:13.170 William Cheng: Well guys, so make sure that you know, talk to your, your team. Team member, you know, make sure that 151 00:21:13.680 --> 00:21:24.000 William Cheng: The best thing to do is to have your trustworthy team member that always tell the truth, then you don't have to worry about these, you can just ask them, do you have colon colon premium semester. They said, No, that's great. If they say yes. Tell them to delete it. 152 00:21:25.050 --> 00:21:36.090 William Cheng: Okay, and then you will not get into this problem. Okay. So remember, I'm here to help you to do the colonel assignment. If you're stuck. You should ask me questions, okay. Don't look at the code from the previous semester there. 153 00:21:36.900 --> 00:21:43.890 William Cheng: Alright, I hope you I hope I gave you enough warnings. But, you know, there's always students, you know, to try to do something funny. Yeah. 154 00:21:45.330 --> 00:21:58.170 William Cheng: Alright, so again, I suppose. The second thing is that, you know, you know, don't post your week source code. Especially, you don't get hop right because give her no matter what they say your code can become public 155 00:21:58.860 --> 00:22:05.670 William Cheng: Okay, there's no no I promise I know you're not going to be helpful for your project. And then one day, boom, your code become public and you wonder why 156 00:22:06.240 --> 00:22:17.850 William Cheng: Okay, so. So again, you are not permitted to help futures student cheat based on your code. Okay, so therefore you should not put your code GitHub. Okay, there's been begging.dot.org 157 00:22:18.390 --> 00:22:28.890 William Cheng: I think because comma org. They offer the same kind of service, but they guarantee that your co will never become public okay if you start with the perfect the repository. It will always remain private 158 00:22:29.370 --> 00:22:33.030 William Cheng: Okay. So, therefore, if you use that. And if you want to use that to coordinate, you know, 159 00:22:33.510 --> 00:22:43.020 William Cheng: You know, checking in and check it out, you know, doing version control between you and your teammates, that will be good. Okay, but make sure that your repository is private only share among your teammates know 160 00:22:44.100 --> 00:22:47.730 William Cheng: Right. I mean, some people when they tried to look for jobs right though you know that they 161 00:22:48.180 --> 00:22:54.300 William Cheng: They make the repository public because they want to show people how cool they are they wrote all these codes that are very proud of. 162 00:22:54.600 --> 00:23:05.340 William Cheng: Don't do that. You really don't have permission to do that. Okay. If your prospective employer to say I want to see your co send them a private copy of your code. Don't give them access to the repository. 163 00:23:05.700 --> 00:23:14.850 William Cheng: Okay, so that's why. But we do have some people give them access to the repository, and now your repository is too many people accessing it. And now to become public because that's the GitHub policy. 164 00:23:15.270 --> 00:23:18.180 William Cheng: Okay, when there are too many people have access to it, boom, we become public 165 00:23:19.080 --> 00:23:31.290 William Cheng: OK. So again, you know, if somebody asked for it you know your prospective employer. You're allowed to show them the code, you have to ask them to keep it private. So in that case, you're going to download a copy of your code and send a copy to that and ask them to keep it private. 166 00:23:32.310 --> 00:23:35.940 William Cheng: Okay, so please do it correctly there because you don't want to get into trouble, right. 167 00:23:38.310 --> 00:23:48.120 William Cheng: Alright, so, so our current all assignment over here. So this is a you know a couple of the textbook, the text book was written by Professor Tom dattner a Brown University. 168 00:23:48.780 --> 00:23:57.840 William Cheng: So they come with a weenie source code. So they found them that you'll be download. It's called week's assignment 3.6 point oh card I cheesy. So what I would do is that 169 00:23:58.800 --> 00:24:08.910 William Cheng: You know, I guess, the idea is that the Sunday, I will send you an individual email. So every email will have a link to download your pristine version of the week's assignment. 170 00:24:09.780 --> 00:24:14.130 William Cheng: Okay, so, so, so this case every student will get a, get a slightly different copy 171 00:24:14.700 --> 00:24:22.110 William Cheng: You know, so if you're in a team. What you need to do is I need to get together and decide who's the source code to throw away and only keep one copy 172 00:24:23.010 --> 00:24:27.030 William Cheng: Okay, so this copy you can share them on your, your, sure, sure, sure you're on your teammates. 173 00:24:27.450 --> 00:24:32.250 William Cheng: You can, you know, upload it to you know Bitbucket and start sharing right there. OK. So again, 174 00:24:32.580 --> 00:24:41.490 William Cheng: It's up to you to determine how you want to coordinate between your teammates, we don't really get involved in this there if you want me for recommendation I only recommend Bitbucket or there. 175 00:24:42.180 --> 00:24:53.400 William Cheng: Right, so, so the week's assignment. You're also going to have to the other. The Colonel Simon spec instead of going oh specimen spec. There's a weenie documentation, which is the PDF file. 176 00:24:53.730 --> 00:24:57.510 William Cheng: The PDF file is about 100 pages long, with a little less than 100 pages long. 177 00:24:57.960 --> 00:25:05.460 William Cheng: So you're supposed to read it as soon as possible. So you sort of get a feel of what the we need some it's all about, okay, you don't have to read the whole thing, but you have to read the beginning part 178 00:25:06.030 --> 00:25:12.720 William Cheng: Okay, so whatever it is that it will explain to you that you know that Brown University, they implement this toy operating system. No, wait, no, as we need. 179 00:25:12.930 --> 00:25:23.370 William Cheng: It's a completely working operating system. And what they do is that they take out a bunch of code. And now, and all the rest of it. So, so the code they take out become you become your programming assignment. 180 00:25:23.820 --> 00:25:28.860 William Cheng: Okay. So your job is to put it back inside the kernel. So this way, you're gonna have a perfectly working operating system. 181 00:25:29.940 --> 00:25:38.940 William Cheng: Well, so in the end it's going to be really cool because you can actually have a fully functional operating system, even though it's a toy operating system, meaning that it's not the most efficient operating system out there. 182 00:25:39.120 --> 00:25:44.430 William Cheng: But, you know, it sort of has all the, the, the basic functionality of a real offerings that 183 00:25:45.180 --> 00:25:51.540 William Cheng: Right. And again, this is the reason why you want to do this yourself. Because in the end, you will learn so much I could do everything yourself. Yeah. 184 00:25:52.200 --> 00:25:57.510 William Cheng: Alright, so the car, they took out that will look like this lines like there. They say not yet implemented so so 185 00:25:57.780 --> 00:26:01.620 William Cheng: This is the function call. Right. So when he called associate when you do that, you see a message to say 186 00:26:01.890 --> 00:26:10.110 William Cheng: This function is not implemented. So therefore, you're supposed to implement it. So your job is supposed to, to leave this line of code or commented out right you can comment a lot over here. Okay. 187 00:26:10.320 --> 00:26:14.790 William Cheng: And replace it with your code in line right in line, meaning that you should replace it right here. 188 00:26:15.210 --> 00:26:22.380 William Cheng: Okay, you're also allowed to write a function and then you know you replace it with a function called the call your own function. So that's pretty much the same as in line. 189 00:26:23.370 --> 00:26:32.880 William Cheng: Okay, but when you try to write another function. Make sure you put it inside the same file as you know this, you know, the original nine over here. Okay, don't try to create another file. 190 00:26:33.420 --> 00:26:40.170 William Cheng: Okay, whatever the code that you write, you should put it inside the same he said the same file that has guidelines, like this. 191 00:26:40.500 --> 00:26:49.410 William Cheng: There. Alright, so this one says the other this function I implement it and then there's a string over here the string has two parts. The first part over here is the name of the assignment. 192 00:26:49.890 --> 00:26:54.540 William Cheng: Okay, your kernel was no as products. So over here. This one I said this is for your kernel wine. 193 00:26:54.810 --> 00:27:02.520 William Cheng: And then the next one will be here is the function that you're supposed to implement so so this function is called Bootstrap. So you can see that this particular line is inside a function called Bootstrap. 194 00:27:03.810 --> 00:27:13.560 William Cheng: Okay, so, so, so, your goal is that you need to find all the lines inside kernel source code that contains now you implement the products. And then there's a bunch of different function in and those are the function you happy. 195 00:27:15.270 --> 00:27:21.390 William Cheng: Okay, so. Okay. Your job is to implement these function by replacing these. I mean, some people like to leave these these code in there. Don't do that. 196 00:27:21.600 --> 00:27:26.430 William Cheng: Okay, it's gonna be very confusing because the greatest says this function is not implement and integrate is going to take points off. 197 00:27:26.700 --> 00:27:33.870 William Cheng: And then you said, No, no, no. They're actually implemented. Well, in that case, why don't you delete this line or commented out okay. There's no reason to keep that line in there. 198 00:27:34.800 --> 00:27:41.250 William Cheng: Okay, because you print out will be incorrect because again we print is incorrect, you know, some great. Oh, I have to take take points off. Yeah. 199 00:27:43.110 --> 00:27:48.990 William Cheng: All right. And also, you know, some people actually take these code over here, they will try to reorder the code inside 200 00:27:50.940 --> 00:27:53.430 William Cheng: He said clinical source. Hey, don't do that. 201 00:27:54.180 --> 00:28:02.490 William Cheng: Okay, this one is, you know, so, so this is inside the function, you know, you have a function over here called bootstrap over here. And then, you know, there's some code Obama, there's some code below, and then 202 00:28:02.850 --> 00:28:07.890 William Cheng: And then there's not yet implemented in the middle. My. Some people do the all the other co i don't know why they would do that. 203 00:28:08.580 --> 00:28:18.720 William Cheng: Okay, all the other cars are part of the code that are given to you there therefore reasons or don't do that don't delete that. Okay, so, so, so what you should do is that you should make your co work with all the existing code. 204 00:28:19.380 --> 00:28:26.100 William Cheng: Okay. Me, I'm yeah I understand why people do that because the other code doesn't work with a resistant go so they delete them. So in the end things. Again, it's going to get even worse. 205 00:28:27.120 --> 00:28:35.550 William Cheng: Okay, so my recommendation is not to touch the any of the existing car unless you try to, you know, sort of devalue call each other additional Princeton, and in there. That's probably okay. 206 00:28:35.910 --> 00:28:44.970 William Cheng: Okay, but you shouldn't really touch it because they are. They're all for good reason. If you don't know why they're, they're still you shouldn't really delete it, you should trust that they're there for the reason 207 00:28:45.750 --> 00:28:52.950 William Cheng: That I mean some people, you know, they want to understand every line of code before they start writing their own CO and that will be very, very difficult in the kernel assignment. 208 00:28:53.160 --> 00:28:58.050 William Cheng: Okay, because our operating system over your comic con Brian diversity. It's a really, really big operating system. 209 00:28:58.350 --> 00:29:03.900 William Cheng: Okay, if you need to understand the entire operating system source code before you start doing your assignment that will be the end of the semester. 210 00:29:04.530 --> 00:29:08.490 William Cheng: Okay, it's virtually impossible to do that. So, so again, don't try to do that now. 211 00:29:09.000 --> 00:29:15.330 William Cheng: When you say look for South I say you want to look for all the United implement with projects over here and this guy is where you can do is that you can do run these commands. 212 00:29:15.570 --> 00:29:19.740 William Cheng: You need to get used to running this command called grip so grab is looking for pattern. 213 00:29:20.010 --> 00:29:32.430 William Cheng: You know, in a file. So in this case, I'm looking for the pattern process in kernels slash star Darcy kernels. I start, I start RC cars. So I mean, so you can actually also look for approx colet in all these 214 00:29:33.690 --> 00:29:39.660 William Cheng: You know, these files. Okay, you got to get used to doing that, but maybe or something. When you see a function, is that what is this function do 215 00:29:39.960 --> 00:29:48.720 William Cheng: Okay, who is calling this function and what in that case you get used to run a graph, given the function name over here, you try to look at all over the place inside your corn kernel source source tree. 216 00:29:49.830 --> 00:29:56.820 William Cheng: Okay. So at the beginning what we hear you need to get used to the structure of your kernel right so that he. So in this way, what you shouldn't look for something, you know where to look. 217 00:29:58.050 --> 00:30:06.510 William Cheng: Okay, so most of the file that you need to implement. They're all in Colonel, star, star, star us as a colonel stuff. Let me clean up this little bit 218 00:30:07.260 --> 00:30:15.750 William Cheng: Okay. Most of the code that you have to do, right, they're all here. Okay, so you gotta go, you gotta get familiar with, you know, all the grassy father and they're consuming of them. 219 00:30:16.260 --> 00:30:21.210 William Cheng: Okay, so again you need to sort of take a look at them to see which one are part of the assignment which were not part of the assignment. 220 00:30:21.690 --> 00:30:30.690 William Cheng: There's also the colonel header file. The Colonel header file is in Colonel include followed by Star slash start at age. There are also other Colonel improve our that that I have more levels or less levels. 221 00:30:31.230 --> 00:30:38.880 William Cheng: Because again do at the beginning where you, where you don't know what code, right. Yeah, you should explore the kernel source treats sort of final where things are that 222 00:30:39.690 --> 00:30:43.740 William Cheng: Are again, feel free to ask me questions. Yeah. All right. And then you untied. 223 00:30:44.190 --> 00:30:50.760 William Cheng: The week's assignment over here. And then what it will do is it will create a directory called week's assignment 3.3 point 6.0 224 00:30:50.940 --> 00:30:59.430 William Cheng: Inside that directly. There is another directory called Phoenix and that's your assignment. Right. So you change directory into that directory over here, you type may clean a you type make 225 00:30:59.850 --> 00:31:05.010 William Cheng: So what it will do is it will compile and then he will generate your entire assignment that 226 00:31:05.820 --> 00:31:11.400 William Cheng: If you see any error messages, where you type make over here. You need to get it fixed right away. 227 00:31:12.030 --> 00:31:20.520 William Cheng: Okay, if you don't understand the error message you need to talk to me as soon as possible. Okay. All right. And then I want to finish make there should be no error. 228 00:31:20.940 --> 00:31:27.780 William Cheng: You know that has you're ready to run weenies. There are two ways around rename one is running without the debugger. The other one is you run it with the debugger. 229 00:31:28.110 --> 00:31:38.250 William Cheng: Okay, there's only one way to run it without a debugger and this is going to be the command line syntax. Okay, so please understand that with the greater grades. This will be the command that the greater will run 230 00:31:39.150 --> 00:31:50.610 William Cheng: Okay, so if you run your winners using a different command, you cannot ask the greatest say hey, you know, run my command. Instead of your command the greater has to follow the grading guidelines, right. The wedding gown and says this, the greater has no choice. 231 00:31:52.170 --> 00:31:59.670 William Cheng: Or something was a greater. Could you run my Colonel you know debugger know the greatest allowed to do that right alright 232 00:32:00.540 --> 00:32:10.290 William Cheng: So again, the all these I'll put long commands over here. So you should copy and paste. Right. It's a copy the text from the web browser paste that into VM to Terminal you know so and make sure everything works. 233 00:32:10.830 --> 00:32:23.040 William Cheng: So the colonel spike was sort of tell you what you should expect right so again. Compare that against that and also covered over here please do not do the above in a shared folder I should say in Windows 234 00:32:24.330 --> 00:32:26.850 William Cheng: That if you do this, and Windows going to get error messages. 235 00:32:27.900 --> 00:32:35.970 William Cheng: Or so try not to do that inside a shared folder in Windows. So where should you do it right, you should do it inside. We want to 16.04 don't do it in a shared folder. 236 00:32:36.480 --> 00:32:41.970 William Cheng: Okay, because, why don't you share folder, the you know the file system you're using your shared folder actually belong to Windows 237 00:32:42.480 --> 00:32:47.040 William Cheng: So in that case, you know, certain operations that supported by windows. So if you do that in a shared folder doesn't work. 238 00:32:47.250 --> 00:32:51.630 William Cheng: There. So some people will do that. They will, they will put it so so you could go to your home directory 239 00:32:51.900 --> 00:33:03.090 William Cheng: Inside Ubuntu 16.04 there is a folder called desktop, right. Those are the things that you see on your desktop. You can also create your own directory called a CSV or two or whatever you want to call it. He's a CSV file to 240 00:33:03.540 --> 00:33:10.590 William Cheng: You can create a sub directory called colonel colonel one call tomorrow. So whatever you want. Okay, but you should do it instead of home directory of your 241 00:33:11.640 --> 00:33:11.880 William Cheng: Account. 242 00:33:13.380 --> 00:33:23.940 William Cheng: Alright, see you kind of FAQ to see, you know, to do this kind of stuff. Right. And also, we still want to 16.4 there's some of the commands. I hope you have run these commands already 243 00:33:24.600 --> 00:33:32.370 William Cheng: If you start running a winning mindset over here, you're going to see the error message to say. Q Yeah. I'm you know file. Well, that's because you forgot to do something when you install your 244 00:33:33.240 --> 00:33:42.390 William Cheng: Install a bunch of 60.04 okay so yeah I highly recommend when you install a bunch of seeds 2.04 just follow the step as precisely as possible and don't skip any steps. 245 00:33:42.690 --> 00:33:53.670 William Cheng: Okay. And also, don't you start a new hardware is I don't assign a new software guy because you want to make sure that your current assignment run in the clean version, you know, of the 32 bit 60 point over 246 00:33:54.600 --> 00:34:03.690 William Cheng: There because it didn't require anything else, then you're going to end up with a very, very low score. When the greater, greater says that because please remember that the greater, greater assignment, they have to use the standard 247 00:34:05.340 --> 00:34:11.130 William Cheng: System. Okay, they're not allowed to install additional packages into that system. Yeah. 248 00:34:13.230 --> 00:34:20.820 William Cheng: Alright, so it all goes well when you run fast. Last week's minus. And guys, again, this is the only command that you should use to run it without the debugger. 249 00:34:21.180 --> 00:34:28.350 William Cheng: You're going to see this error message to say not yet implemented. OK. So again, you know, who's putting that out. Right. So, so it should be clear that 250 00:34:28.830 --> 00:34:33.750 William Cheng: This particular function over here. That's what it does, it print out that error message to say this function is not yet implemented. 251 00:34:34.050 --> 00:34:41.100 William Cheng: Yeah, so therefore you will see this message over here to say products boost travelers. Yeah, it tells you exactly, you know, 252 00:34:41.700 --> 00:34:45.330 William Cheng: You know also will will also give you a line number over here. 253 00:34:45.780 --> 00:34:56.340 William Cheng: So in this case, where you get an error message like that you know exactly which file right as far as the main came in. I see line 184. So if you use the editor you go to my wife before you're going to see exactly that line I implement it. 254 00:34:57.270 --> 00:35:05.610 William Cheng: Okay, so, so again, when you're dealing with the Colonel. The Colonel printer message your co they will tell you exactly which fallen which line has the problem. 255 00:35:06.000 --> 00:35:13.590 William Cheng: Okay, so just so they can read your message. Very, very carefully and pick out the stuff that our role there. And then this guy you know exactly what the problem was there. 256 00:35:14.040 --> 00:35:21.420 William Cheng: All right, so instead I implement over here and also they will go to the next one over here. And the next night is a function called called panic. 257 00:35:22.770 --> 00:35:28.170 William Cheng: That. So what is panic right panic is for the colonel to self to self destruct. 258 00:35:29.400 --> 00:35:35.640 William Cheng: Okay, so why would the colonel WANT TO SELF DESTRUCT right because you know what will. You know what, what will you do something that you're not supposed to do. Well, then, in 259 00:35:36.210 --> 00:35:44.580 William Cheng: That case the Kenosha shut down, right, because otherwise it kind of went through a bunch of other stuff. And then you're going to get confused because whenever you hit a bug. You should try to fix your bug as soon as possible. 260 00:35:44.850 --> 00:35:49.650 William Cheng: Okay, don't let bug accumulate because then it will be very confusing. But then, so to isolate over here. 261 00:35:50.430 --> 00:35:57.330 William Cheng: If you look at the source code, they will have to implement it and then it was called panic. So, again depending is in may may may Darcy line one 262 00:35:57.750 --> 00:36:10.560 William Cheng: at CES. And it will also show you will function it's in progress or so. Therefore, whenever you see one of these error message you know exactly which which source code which line number and which function that are in it makes it really, really easy to know exactly where your program crashed. 263 00:36:11.850 --> 00:36:20.250 William Cheng: OK. And then, and then you will see that this the slides that panning there's actually a strings that have a and this is exactly the stream that's inside of the parent function call. 264 00:36:20.640 --> 00:36:28.050 William Cheng: Okay, so you can actually get may connect you to say, oh, that's what the panic does is to print this line, a message over here. And then what you would do is, and it will hold your kernel. 265 00:36:29.130 --> 00:36:34.620 William Cheng: Okay, so this way, you're kind of won't do anything. Don't want will have what we'll do any more bad things. 266 00:36:35.880 --> 00:36:50.190 William Cheng: Now, so when you see something like this. Now your kernel stuck right so what you need to do is that you need to press Control see when you press Control, see what you're killing you killing something called kill em you kill em you is the Intel at six CPU emulator. 267 00:36:51.270 --> 00:37:01.200 William Cheng: Okay, so, so your current assignments actually running out of CPU emulator. One of the good thing about running inside of CPU emulator is that, you know, whenever you run your program, things are actually very, very repeatable. 268 00:37:01.800 --> 00:37:06.330 William Cheng: Okay, so this way when you write your kernel, the first time the second time where you get the same bug, chances are, 269 00:37:07.320 --> 00:37:15.810 William Cheng: Chances are, I guess, most, most of the time you're gonna end up with the crashing the exactly the same place with the same memory address, everything's going to be identical because we're running on a CPU emulator. 270 00:37:16.350 --> 00:37:26.130 William Cheng: Okay, so in order for you to kill the simian CPU emulator. You're going to press Control C and that will kill you emulator. Yeah, if you don't press Control see going up with things are running around. So that gets really annoying. 271 00:37:26.610 --> 00:37:31.260 William Cheng: So my recommendation over here is that as soon as you see the colonel is dead. So you should press Control see 272 00:37:32.250 --> 00:37:43.290 William Cheng: Now alright so make sure you have child is about, you know, by the end of this weekend. Right. So Sunday, I will send you the the source code should try this out on Sunday or, at the latest on Monday or Tuesday. Now, 273 00:37:43.950 --> 00:37:50.940 William Cheng: All right. And don't worry that if you don't know how to do current one yet. You know, for now, just get familiar with the spark and the we need documentation. 274 00:37:51.270 --> 00:37:59.160 William Cheng: And maybe read some kernel source code. Okay, again, the kernel source file is very, very difficult to understand. Right now it looks like it looks like nothing makes sense. 275 00:37:59.820 --> 00:38:08.190 William Cheng: Okay, even though the coast or look like your warm up to a long one CO, you know, manipulate data structures. If you could make function call with these kind of stuff, but you don't really know what the colonel does 276 00:38:09.090 --> 00:38:24.060 William Cheng: Okay, so, so my hope is that by the end of, you know, but but by, by the end of next week. Okay, so your current or some is going to start on Wednesday. So by, you know, by the end of the Thursday lecture, you will have everything that you need to finish Colonel one 277 00:38:25.200 --> 00:38:29.550 William Cheng: Okay, and then you then. And there used to be going full speed ahead. After the Thursday lecture. 278 00:38:30.840 --> 00:38:40.440 William Cheng: There are. So again, please. You know, you're not expected to understand most of the kernel source code. Okay, so leave them alone. Don't worry about that. I assume that they are just perfect. Yeah. 279 00:38:42.870 --> 00:38:51.930 William Cheng: Oh, the release documentation is also part of the winning source tree. It's a doc later documentation that PDF introduces usually what we need to you. 280 00:38:52.710 --> 00:38:59.760 William Cheng: It has also detailed instruction on the assignment use, you need to be the authority. So inside this document this document come from Brown University. 281 00:39:00.540 --> 00:39:04.230 William Cheng: Okay, so they're actually talking about their programming assignment and not our programming assignment. 282 00:39:04.710 --> 00:39:16.080 William Cheng: Okay, so. So again, you need to understand the way they introduced the winnings program over here and in their documentation. They're going to say that they can have five assignments. As it turns out, we're doing one, three and five. We're not doing two and four. 283 00:39:17.070 --> 00:39:23.610 William Cheng: Okay, for two and four. We got the solution from the Brown University, you know, in binary code. There's no source code. 284 00:39:23.790 --> 00:39:31.500 William Cheng: And the reason they don't have source code is that they don't want people to leak out their source code because the source code, our assignment in other universities. Okay, so they only give us the binary code. 285 00:39:32.370 --> 00:39:39.300 William Cheng: Okay, so we have the solution for assignment number two and four in binary format. And so what you need to do is that you need to finish Assignment one, three and five. 286 00:39:39.750 --> 00:39:50.550 William Cheng: Then assignment. One is no as process and threats. It's called products assignment to is known as the virtual file system or BFS assignment three is virtual memory. So this is also known as VM. 287 00:39:51.420 --> 00:40:01.500 William Cheng: OK, so those will be the three assignment that we're doing okay you are not doing the assignment one driver. One is consistent purposes there. So, therefore, when you read the winnings documentation, you can actually skip all that 288 00:40:01.980 --> 00:40:07.200 William Cheng: Okay, unless you want to sort of understand what they're doing. So you should read it a little bit. Okay. But you since you are not doing those assignment. 289 00:40:07.620 --> 00:40:17.100 William Cheng: You can ignore largely anything about your drivers or system PA system that. So these are done for you and they are compiled into libraries. 290 00:40:17.580 --> 00:40:29.790 William Cheng: One of them is called drivers. So this is called Live drivers i a. So that one is for the drivers assignment for Brian diversity and the other one is called Live as five Fs today so that one that I want to get is for, you know, the S5. 291 00:40:30.120 --> 00:40:37.380 William Cheng: Assignment for Brown University okay, swear source codes for these are not available. I always get people asked me to say Can I have the source code. 292 00:40:37.920 --> 00:40:43.080 William Cheng: I don't have the source code. Okay, so please don't ask me for the source go I get the binaries when the brain versus 293 00:40:43.440 --> 00:40:49.230 William Cheng: Then alright so you need to learn how to work around the code, you don't have, again, you have to assume that these co op. Perfect. 294 00:40:50.130 --> 00:40:59.970 William Cheng: Alright, so again, there's a plan and kernels. I'm also come with the colonel FAQ instead of Colonel assign it kind of FAQ, there's a lot of information about you know the the you know the stuff that you don't eat. 295 00:41:00.330 --> 00:41:08.400 William Cheng: The stuff that you don't have the source code for. Okay. Some people say, Well, I don't have the source go, how do I set a breakpoint there again, check out the colonel FAQ right 296 00:41:10.740 --> 00:41:18.870 William Cheng: Alright, so, so one one file that you need need to modify you know for you to configure your kernel. 297 00:41:19.170 --> 00:41:26.700 William Cheng: Is this file config. I am K. OK. So again, this one is inside the, you know, this was inside this directory right your CD into whereas it 298 00:41:27.060 --> 00:41:37.650 William Cheng: Right, you see the into a week's assignment 36 weeks. So inside this directory. There's a file for configuring a gay config that MK turns on and off different parts of the Colonel. 299 00:41:38.580 --> 00:41:46.260 William Cheng: Okay, so therefore you know you are you need you need to get familiar with as far out there at the beginning of this fall over here and it tells you which assignment to turn off. 300 00:41:46.800 --> 00:41:56.490 William Cheng: Okay, so for Colonel one for Colonel one, you know, actually kind of want to buy into two parts. The first part over here. You can leave config. I am K and K exactly the way was 301 00:41:56.880 --> 00:42:08.430 William Cheng: Gay and then towards the end, you need to set drivers equal to one and configure okay because you need to turn on device driver right the device driver is this fall over here. It was given to you from Brown University at the end of Colonel why 302 00:42:08.640 --> 00:42:18.540 William Cheng: You need to enable their device drivers. Okay, so this way you can finish, Colonel. What is OK. If you read the specular tell you you know what went to, I should turn this on. So right now I'm just going to tell you that at some point you just turned off. 303 00:42:19.080 --> 00:42:24.810 William Cheng: And the way to turn it on its go to configure okay look for the word driver right it's gonna say drive or equal to zero. 304 00:42:25.140 --> 00:42:36.810 William Cheng: Okay, so what you have to do is you have to change it to a one. And then you need to save the company that into a file and now you have to re compile your kernel when you record call record all you say may clean, followed by make right. Don't forget to do making 305 00:42:37.710 --> 00:42:45.120 William Cheng: Over. So whenever you change config. I am K. You have to give them a clean to dare get rid of all the kind of binaries and re compile the Colonel. 306 00:42:45.510 --> 00:42:55.140 William Cheng: Because some people don't want to do that just takes too long. It doesn't really take that long. Okay. But, but if you don't do this, you're going to be running with something with inconsistent, Colonel. So that will be really, really bad. 307 00:42:56.490 --> 00:43:00.360 William Cheng: Okay. So every time you change configure. Okay, you have to do make clay, followed by make 308 00:43:01.050 --> 00:43:10.260 William Cheng: That when you change your code, right. What will you change your code into Src file or something like that. So in that case, you don't have to do. I'm a clean, you can just do a make 309 00:43:11.040 --> 00:43:14.670 William Cheng: Okay, but if you change conflict, I am K, you have to clean everything up now. 310 00:43:15.150 --> 00:43:21.960 William Cheng: All right, for the Center for our call today is called BFS. Right. You need to set drivers equal to one. You also need to set vs equal to one. 311 00:43:22.440 --> 00:43:29.790 William Cheng: For the VM assignment, you know, which has a colonel three, you need to set drivers equal to one VM is equal to one f5 says either one vehicle while 312 00:43:30.300 --> 00:43:36.540 William Cheng: For you to do that, the VM assignment, guys. Okay, this is towards the end, you know, for this assignment. Yeah. So again, 313 00:43:37.140 --> 00:43:44.460 William Cheng: There's something called dynamic that's right below VI N equals 01 so you don't turn it on or off by default if 314 00:43:45.090 --> 00:43:48.930 William Cheng: It's off when you set it to one, you will make a colonel impossible to debug. 315 00:43:49.500 --> 00:43:54.720 William Cheng: So again, keep this zero. Most of the time they until unless you have nothing better to do. We're done with the colonel three 316 00:43:55.110 --> 00:44:02.250 William Cheng: Everything's perfect. You have nothing to do only a.com you said dynamic equals two, one. Okay. Otherwise, don't touch dynamic that 317 00:44:02.700 --> 00:44:09.720 William Cheng: By default, there's also another DB G is equal to. All right, DVD control what kind of debugging information that will get printed 318 00:44:10.170 --> 00:44:15.870 William Cheng: When you say DVD go to also, again, you need to open conflict and scroll down a little bit. You will see DVD equal to all 319 00:44:16.710 --> 00:44:22.800 William Cheng: So in this case, all the by the information at your print onto the screen and you'll put on a run really slow because it's doing too many things. 320 00:44:23.160 --> 00:44:34.380 William Cheng: Pretty document too much devalue information. Okay, you can actually change it by setting TBD equals two error karma task or DVD equal to enter a comma, comma test. There's no space between them. 321 00:44:35.580 --> 00:44:45.150 William Cheng: Okay, so, so, so, so, okay, you should read the grading Ghana for your Kronos I'm at the grading gun and says, the greater will use these kinds of settings over here, when they upgrade your current assignment. 322 00:44:46.320 --> 00:44:56.010 William Cheng: Okay, so therefore we have to bug in your code, you can leave DVD or two or something like that. But eventually, when you're done with your current assignment you need to read the grading I to see exactly what the greater will do 323 00:44:56.220 --> 00:45:02.160 William Cheng: And they said the GG the DVD over here to be exactly the same value rent your code and make sure that you don't get any deduction. 324 00:45:03.630 --> 00:45:15.840 William Cheng: OK. So again, it's very, very important to to to get all the way to go live because that's the only way the greatest. Okay, yeah. Every time I have a conflict, I am K to make claims made and now you can do with our size when x minus and then 325 00:45:16.980 --> 00:45:28.560 William Cheng: All the documentation says if you want to debug the colonel run this command right it will not work for our colonel. OK. So again, this is what Brown University. The weenies documentation is will probably diversity. Okay. 326 00:45:29.100 --> 00:45:36.570 William Cheng: For some reason, I don't know why it doesn't work in our current. Oh, Simon, you know, but but i guess so, a long time ago, a professor favor 327 00:45:37.620 --> 00:45:43.950 William Cheng: Perspective neighbor. I think I mentioned a lecture one, you know he he has your computer contribute some of the colonel test source go 328 00:45:44.310 --> 00:45:52.530 William Cheng: He also fixes pretty good a problem. So now, you know, in order for you to run your corner in the debugger. Get the only department that I work with HGTV 329 00:45:53.160 --> 00:46:05.490 William Cheng: Okay, if you wanted to work with other the better you're on your own. Okay, I, my understanding is that there are a way to get it to work with Eclipse and things like that. But again, it's much more involved. I don't, I don't think it'll work with Microsoft, you know, visual 330 00:46:06.750 --> 00:46:11.280 William Cheng: Visual C or something like that now anyways. So we wrote me a debugger. This is the command. 331 00:46:11.580 --> 00:46:19.950 William Cheng: Again, the first part over here exactly the same as before dot slash when it's minus and and then you have to say minus the GDP to send my debugger is the GDP debugger. 332 00:46:20.580 --> 00:46:27.030 William Cheng: That and then you have to say that, you know, in order for me to connect to the debugger. I have to wait. The number of seconds over here. 333 00:46:28.050 --> 00:46:34.410 William Cheng: Okay, our spec says that you should use minus W 10 so you need to wait for 10 seconds for you to connect with the debugger. 334 00:46:34.920 --> 00:46:46.590 William Cheng: Go. Some people are running on a faster machine. So this number can be smaller. So if you're on a, you know, pretty fast machine you can say minus W, four, five, maybe go to three. If you're on a super, super fast machine you can set it to you go to one. 335 00:46:47.100 --> 00:46:55.830 William Cheng: Okay, but don't set it to 00 doesn't work. Okay. So you said the smallest value you can set over here is equal to one. So after one second, you can connect with the debugger and now you can actually double your program. 336 00:46:56.520 --> 00:47:03.630 William Cheng: Okay, this command line syntax will work. And this command saying that will not work. Right, so make sure you always use the right commandments index. Okay. 337 00:47:04.920 --> 00:47:14.940 William Cheng: All right, and I and there's also another complication. If you want to debug your program. You also have to modify config. I am K and configure in case there is a line that says GDP. Wait, over here, equal to zero. 338 00:47:15.180 --> 00:47:20.100 William Cheng: If you want to run over debugger. You also have to set up people's, what is it to be aware of equal to one. 339 00:47:20.880 --> 00:47:29.250 William Cheng: Over. So this way, your, your readings opportunities that will wait for it, wait for you to be to connect to connect to, to connect before proceed. 340 00:47:30.090 --> 00:47:37.200 William Cheng: Guys, again, don't worry about what connects me right we have the idea of yours that GDP is a program your winnings running on the Qt me is not a program 341 00:47:37.380 --> 00:47:43.590 William Cheng: And now you're going to have one program debug another program. So again, we need to talk about connecting all these kinds of stuff. Yeah, so, so, so, so 342 00:47:43.740 --> 00:47:51.120 William Cheng: The bottom line over here is that if you don't want to W. W. Colonel just want to run it. You have to say GDP wake or the zero 343 00:47:51.360 --> 00:47:57.300 William Cheng: Okay, and then you, you do make clean your domain to make and then the way you run your kernel is just dot slash when it's minus at 344 00:47:57.870 --> 00:48:07.350 William Cheng: Okay, if you want to debug your kernel, you need to set GDP well here equals two, one may cleaning and then make and then run this command over here. So you'll run the debugger. 345 00:48:08.370 --> 00:48:15.180 William Cheng: OK. So again, if you want to switch between debugger and no debugger. You have to keep doing may clean because otherwise the code is going to be totally confused. 346 00:48:16.260 --> 00:48:27.540 William Cheng: Right, so. So yeah, if you're running incorrectly. It looks at your kernel is going to freeze. So whenever you your kernel freeze, you should think about whether you forgot to do something like this. Yeah. 347 00:48:30.000 --> 00:48:37.170 William Cheng: All right. Ah, so far for Colonel Simon the the grading guidelines actually pretty very different 348 00:48:37.740 --> 00:48:48.660 William Cheng: Okay, so therefore, again, you need to read the spec reintegrating guns. Remember carefully is completely different ball. I mean, there's very minor similarity with with your warm up assignment grading guidelines. But again, you should read it in 349 00:48:48.960 --> 00:49:01.080 William Cheng: Detail. If you have any question you know, send it to me that also there is a README file over here. So your pristine winning source code. There's a phone call proxy readme TXT file is empty. 350 00:49:01.920 --> 00:49:13.320 William Cheng: Okay, inside the spec. So instead of saying there's something called Ky readme txt this one kind of looked like the README file you have you be using warm up on a wall or two right because they're called W one dot dash Remi, 351 00:49:13.530 --> 00:49:23.970 William Cheng: That YouTube does remain. So again, this was very similar. So, what you should do is is you open this file copy the entire content of calorie me and paste it into proxy dot dash dash readme txt 352 00:49:24.450 --> 00:49:30.870 William Cheng: Okay, because why because that will you make a submission by default the Remi father will get included as proxies readme txt 353 00:49:31.350 --> 00:49:43.620 William Cheng: Okay, so if you don't copy this into a in the end going to send me the empty arena, you know, lose 10 points, guys. OK. So again, don't let that happen to you. Okay, so this is really simple. So just, just follow this procedure and it will be okay. Yeah. 354 00:49:45.030 --> 00:49:57.390 William Cheng: Alright, so we are ready to make a submission. The command. He will type is made Proxima and then he will run this command to create products dash submit that hard that Jeezy and he will include all the Father. You're supposed to do to include 355 00:49:57.870 --> 00:50:05.670 William Cheng: You know, originally. OK, so my recommendation over here is that you must not my recommendation. I'm going to tell you that you must not change the script. 356 00:50:06.660 --> 00:50:15.690 William Cheng: Okay, if you include additional file in your submission, the greater will have to leave the additional files. You are not allowed to include additional files in your submission 357 00:50:16.860 --> 00:50:23.040 William Cheng: OK. So again, please take this seriously because if you ask the greater to say, hey, please keep me to keep my files. Know the greatest not allowed to do that. 358 00:50:23.760 --> 00:50:31.290 William Cheng: But that's okay. This is one reason when you write your code, you should write it inside the same function because those function will get picked up by this command when they create a submission 359 00:50:31.590 --> 00:50:38.280 William Cheng: If you put it in the wrong file that file will not forget, including your submission and if you try to include that file, the greatest going to delete it. 360 00:50:39.750 --> 00:50:53.430 William Cheng: OK. So again, you know, make sure you take all these very, very seriously. Right. So you do need to submit proximate, I thought, oh god. So this is just like your warm up one you know so much about one or two submission file going to use the same procedure, go to the web form, you know, etc. Okay. 361 00:50:55.980 --> 00:51:05.970 William Cheng: Alright, so for the second point, I mean it's, I mean, it's called BFS. So in this case you will, you know, again, there's an empty file called BFS readme txt you should, you know, get go to the spark. 362 00:51:07.050 --> 00:51:16.260 William Cheng: You know that open up K to Readme file dot txt copy the content and putting inside BFS remain, and then we try to create your submission issue type V mug DFS amen 363 00:51:16.470 --> 00:51:23.880 William Cheng: And again, it will pick up all the fall, that's necessary and you're getting. You're not allowed to change that I didn't will create a submission file again let me upload it using 364 00:51:24.360 --> 00:51:34.590 William Cheng: The web form for Colonel to so in the kernel assign a web page over here. There are three submission form wonderful Colonel one month or quarter to one for Colonel three. So you need to make sure you pick the right one. 365 00:51:34.980 --> 00:51:43.440 William Cheng: To make your submission, guys, so you can pick the wrong line is going to warn you, to say, hey, you know, I think there's something wrong file. So in that case, don't click ok right you should you should cancel that. And then find the right one. 366 00:51:44.010 --> 00:51:55.860 William Cheng: That I for virtual memory over here. Again, the, the, the, the empty revised copy and we me and there's a sentence I SPECT there's of K three Remi, again, open a copy everything to be me. Me and then, you know, 367 00:51:56.130 --> 00:52:03.930 William Cheng: Do all the self grading or whatever that you're required to do now. And in the end, we're ready to make a submission. You say make VM submitted to create a submission file. 368 00:52:04.170 --> 00:52:11.310 William Cheng: And again, you need to bear. So, so, yeah. Also, the, the step over here, there's, there's something called verify your kernel submission, make sure you follow those steps. 369 00:52:12.390 --> 00:52:24.570 William Cheng: Now, all right. Again, I put it in red over here. You must not include any other files I mentioned in the mic about command or I will have to leave them before grading. Okay, so you must not add any additional files, then 370 00:52:25.680 --> 00:52:34.290 William Cheng: You should also submit a source code, only if you end up you modify your make other shoe to actually include some other garbage. Okay, we're gonna do one of the points. Okay. 371 00:52:34.470 --> 00:52:42.420 William Cheng: So we weren't. These are two points if you submit binary files will deduct to apply if you send me an extra five. So this is two points per extra father you submit it. 372 00:52:43.350 --> 00:52:50.910 William Cheng: So if you 710 extra binary out over here. We're going to happen. I mean, some people actually change the script to include that all files in their submission. So in this case you can lose a lot of points. 373 00:52:51.270 --> 00:52:57.300 William Cheng: OK. So again, don't do that, guys. Some people, you know, I don't know why they change them a file don't change the law. 374 00:52:58.530 --> 00:53:02.820 William Cheng: Ok change configure MK. That will be the one that you should change don't change the makeup that 375 00:53:03.510 --> 00:53:11.340 William Cheng: Right there lots of reason over here for pointed out. So again, don't mess. I mean, some people actually change the director hierarchy. Again, I have no idea why why they do that. 376 00:53:12.330 --> 00:53:21.210 William Cheng: OK. So again, don't do that. If you do that, you're gonna end up losing a lot of points, there's, again, there's just no way for us not to data points, right, because the grading guys very specific if you do this, you know those points now. 377 00:53:21.840 --> 00:53:33.420 William Cheng: Alright. So assume that you're hungry are you say home directory you put your prestige. We next you know 3.6 GPA. Again, this is the one that you download. To start with, right, if you have a team. You got to decide. 378 00:53:34.560 --> 00:53:37.620 William Cheng: Who's the key and then when you create a submission file called proximity 379 00:53:38.130 --> 00:53:44.070 William Cheng: Jeezy over here, my recommendation, where you try to verify your submission raise the follow again the Colonel. 380 00:53:44.340 --> 00:53:50.220 William Cheng: Other verify your Colonel submission procedure over here, right. So again, look at the web page over here. I guess there's, there should be similar. 381 00:53:50.520 --> 00:54:00.510 William Cheng: There. But what's important. Over here is that in the air. You need to go through the grading guidelines line by line to pretend that you are, the greater and then grade yourself to see what will you will get 382 00:54:01.530 --> 00:54:08.160 William Cheng: Okay. People are not doing that you warm up wine. I don't know why, in the end, they lose a lot of points, right. So again, make sure you do that, you'll cut out some of 383 00:54:08.430 --> 00:54:12.660 William Cheng: Your kudos, I know what you do some point everybody you know your team lose the same number of points. 384 00:54:13.440 --> 00:54:17.070 William Cheng: Now, so definitely this case is, you know, you might end up with a lot of points in your team. 385 00:54:18.060 --> 00:54:24.570 William Cheng: Okay, so this is really easy to verify. Right. That's why you know deducting all these points are reasonable because they're really easy to verify 386 00:54:25.410 --> 00:54:32.460 William Cheng: Yeah, yeah, and also check every line of your really file to make sure that there are correct. Very because if they're not, we have to de de de 387 00:54:32.940 --> 00:54:38.130 William Cheng: de de de de de point accordingly. Okay. All right. And again, please understand that, you know, we're, we're 388 00:54:38.940 --> 00:54:44.100 William Cheng: We're, we're following these rules. It's not that because I have a power trip. I want to have power over you. 389 00:54:44.550 --> 00:54:54.660 William Cheng: Want to deduct points for you. It's actually the opposite. I have no power at all. I have to deduct this point right you know you can because they're written down as part of the rule over here I have no choice but to deduct that 390 00:54:55.320 --> 00:55:03.360 William Cheng: I don't have any power to say I want to give the students more point give those who are less fortunate. I have to stick to my fairness policy. I actually have no power. 391 00:55:03.630 --> 00:55:10.200 William Cheng: Okay. So I'm asking you, I'm begging you. Who to sort of follow all the steps of as it this way, you don't lose any silly points. 392 00:55:10.890 --> 00:55:21.540 William Cheng: All right, because they're really easy to avoid especially if you have a team, maybe, maybe should designate one person to say hey you are, you're in charge of making some issue, you're in charge of making, making sure that we don't lose any silly points. 393 00:55:22.320 --> 00:55:29.250 William Cheng: Or as it again that job will be very important there maybe not as important as coding, you know, but again, it's a very, very important job if somebody has taken very seriously. 394 00:55:30.240 --> 00:55:39.480 William Cheng: Then if somebody was somebody the wrong file right because weapons that they're collaborating and then they forgot that. You know, the one that's inside the bucket.org dot one is the latest version but turns out that something's wrong. 395 00:55:39.840 --> 00:55:45.180 William Cheng: Something's wrong file. Okay, there's submitted this on our data files. So again, there's nothing we can do after the deadline is over. 396 00:55:45.480 --> 00:55:56.910 William Cheng: Okay, it's your job to make sure that you go through all these that very, very carefully to make sure that you do getting us higher the scores possible to make sure that everything you submitted is everything you want us to great yeah 397 00:55:59.460 --> 00:56:00.030 William Cheng: All right. 398 00:56:04.080 --> 00:56:08.070 William Cheng: Okay. And also you need to read everything very carefully. If you wanted the duck something 399 00:56:08.520 --> 00:56:18.510 William Cheng: Make sure you read whatever you do, if you wanted to. The, the line over here. I made you to read what it's doing. Right. Yeah. If the line that you're deleting it says by deleting this line, you will lose 20 points should you delete that line. 400 00:56:19.470 --> 00:56:28.050 William Cheng: I mean you should not do either. Alright. So again, you know, there are there are their stuff inside the week source code. It says if you if you do some into this line and lose 20 points. Okay. 401 00:56:28.650 --> 00:56:36.000 William Cheng: Well, don't, don't delete them. It's as simple as that. Okay. If you want to avoid losing a lot of points, you know, don't do, don't, don't make these kind of silly mistakes. 402 00:56:36.300 --> 00:56:43.260 William Cheng: I've ever something was up, up, up. But I want to delete. I really don't want, I don't like to look at them. But again, if you delete that I have no choice but to the 20 points for you. 403 00:56:44.310 --> 00:56:46.290 William Cheng: OK. So again, it's a very simple. Yeah. 404 00:56:48.690 --> 00:57:00.810 William Cheng: Oh, I said, this is actually a good point to break. So next time we'll talk about, you know, some new requirements they sorta sorta in the grading of the colonel you one by one and two, we will pretty much. We don't look at your code. 405 00:57:01.830 --> 00:57:07.470 William Cheng: Okay well in the kernel assignment. We're going to start reading your code because because the Colonel. The Colonel is very 406 00:57:09.240 --> 00:57:17.850 William Cheng: That the car is very serious. So, so the requirement over here is that, you know, when you turn in your kernel code your kernel code should contain no garbage. 407 00:57:18.990 --> 00:57:23.550 William Cheng: Okay, so what the brain is going to make sure that is that every line of code that you submit their all useful. 408 00:57:24.780 --> 00:57:29.850 William Cheng: Okay, so how do we do that. So I'm going to leave this until next time, so we're going to talk about, you know, how does a great. It's a great that 409 00:57:30.030 --> 00:57:38.910 William Cheng: OK. So the idea here is that don't write a bunch of code and leaving our current all unique in, garbage out of Colonel you leave if you leave garbage is out of control. We're going to start deducting points. 410 00:57:39.780 --> 00:57:45.900 William Cheng: Okay, so therefore, again, you need to write your code by thinking that very, very carefully and write down things only the thing that makes sense. 411 00:57:46.200 --> 00:57:50.880 William Cheng: And some people will read a lot of Eric. Eric check in code right if the error chicken go for air that never happened is 412 00:57:51.540 --> 00:57:57.630 William Cheng: You're supposed to do these code, right. You need to understand what kind of American hover at one kind of error. Basically, it's impossible to happen. 413 00:57:58.500 --> 00:58:01.140 William Cheng: Well guys will get don't read a lot, don't leave a lot of junk inside the Colonel. 414 00:58:01.890 --> 00:58:08.670 William Cheng: Okay, so, so one of the I want to mention is that, you know, for your current one assignment your current one is Emma is about 500 lines of code. 415 00:58:09.600 --> 00:58:20.070 William Cheng: That if you end up writing 2000 lines of code, you must have a lot of junk in the kernel guys are the guy. He needs to delete that. Alright. So again, we're going to talk about it in the next week's that discussion section. Yeah.