2.1. The Role of Abstraction2.2. Concurrent Execution as Interleaving of Atomic StatementsStatesScenarios2.3. Justification of the AbstractionMultitasking SystemsMultiprocessor ComputersDistributed Systems2.4. Arbitrary Interleaving2.5. Atomic Statements2.6. CorrectnessLinear and Branching Temporal LogicsA2.7. Fairness2.8. Machine-Code InstructionsARegister MachinesStack MachinesSource Statements and Machine Instructions2.9. Volatile and Non-Atomic VariablesA2.10. The BACI Concurrency SimulatorL2.11. Concurrency in AdaLVolatile and Atomic2.12. Concurrency in JavaLVolatile2.13. Writing Concurrent Programs in PromelaL2.14. Supplement: The State Diagram for the Frog PuzzleTransitionExercises