What are the reasons programmer's have trouble with scheduling?
Find your favorite program, and try to use it in a completely wrong manner. Open up files of the wrong type, choose invalid options, close windows that are supposed to be open, etc. Count how many different error scenarios they had to account for.
What are corner cases? Can you list examples of numeric corner cases?
Why is user testing so important?
What are stubs and drivers used for? What's the difference between the two?
What are recovery points used for?
How many different error codes should a program have?
Go through the add-year.s program and add error-checking code after every system call.
Find one other program we have done so far, and add error-checking to that program.
Add a recovery mechanism for add-year.s that allows it to read from STDIN if it cannot open the standard file.
What, if anything, should you do if your error-reporting function fails? Why?
Try to find bugs in at least one open-source program. File a bug report for it.
Try to fix the bug you found in the previous exercise.