Week 1Introduction to Concurrent Programming
### 📖 核心知识点:并发编程导论 课程介绍并发编程的动机和基本概念。学习 Concurrency vs Parallelism 的区别。理解 Process 和 Thread 的概念、创建和生命周期。学习并发编程面临的核心挑战:Race Condition、Deadlock、Starvation。 - **核心概念/公式**: Concurrency(逻辑同时)vs Parallelism(物理同时)、Thread 生命周期 (New→Runnable→Running→Blocked→Terminated)、Non-determinism ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 7h(Lecture 2h + Applied Class 1h + 自学 4h) 🎯 **考试关联**: Final Exam 会考并发基础概念和 Race Condition 的识别。 🧪 **Tutorial/Lab**: 编写简单的多线程程序,观察 Race Condition 的不确定行为。 📌 **作业关联**: Assignment 1 基于本课程的并发编程概念。 ⚠️ **易错点**: Concurrency 不等于 Parallelism(单核也可以并发);Race Condition 可能在多次运行中偶尔出现,不容易复现。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
课程定位与先修回顾
💡 学习提示
• 总结 课程定位与先修回顾 的核心概念与适用场景
• 为第1周生成 5 道练习题并给出解题步骤
Week 2Threads & Thread Management
### 📖 核心知识点:线程与线程管理 深入学习 Thread 的创建和管理。掌握 Java/Python 中线程的编程接口。学习 Thread Pool 的概念和优势。理解 Thread Safety 的含义和实现方法。 - **核心概念/公式**: Thread.start() vs Thread.run()(直接调用 run 不会创建新线程)、Thread Pool (ExecutorService)、Thread-local Storage ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 8h(Lecture 2h + Applied Class 1h + 自学 5h) 🎯 **考试关联**: 线程创建和管理的 API 使用是基础考点。 🧪 **Tutorial/Lab**: 实现多线程计算任务,比较单线程和多线程的性能差异。 📌 **作业关联**: Assignment 1 需要使用多线程编程。 ⚠️ **易错点**: 调用 run() 而非 start() 导致同步执行;线程创建过多导致资源耗尽;忘记 join() 等待线程结束就读取结果。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
核心概念导入
💡 学习提示
• 总结 核心概念导入 的核心概念与适用场景
• 为第2周生成 5 道练习题并给出解题步骤
Week 3Mutual Exclusion & Critical Sections
### 📖 核心知识点:互斥与临界区 学习 Critical Section Problem 的定义和解决方案。掌握 Mutual Exclusion 的四个要求:Mutual Exclusion、Progress、Bounded Waiting、No assumption about speed。学习 Peterson's Algorithm 和 Hardware Solutions (Test-and-Set, Compare-and-Swap)。 - **核心概念/公式**: Critical Section 的 Entry/Exit Protocol、Peterson's Algorithm 的两个变量 (flag[], turn)、Atomic Operations: CAS (Compare-And-Swap) ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h) 🎯 **考试关联**: Critical Section 和 Peterson's Algorithm 是 Final Exam 的核心考点。需要能证明算法满足互斥性。 🧪 **Tutorial/Lab**: 实现 Peterson's Algorithm,验证其正确性。分析 CAS 操作的 ABA 问题。 📌 **作业关联**: 理解互斥机制是后续所有同步编程的基础。 ⚠️ **易错点**: Peterson's Algorithm 在现代多核 CPU 上需要 Memory Barrier 才能正确工作;CAS 的 ABA 问题容易忽略;忘记 Critical Section 应尽可能短。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
关键方法I
💡 学习提示
• 总结 关键方法 I 的核心概念与适用场景
• 为第3周生成 5 道练习题并给出解题步骤
Week 4Semaphores & Synchronization Primitives
### 📖 核心知识点:信号量与同步原语 学习 Dijkstra 的 Semaphore (信号量) 概念。掌握 Binary Semaphore(互斥锁)和 Counting Semaphore(资源计数)的使用。用 Semaphore 解决经典同步问题:Producer-Consumer、Readers-Writers、Dining Philosophers。 - **核心概念/公式**: P(wait/acquire) 和 V(signal/release) 操作、Binary Semaphore 实现 Mutex、Counting Semaphore 管理有限资源 ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 10h(Lecture 2h + Applied Class 1h + 自学 7h)🔥 高压周 🎯 **考试关联**: Semaphore 解决同步问题是 Final Exam 的高频考点。经典问题的解法必须掌握。 🧪 **Tutorial/Lab**: 用 Semaphore 实现 Producer-Consumer 和 Bounded Buffer 问题。 📌 **作业关联**: Assignment 1 可能涉及 Semaphore 的编程应用。 ⚠️ **易错点**: P 和 V 的顺序错误导致死锁;Counting Semaphore 初始值设置错误;在 Critical Section 内调用可能阻塞的操作。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
关键方法II
💡 学习提示
• 总结 关键方法 II 的核心概念与适用场景
• 为第4周生成 5 道练习题并给出解题步骤
Week 5Monitors & Condition Variables
### 📖 核心知识点:管程与条件变量 学习 Monitor (管程) 作为高级同步抽象。掌握 Condition Variable 的 wait() 和 signal()/notify() 操作。理解 Mesa-style vs Hoare-style Monitor 的区别。用 Monitor 重新实现经典同步问题。 - **核心概念/公式**: Monitor 的互斥进入保证、Condition Variable 的 wait/signal 语义、Mesa Monitor 中 signal 后等待者需要重新检查条件 (while loop) ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h) 🎯 **考试关联**: Monitor 和 Condition Variable 的使用是考试重点。Mesa vs Hoare 的区别常考。 🧪 **Tutorial/Lab**: 用 Java synchronized + wait/notify 实现 Monitor-based 的 Bounded Buffer。 📌 **作业关联**: Monitor 是实际编程中最常用的同步机制。 ⚠️ **易错点**: Mesa Monitor 中必须用 while 而非 if 检查条件(signal 后条件可能被其他线程改变);忘记在 synchronized 块内调用 wait/notify 导致 IllegalMonitorStateException。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
建模与分析
💡 学习提示
• 总结 建模与分析 的核心概念与适用场景
• 为第5周生成 5 道练习题并给出解题步骤
Week 6Deadlock: Detection, Prevention & Avoidance
### 📖 核心知识点:死锁的检测、预防与避免 系统学习 Deadlock 的四个必要条件 (Coffman Conditions): Mutual Exclusion, Hold & Wait, No Preemption, Circular Wait。掌握死锁预防(破坏四个条件之一)、死锁避免 (Banker's Algorithm)、死锁检测与恢复的策略。 - **核心概念/公式**: Coffman's 四个条件、Banker's Algorithm(Safe State 判断)、Resource Allocation Graph、Wait-for Graph 检测环 ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h) 🎯 **考试关联**: Banker's Algorithm 的手工执行和 Safe State 判断是 Final Exam 的必考内容。 🧪 **Tutorial/Lab**: 手工执行 Banker's Algorithm,判断给定状态是否安全。分析 Resource Allocation Graph 中的死锁。 📌 **作业关联**: 死锁避免策略在并发系统设计中至关重要。 ⚠️ **易错点**: Banker's Algorithm 的 Available、Max、Allocation、Need 矩阵计算容易出错;检测 Safe Sequence 时遗漏某个可执行进程;实际编程中的 Lock Ordering 实施不一致。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
实验与实现
💡 学习提示
• 总结 实验与实现 的核心概念与适用场景
• 为第6周生成 5 道练习题并给出解题步骤
Week 7Message Passing & Communication
### 📖 核心知识点:消息传递与通信 学习进程间通信 (IPC) 的消息传递模型。掌握 Synchronous (Blocking) vs Asynchronous (Non-blocking) Message Passing 的区别。学习 Channel-based Communication 和 Actor Model 的概念。 - **核心概念/公式**: Send/Receive 原语、Direct vs Indirect Communication、Buffered vs Unbuffered Channel、Actor Model 的 "no shared state" 原则 ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 8h(Lecture 2h + Applied Class 1h + 自学 5h) 🎯 **考试关联**: Message Passing 模型和 Channel 语义是考试内容。 🧪 **Tutorial/Lab**: 使用 Go/Java 的 Channel 机制实现 Producer-Consumer,对比与 Semaphore 方案的差异。 📌 **作业关联**: Assignment 2 可能涉及 Message Passing 编程。 ⚠️ **易错点**: Synchronous send 和 receive 必须同时就绪才能通信(容易死锁);忽略消息顺序保证导致逻辑错误;Channel buffer 满时的行为(阻塞 vs 丢弃)取决于实现。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
中期评估
💡 学习提示
• 总结 中期评估 的核心概念与适用场景
• 为第7周生成 5 道练习题并给出解题步骤
Week 8Concurrent Data Structures
### 📖 核心知识点:并发数据结构 学习线程安全的数据结构设计。掌握 Lock-based 和 Lock-free 两种并发数据结构的实现策略。学习 ConcurrentHashMap、ConcurrentLinkedQueue 等 Java 并发容器的设计原理。 - **核心概念/公式**: Coarse-grained vs Fine-grained Locking、Lock-free Queue (Michael-Scott Queue)、CAS-based 无锁算法、Linearizability 定义 ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h) 🎯 **考试关联**: 并发数据结构的正确性分析和 Linearizability 概念可能出现在考试中。 🧪 **Tutorial/Lab**: 实现一个 Lock-free Stack 或 Queue,验证其线程安全性。 📌 **作业关联**: 并发数据结构是高性能系统设计的核心技能。 ⚠️ **易错点**: Fine-grained Locking 的加锁顺序不一致导致死锁;Lock-free 算法中 CAS 的 ABA 问题;忽略 Memory Visibility(Java 需要 volatile 或 happens-before 关系)。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
专题实践I
💡 学习提示
• 总结 专题实践 I 的核心概念与适用场景
• 为第8周生成 5 道练习题并给出解题步骤
Week 9Formal Models: CSP & Process Algebra
### 📖 核心知识点:形式化模型 - CSP与进程代数 学习 Communicating Sequential Processes (CSP) 作为并发系统的形式化规约语言。掌握 CSP 的基本语法:Events, Processes, Sequential Composition (→), Choice (□, ⊓), Parallel Composition (∥), Hiding (\)。理解 Trace Semantics 和 Refinement 的概念。 - **核心概念/公式**: CSP Process: STOP, SKIP, a→P、External Choice □ vs Internal Choice ⊓、Alphabetised Parallel: P [A∥B] Q、Traces 和 Failures 语义 ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 10h(Lecture 2h + Applied Class 1h + 自学 7h)🔥 高压周 🎯 **考试关联**: CSP 表达式的阅读和编写是 Final Exam 的重要考点。 🧪 **Tutorial/Lab**: 用 CSP 规约经典并发问题(Dining Philosophers),分析可能的 Deadlock。 📌 **作业关联**: Assignment 2 可能要求用 CSP 建模并分析并发系统。 ⚠️ **易错点**: External Choice 和 Internal Choice 的语义差异(External 由环境决定,Internal 由系统非确定选择);Parallel Composition 的同步规则(共同事件必须同步)。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
专题实践II
💡 学习提示
• 总结 专题实践 II 的核心概念与适用场景
• 为第9周生成 5 道练习题并给出解题步骤
Week 10Distributed Systems & Distributed Algorithms
### 📖 核心知识点:分布式系统与分布式算法 从共享内存并发扩展到分布式系统。学习分布式系统的基本挑战:Network Partitions, Latency, Partial Failure。掌握 Logical Clocks (Lamport Timestamps, Vector Clocks) 和 Distributed Mutual Exclusion (Ricart-Agrawala Algorithm)。 - **核心概念/公式**: Lamport Clock: C(a) < C(b) 若 a→b (happens-before)、Vector Clock: 精确捕获因果关系、CAP Theorem (Consistency, Availability, Partition Tolerance) ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h) 🎯 **考试关联**: Logical Clock 的计算和分布式互斥算法是 Final Exam 的可能考点。 🧪 **Tutorial/Lab**: 手工计算 Lamport/Vector Timestamp,判断事件间的因果关系。 📌 **作业关联**: 分布式系统概念扩展了并发编程的视野。 ⚠️ **易错点**: Lamport Clock 只保证 a→b ⇒ C(a)<C(b),反过来不成立(可能是并发事件);Vector Clock 维度 = 进程数,消息传递时取 element-wise max。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
项目推进
💡 学习提示
• 总结 项目推进 的核心概念与适用场景
• 为第10周生成 5 道练习题并给出解题步骤
Week 11Parallel Programming Patterns
### 📖 核心知识点:并行编程模式 学习实用的并行编程模式。掌握 Fork-Join Parallelism、Map-Reduce 模式、Pipeline Parallelism。学习 Java 的 Fork/Join Framework 和 Stream Parallel API。了解 GPU 并行计算的基本概念。 - **核心概念/公式**: Fork-Join 的 Work-Stealing 调度、MapReduce: Map → Shuffle → Reduce、Amdahl's Law: Speedup ≤ 1/((1-p)+p/n) ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 8h(Lecture 2h + Applied Class 1h + 自学 5h) 🎯 **考试关联**: Amdahl's Law 的计算和并行模式的选择是可能的考题。 🧪 **Tutorial/Lab**: 用 Fork-Join 框架实现并行 Merge Sort,测量不同数据规模下的 Speedup。 📌 **作业关联**: Assignment 2 截止在即。 ⚠️ **易错点**: Amdahl's Law 的串行比例 (1-p) 估计不准确;Fork-Join 的任务粒度太细反而比串行慢(overhead);parallel stream 对共享状态有 side-effect 时行为不确定。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
成果整理
💡 学习提示
• 总结 成果整理 的核心概念与适用场景
• 为第11周生成 5 道练习题并给出解题步骤
Week 12Verification of Concurrent Programs & Review
### 📖 核心知识点:并发程序验证与课程总复习 学习并发程序的正确性验证方法。了解 Model Checking (如 SPIN/Promela) 的基本原理——通过穷举状态空间检测死锁和违反安全性的行为。课程总复习,重点串联同步机制→形式化模型→分布式算法的知识链。 - **核心概念/公式**: Safety Property (bad things never happen) vs Liveness Property (good things eventually happen)、Model Checking 的状态空间爆炸问题 ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 6h)📝 复习周 🎯 **考试关联**: Final Exam 覆盖全部 12 周内容。重点:同步问题求解 (30%)、CSP 形式化 (20%)、死锁分析 (20%)、分布式算法 (15%)、概念题 (15%)。 🧪 **Tutorial/Lab**: 做往年真题模拟,重点练习 Semaphore/Monitor 编程题和 CSP 分析题。 📌 **作业关联**: 所有作业已截止,专注备考。 ⚠️ **易错点**: 考试中 Semaphore 和 Monitor 的解题方法不要混用;CSP 的并行组合运算符语义需要记准;Banker's Algorithm 的手工计算步骤不要跳步。 (数据来源:2026 S2 UQ Handbook,CSSE3610)
期末复盘
💡 学习提示
• 总结 期末复盘 的核心概念与适用场景
• 为第12周生成 5 道练习题并给出解题步骤