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?