 Okay, let's start. Hello everyone. I hope you can hear me in case you cannot hear me. Just type in the chat box so that I can figure out what's the problem. In this recitation, I'm going to walk you through assignment two. The first part of the assignment is pretty straightforward. I assume that most of you have gone through the process of creating an account on WeChill and connecting it to the bandwidth. In case you haven't, there's a pretty good discussion about this. I'm Piazza. So the only thing that you need to do for this part is to go through levels five to 10. And for the submission, just be careful about your readme. It's case sensitive. It should be all in kept on without any extension. Know that the extent after the readme. And in order to save your progress, you don't need necessarily to run WeChill command in every step or every level. If you can just run the command when you're done, it will save your progress. The part of the homework asks you to implement a secure house somehow like what was discussed in the class. This has several policies. The first one is it has several authorized key. People can enter the house with the authorized key if they first insert the key, then turning the key, and finally they can enter the house. Five barters have their own special key that they can use to enter the house. And these three steps for entering the house might happen not exactly followed by each other. They might be other commands or even spilling them. The first, I'm going to go through the description of this part. After that, I'm going to answer common ask questions. So a brief description, here is the command that you should run your program with. The first command after the name of the program should be the owner name followed by keys, which are all the authorized key. After your program, your program should be able to execute several events. The first one, for example, here is insert the key. Therefore, inserting the key, anyone can insert the key, insert any key that they wish to. But the second command, which is turn key, only the keys that are not everyone would be able to turn the key. So the response would be success or failure according to the policy. The final step of entering the house would be enter house. Again, according to the policy, it would return access denied or access allowed. One can see who's inside the house by this command up, who's inside. So the result would be nobody home if no one is home. Otherwise, you should print out the name of people who are in the house ordered by their access time. The next command, next event would be change lock, where only the owner of the house can change the lock. And while the owner is inside the house. So the response for this one, again, would be access denied or okay. And the final command is leave house username, where if the username is in the house, you should say okay. Otherwise, username not here. Here is an example of the command for running program and given input and their expected output for the implementation. And you should be careful that your program should be able to run on OVENTO 18.04. If you don't have this, you may need to use a virtual machine. Two test scripts is provided for you. One of them is test.sh. The other one is test underlying debug.sh. In order to run these two scripts, you should go through a step one, two, three here. And for the submission, you should only upload your source code, make file and read me file. Again, the names matter here. Be careful about your naming and the name of your program should be exactly same as what was in the explanation of the homework. The common question that people ask for getting input, someone asked if they should get inputs all together or line by line. So it doesn't matter because actually you're going to process each line separately. So it's not something that you should consider. It's the same exact thing for output. It doesn't matter whether you give back the response for each event at a moment or return the responses all together. And also you should take input as long as there is an input. For entering the house part, the three steps, as I mentioned before, the three steps for opening the door may not happen exactly one after each other. That's something you should consider while implementing. And you should make sure only the user that inserted the key can turn the key and only the user that has turned the key can enter the house. If you consider these things, you should be able to go through the process of entering the house. For who's inside the event, people ask if firefighters have names. Yes, firefighters have names. Their key should act like any other key. And yes, their name is shown when the comment or the event who's inside runs. The next question here, someone asked for the who's inside the house event, the case where there are more than one person in the house. Be careful that your response must be comma-separated list of users. Any other formatting for the printing is not accepted. For changing the locks, someone asked what if someone who's already in the house try to enter again? So there won't be a problem because people might have same name. So as long as they have authorized key, they can enter the house. So we can have multiple people with the exact same name. For changing the lock, when the owner, we said that only the owner while inside can change the lock. Change when the owner, change the lock, change the keys. New keys are not going to happen to the previous one. Instead, it's going to replace all the old keys with a new one, except for the firefighter key that always remain the same. So in the leave the house event is pretty straightforward. Again, every event and their response is case sensitive. Make sure to write the outputs according to the structure that's provided for you. And here that you have a test script, just because if you run your program with the test process and see it's okay, their response is okay, does not mean it does not guarantee you're gonna pass all the cases in the grade scope. When you upload your code in the grade scope, you can see the result of each test case for your code. So I'm gonna get back to you to see if I have any questions for me. I think so far I've gone through all the questions. I'm gonna wait a few more minutes for you to see if you have any questions. Someone asked, they don't know how to ask their question. So you can type it here. If you're not comfortable with typing it here, you can come to office hours or ask on pizza. Anyway, I'm waiting for you to see if I can. What do you mean by you pass test cases but not auto grader? Can you clarify your question? Because as I told you, just because you pass these, the test that SH doesn't mean you pass all the test cases. It's just a simple test case. There are different test cases in the auto grader. So I'm sure if you can clarify your questions. If I'm understanding your question correctly, no. The test case that is in the test.sh or test underline debug.sh is not exactly what the auto grader is gonna test your code with. Auto grader has different test cases for different situations. So, but as long as your program work with all these policies that we mentioned here, your program should be able to pass all the test cases that are in the auto grader. Otherwise, you can see the output of the auto grader and try to figure out what the problem with your code is. Or if you don't understand, you can ask your question on pizza or even here if you're comfortable. I'm gonna wait a few more minutes to see if people have a question. Okay.