CMPSC
311,
Reading List for Midterm Exam 2
This list accumulates the textbook sections mentioned in the lecture
notes and project assignments, since the first exam, with a few
additions. The Intro
to
Unix notes cover material that is not always in the reading
assignments, so don't forget to review that. Similarly, the Unix
Command-Line Structure notes, and the c2html program, have
useful
code examples. Don't forget to try the exercises that appear
in
the lecture notes. Some review of material covered on the
first
exam might not be a bad idea, especially if it involves topics that
were covered in more depth after the exam, such as environment
variables, address spaces, processes, files and I/O.
Bryant & O'Hallaron, CS:APP
- Ch. 1
- Sec. 1.7.1, Processes; Sec. 1.7.4, Files
- Sec. 1.9.1, Concurrency and Parallelism
- p. 50 (signals can be enabled/disabled)
- Sec. 7.9, Loading Executable Object Files (for exit)
- Ch. 8, Exceptional Control Flow
- intro (pp. 702-703)
- Sec. 8.1, Exceptions (concentrate on interrupts and system
calls)
- Sec. 8.2, Processes
- Sec. 8.3, System Call Error Handling
- Sec. 8.4, Process Control
- Sec. 8.4.5, Loading and Running Programs, including
Practice
Problem 8.6
- Sec. 8.5, Signals (it's ok to skip Sec. 8.5.6-8.5.7 for now)
- Sec. 9.8.2, Fork, Revisited
- Ch. 10, System-Level I/O
- Ch. 12 intro (pp. 934-935, Concurrency)
- Sec. 12.7.2, 12.7.3, Reentrancy
- Sec. 12.7.4, Races
King, CP:AMA
- Don't forget to look at the Q&A at the end of each
chapter.
- pp. 688-689, 765-766, getenv()
- const - Sec. 18.3, Type Qualifiers, and examples on
pp. 172,
250-251, 254-255, 265-266, 478-479
- volatile - Sec. 20.3, Other Low-Level Techniques,
pp. 523-524
- restrict - Sec. 17.8, Restricted Pointers, and the
example on p.
543
- Ch. 3, scanf, printf
- pp. 14-15, 19-20, 22, 130-131, 134, 139-141, scanf,
printf,
getchar, putchar
- Sec. 13.3, scanf, printf, gets, puts
- p. 504, second Q&A, FILE
- Ch. 15, Writing Large Programs
- Sec. 19.5, Design Issues for Abstract Data Types (suggestion
to use
assert())
- Ch. 21, The Standard Library
- Sec. 21.1, Using the Library, getchar
- Sec. 21.4, The <stddef.h> Header: Common
Definitions
- Ch. 22, Input/Output; the Q&A is especially helpful
- File Buffering subsection on pp. 549-550.
- Sec. 24.1, The
<assert.h> header:
Diagnostics
- Sec. 24.3, Signal Handling (signal() and raise())
Harley Hahn's Guide to Unix and Linux (optional textbook)
- Ch. 12, Using the Shell: Variables and Options
Shell scripts, see the lecture notes
Makefiles, see the lecture notes and projects for examples
Skill set (repeated from the Exam 1 reading list)
- You should be able to read a man page, or find equivalent
information on the web. But since the exam is closed-book,
closed-computer, we won't test this skill directly.
- You should be able to read a makefile. By the time of
the
second exam, you should be able to write one.
- You should be familiar with the Unix utilities that have been
demonstrated in the lectures and that were useful on the
projects. For example, od (octal dump, to see
the bytes of a
file), elfdump (to interpret the bytes of an
executable file), etc.
- There won't be any questions on the Unix editors, since we
never
specified which one you should use.
- Generally speaking, any programming example in the lecture
notes
or project solutions would be good to know.