Distributed Computing Survey of Prerequisites
I will try to fill you in on most of the prerequisites. The survey below is for that purpose. In some ways it may be better that you have not heard of some of these things. Post on Piazza this survey answered in (some) detail.
1 Concepts from Concurrency
- How familiar are you with: critical sections, mutual exclusion, message passing, synchronization, fairness, starvation, non-determinism?
- Can you differentiate deadlocks from livelocks? safety from liveness?
2 Constructs from Concurrent Programming
- How familiar are you with: Critical Regions, monitors, binary and general semaphores?
- How familiar are you with IPC mechanisms of Linux?
3 Classic Problems
- How familiar are you with: Producers and Consumers, Readers and Writers, Dining Philosphers, Roll-Your-Own Cigarette Smoking, Sleeping Barber, Drinking Philosophers.
4 Formal Semantics
- How familiar are you with: assertions, pre- post-conditions, loop and class invariants.
5 Program Development
- What is your program development experience using Linux, and using Windows?
- What is the largest C/C++ program that you have written personally? Give the (approximated) number in pages. (A typical code page has about 50 lines, a line may be typically 20 characters.)
- Same question but with Java.
- Same question but with Scala. (Very possible that you have done nothing with this language.)
- How familiar are you with
make, ant, maven
, and various cli-tools? - What IDEs have you used and for how long? E.g., idea/ eclipse/ netbeans/ other-IDEs.