Final Exam Topics and Sampe Questions
The final exam will cover all required reading (reading listed on the
syllabus schedule) as well as content from all lectures (excluding
student QuickTalks and Guest Lectures).
The best strategy for studying for the exam is to make sure you have
read all the required reading, review the lectures, and make sure you
have done all the labs.
The exam will consist of multiple choice, fill in the blank and short
answer questions. The exam will be designed to take from one to
1.5 hours to complete. You will be given 1.5 hours to complete
the exam.
All topics (given the above constraints) will be considered fair game, but you will want to focus on issues around:
basic and advanced sockets
processes vs. threads
thread synchronization techniques
Race condition and deadlock issues
UDP and TCP details
Threading problems (oversubscription, cache ping-pong, etc.)
Unicast, Broadcast, and Multicast details and issues
Blocking and Non-Blocking I/O
I/O multiplexing, including poll() and select()
basic and advanced multithreading
System V IPC (shared memory, semaphores, message queues)
General concepts in BOOST
Example Questions:
Benefits/Liabilities of (threads, semaphores, message queues, shared memory) include....
One disadvantage of (processes, threads, semaphores, message queues,
shared memory) vs (processes, threads, semaphores, message queues,
shared memory) is that...
If your processing goal was to increase throughput, which
(multithreading, multiprocessing, multiplexing, etc.) method would you
use to achieve X...
Describe some abstractions that may be unintentionally taken for granted in system design
Is it practical to "roll your own" IPCs as part of your application? Why or why not?
Concurrent programming is increasingly necessary as problem spaces
expand and the speed of individual cores in a microprocessor stagnates
What makes such software challenging to design and implement? Why is this not a solved problem?