The exam covers everything I've covered from week 1 through week 7
of class. You are responsible for all material I covered in lecture,
for any in-class small group work, and homework assignments.
The exam will not focus on details from lab assignment,
however, you should also know the basics of how some functionality of
the shell lab is implemented to create process to execute some
different command lines. For example, you should know the basics
of fork-exec, wait, pipes, I/O redirection. I don't care about your
knowing all the right parameters to specific system calls (although key ones
are important to know or describe to me in any code you write).
I will not ask you questions about Linux kernel code.
Tips for Studying
The best way to study is to review your lecture notes, review the assigned
reading, go over problems we did in class, go over homework problems and
other try some other problems from the book.
You should know definitions, be able to apply what you know to solve
problems, discuss implemetation issues and goals, discuss trade-offs in
different solutions and explain WHY a solution/approach is good or not.
I encourage you to do some studying in small groups. Going over problems
and discussing answers together is a great way to prepare for the exam.
A few exam taking tips
- Write clearly. if I can't read your answer, it is the same as
no answering a question. I will never guess what you meant to say.
I will only grade what you do say and what I can read.
- If a question "show complete solutions for A and B". Do NOT show
a solution of A and then write a note telling me that the solution for B is
similar. Again, I will not guess what you meant (doing this would be
- If you get stuck on a problem, move on and come back to it later
(maybe jot down some notes about what you are thinking before moving on)
- If you are not sure what a question is asking, ask me during the exam
- Read each question more than once. if there are multiple parts
underline or mark in some way each sub-question, and then go back
and make sure your answer includes answers to all parts
- Don't leave a question blank
- To "yes or no" or "choose an option" type questions, only list a
single answer (i.e. answering both "yes" and "no" is not a
correct answer even though one of "yes" or "no" is correct).
- For questions where you may be computing something, show your
work, making it clear how you computed a value. This way if
you have a simple arithmetic error, I can see what you did
and you can receive some or all the credit for the problem
For example, for a computing ave wait time if you write something like this:
P0 waits 0 + 4 + 6 + 2, P1 waits 1 + 4, P3 waits 2 + 6
If you then make an addition error and say it is 23/3, I can see how you
were calculating things and give you some credit.
I often just want you to leave your answer as an expression anyway:
(0+4+6+2) + (1 + 4) + (2+6)