logo
COMP35062 学分

算法与数据结构

昆士兰大学·University of Queensland·布里斯班
💪 压力
4 / 5
⭐ 含金量
5 / 5
✅ 通过率
0%

📖 课程概览

### 课程定位 COMP3506(Algorithms and Data Structures)是 UQ 课程体系中兼顾理论与实践的一门难课程,核心目标是把“会看懂”升级为“会分析、会实现、会解释”。课程通常承担承上启下作用:前接基础概念,后接更高阶专题或项目。对准备走软件、数据、工程或研究路径的同学来说,这类课程的价值不只在分数,更在于建立可迁移的方法框架和稳定交付能力。 ### 技术栈与学习内容 学习内容通常覆盖该方向的关键概念、方法与工具链,并通过练习或作业落实到具体场景。常见会使用 Python、R、MATLAB、C/C++ 或课程指定软件(以官方课纲为准)。课程强调的不只是“得到答案”,还包括假设条件、步骤完整性、结果解释与复现性。也就是说,你需要同时训练知识准确度、实现质量和表达清晰度。 ### 课程结构 课程一般按周推进,前段搭建概念框架,中段进入题型训练与案例应用,后段做综合整合与评估冲刺。考核常见组合为 Quiz/Lab、作业、报告和期末评估。评分不仅看正确率,也看分析逻辑、书写/代码规范与结论表达。多数同学真正拉开差距的阶段在中后期:是否能持续输出,而不是临近截止日突击。 ### 适合人群 适合希望夯实底层能力、提升问题拆解与建模能力、并改善学术或工程表达的同学。若你计划继续修读高阶课程,或希望在实习与求职中提升“把事情做对并讲清楚”的竞争力,这门课很值

🧠 大神解析

### 📊 课程难度与压力分析 COMP3506(Algorithms and Data Structures)整体难度可归为难,压力通常在 Week 4-6 开始明显上升。前几周常给人“内容可控”的错觉,但中期后任务会从单点知识转向综合应用,作业、实验和复习节奏容易叠加。与同级课程相比,这门课更强调持续输出和过程质量,而不是只靠一次考试逆转。所谓 Quit Week 往往发生在第一次高权重作业返分后,如果没有及时复盘,后续会持续被动。期末季最痛苦的不是题量本身,而是前期积压导致可用时间被压缩。 ### 🎯 备考重点与高分策略 建议优先掌握 7 个高频点:1)核心定义与适用边界;2)标准题型步骤;3)复杂度或方法选择依据;4)边界条件与异常场景处理;5)结果解释与误差来源;6)跨章节综合题;7)时间分配与答题顺序。HD 与 Pass 的差距常在“解释能力”:高分答案不仅写对,还能说明为什么这样做。备考可采用三段法:先补概念漏洞,再集中刷高错率题型,最后做限时模拟并专门检查表达完整性。每次复习都要保留“错因记录”,避免重复犯错。 ### 📚 学习建议与资源推荐 学习顺序建议是:先看课程目标与评分标准,再看 lecture,再做 tutorial/lab,最后写周复盘。资源方面优先使用官方课件、Course Profile、Ed/讨论区答疑;外部可补充 YouTube 对应专题、MIT OCW/Khan Academy、可视化工具与开源示例。实操上,建议每周至少做一次“旧题重做 + 解法重构”,把能做出来升级成可复现、可讲解、可迁移。不要只收藏资料不落地,关键在固定节奏输出。 ### ⚠️ 作业与 Lab 避坑指南 常见扣分点包括:步骤不完整、边界用例遗漏、复杂度分析没写、格式规范不达标、提交前未做自测。建议采用截止日三段节奏:D-7 完成主体,D-3 完成全量测试与互查,D-1 只做格式与表达校对。若课程使用自动评分系统,必须先本地构建最小回归测试,避免“样例通过但隐藏用例失败”。合作讨论要守住学术诚信边界:可讨论思路,不可共享可提交成品。 ### 💬 过来人经验分享 我最开始把这类课当成“考前冲刺型”,结果一到中后期连续 deadline,整个人被动得很。后来改成固定节奏后明显稳了:周初梳理概念,周中完成第一版,周末只做错题复盘和重构。最有用的习惯是每次作业后写一张“失分清单”,下次开工前先看,能减少很多重复错误。给新同学一句实话:别等完全准备好再开始,先交付可运行第一版,再迭代到高质量,你会轻松很多。

📅 每周课程大纲

Week 1Introduction & Algorithm Analysis
### 📖 核心知识点:算法分析基础 本周是课程入门,建立对算法效率分析的基本框架。Joel Mackenzie 会介绍课程结构、编程语言要求(Java),以及 Big-O / Big-Ω / Big-Θ 渐进分析的数学基础。 - **核心概念**: Big-O notation, Big-Omega, Big-Theta, worst-case / average-case analysis, growth rates (O(1), O(log n), O(n), O(n log n), O(n²)) ⏰ **本周节奏**: 难度 ⭐⭐ | 预计投入 8h(Lecture 2h + Applied Class 1h + 自学 3h + Problem Set 准备 2h) 🎯 **考试关联**: Final Exam 50%(hurdle)必考渐进分析,常见题型:给定代码片段判断时间复杂度、证明 Big-O bound 🧪 **Applied Class**: 练习分析简单循环和递归函数的时间复杂度,使用 Master Theorem 📌 **作业关联**: Problem Set 1(Week 3 due)会涉及复杂度分析题 ⚠️ **易错点**: 混淆 Big-O 和 Big-Θ(Big-O 是上界,Big-Θ 是紧界);忽略常数因子在实际性能中的影响 (数据来源:2025 S2 Course Profile)
Big-O
💡 学习提示
请详细解释 COMP3506 中 "Introduction & Algorithm Analysis" 的核心概念
Introduction & Algorithm Analysis 的常见考题有哪些?如何准备?
Introduction & Algorithm Analysis 在实际工作中有哪些应用场景?
Week 2Abstract Data Types, Arrays & Linked Lists
### 📖 核心知识点:ADT 与线性数据结构 本周介绍抽象数据类型(ADT)的概念,以及最基础的两种实现方式:数组(Array)和链表(Linked List)。理解 ADT 接口与具体实现的分离是后续所有数据结构学习的基础。 - **核心概念**: ADT (Abstract Data Type) 定义, Array vs Linked List 的时间复杂度对比, Singly/Doubly Linked List, sentinel nodes, iterator pattern ⏰ **本周节奏**: 难度 ⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 3h + 编程练习 3h) 🎯 **考试关联**: 数组 vs 链表的操作复杂度对比是常考选择题;链表的指针操作是编程题基础 🧪 **Applied Class**: 实现 Singly Linked List 的 insert/delete/search,分析各操作时间复杂度 📌 **作业关联**: Assignment 1(due Week 6)需要实现自定义 ADT,本周是基础 ⚠️ **易错点**: 链表删除节点时忘记处理 head/tail 边界情况;数组动态扩容的 amortized analysis 容易算错 (数据来源:2025 S2 Course Profile)
ADT (Abstract Data Type) 定义Array vs Li
💡 学习提示
请详细解释 COMP3506 中 "Abstract Data Types, Arrays & Linked Lists" 的核心概念
Abstract Data Types, Arrays & Linked Lists 的常见考题有哪些?如何准备?
Abstract Data Types, Arrays & Linked Lists 在实际工作中有哪些应用场景?
Week 3Stacks, Queues & Deques
### 📖 核心知识点:栈、队列与双端队列 本周学习三种受限线性 ADT:Stack(LIFO)、Queue(FIFO)、Deque(双端操作)。重点在于理解它们的接口约束以及不同底层实现(Array-based vs Linked List-based)的权衡。 - **核心概念**: Stack (push/pop/peek), Queue (enqueue/dequeue), Deque, circular array implementation, java.util.ArrayDeque, amortized O(1) operations ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 10h(Lecture 2h + Applied Class 1h + 自学 3h + Problem Set 1 完成 4h)🔥 Problem Set 1 Due 🎯 **考试关联**: Stack/Queue 的应用场景题(如括号匹配、BFS/DFS 选择)占 Final 约 8-10 分 🧪 **Applied Class**: 用 Stack 实现表达式求值(postfix evaluation);用 Queue 实现 BFS 模拟 📌 **作业关联**: Problem Set 1 截止(15/08),包含 Stack/Queue 应用题 ⚠️ **易错点**: Circular Array 实现 Queue 时 index 计算 `(front + size) % capacity` 容易出错;Stack overflow 未处理 (数据来源:2025 S2 Course Profile)
Stack (push/pop/peek)Queue (e
💡 学习提示
请详细解释 COMP3506 中 "Stacks, Queues & Deques" 的核心概念
Stacks, Queues & Deques 的常见考题有哪些?如何准备?
Stacks, Queues & Deques 在实际工作中有哪些应用场景?
Week 4Sorting Algorithms (Part I)
### 📖 核心知识点:基础排序算法 本周开始排序专题,覆盖 O(n²) 级别的简单排序和 O(n log n) 的 Merge Sort。排序是算法课的核心模块,也是 Final Exam 的高频考点。 - **核心概念**: Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, divide-and-conquer paradigm, stability (稳定性), in-place vs out-of-place ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 10h(Lecture 2h + Applied Class 1h + 自学 4h + 编程练习 3h) 🎯 **考试关联**: 排序算法的比较(时间/空间/稳定性)几乎必考;手动模拟排序过程是常见题型 🧪 **Applied Class**: 手动 trace Merge Sort 的 divide/merge 过程;比较 Insertion Sort 在近乎有序数据上的优势 📌 **作业关联**: Assignment 1 可能要求实现高效排序,本周打好基础 ⚠️ **易错点**: Merge Sort 的 merge 步骤中剩余元素处理容易遗漏;混淆 stable 和 in-place 的概念 (数据来源:2025 S2 Course Profile)
Bubble SortSelectio
💡 学习提示
请详细解释 COMP3506 中 "Sorting Algorithms (Part I)" 的核心概念
Sorting Algorithms (Part I) 的常见考题有哪些?如何准备?
Sorting Algorithms (Part I) 在实际工作中有哪些应用场景?
Week 5Sorting Algorithms (Part II) & Selection
### 📖 核心知识点:高级排序与选择算法 本周继续排序专题,介绍 Quick Sort(最常用的实际排序算法)和 Heap Sort,以及基于排序的 Selection 问题(找第 k 小元素)。 - **核心概念**: Quick Sort (Lomuto/Hoare partition), pivot selection strategies, Heap Sort, Quick Select, lower bound Ω(n log n) for comparison-based sorting, Counting Sort / Radix Sort (non-comparison) ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 11h(Lecture 2h + Applied Class 1h + 自学 4h + Problem Set 2 4h)🔥 Problem Set 2 Due 🎯 **考试关联**: Quick Sort 的 worst-case 分析和 pivot 选择策略是 Final 高频考点;比较排序下界证明可能出证明题 🧪 **Applied Class**: 手动 trace Quick Sort partition 过程;分析不同 pivot 策略对性能的影响 📌 **作业关联**: Problem Set 2 截止(29/08),涉及排序算法分析 ⚠️ **易错点**: Quick Sort worst-case O(n²) 出现在已排序输入 + 选取首/尾元素为 pivot 时;Quick Select 的期望 O(n) 与 worst-case O(n²) 混淆 (数据来源:2025 S2 Course Profile)
Quick Sort (Lomuto/Hoare partitio
💡 学习提示
请详细解释 COMP3506 中 "Sorting Algorithms (Part II) & Selection" 的核心概念
Sorting Algorithms (Part II) & Selection 的常见考题有哪些?如何准备?
Sorting Algorithms (Part II) & Selection 在实际工作中有哪些应用场景?
Week 6Trees & Binary Search Trees
### 📖 核心知识点:树与二叉搜索树 本周进入非线性数据结构。Tree 和 BST 是后续 AVL/B-Tree/Heap 的基础。掌握递归遍历和 BST 的性质至关重要。 - **核心概念**: Tree terminology (root, leaf, depth, height), Binary Tree, BST property, BST search/insert/delete, tree traversals (inorder, preorder, postorder, level-order) ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 12h(Lecture 2h + Applied Class 1h + 自学 4h + Assignment 1 冲刺 5h)🔥 Assignment 1 Due (5 Sep) 🎯 **考试关联**: BST 操作和遍历是 Final 必考,常见题型:给定插入序列画出 BST、手动执行删除操作 🧪 **Applied Class**: 实现 BST 的 insert/search/delete;练习四种遍历方式 📌 **作业关联**: Assignment 1(20%)截止 5 Sep — 本周必须完成最终调试和提交 ⚠️ **易错点**: BST 删除有两个子节点的节点时,找 inorder successor/predecessor 的实现容易出错;递归遍历的 base case 遗漏 (数据来源:2025 S2 Course Profile)
Tree termi
💡 学习提示
请详细解释 COMP3506 中 "Trees & Binary Search Trees" 的核心概念
Trees & Binary Search Trees 的常见考题有哪些?如何准备?
Trees & Binary Search Trees 在实际工作中有哪些应用场景?
Week 7Balanced BSTs: AVL Trees & B-Trees
### 📖 核心知识点:平衡二叉搜索树 本周学习如何保持 BST 的平衡性以保证 O(log n) 操作。AVL Tree 通过旋转维持平衡,B-Tree 用于磁盘存储优化。这是数据结构课的核心难点之一。 - **核心概念**: AVL Tree (balance factor, single/double rotations: LL, RR, LR, RL), B-Tree (order, splitting, merging), 2-3 Tree, Red-Black Tree (概念), self-balancing guarantees ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 12h(Lecture 2h + Applied Class 1h + 自学 5h + 复习 4h)🔥 高压周 🎯 **考试关联**: AVL 旋转是 Final 必考大题(通常 10-15 分),要求手动画出旋转过程;B-Tree 插入/删除也常考 🧪 **Applied Class**: 手动执行 AVL 插入序列并画出每次旋转后的树;B-Tree 插入/分裂练习 📌 **作业关联**: Assignment 2 可能涉及 balanced tree 实现,从本周开始准备 ⚠️ **易错点**: LR 和 RL 双旋转的方向容易混淆;B-Tree 节点分裂后 parent 的 key 提升规则;AVL 删除后可能需要多次旋转(不同于插入只需一次) (数据来源:2025 S2 Course Profile)
AVL Tree (bala
💡 学习提示
请详细解释 COMP3506 中 "Balanced BSTs: AVL Trees & B-Trees" 的核心概念
Balanced BSTs: AVL Trees & B-Trees 的常见考题有哪些?如何准备?
Balanced BSTs: AVL Trees & B-Trees 在实际工作中有哪些应用场景?
Week 8Hash Tables & Hashing
### 📖 核心知识点:哈希表与哈希函数 本周学习实现 O(1) 平均时间的查找、插入和删除。Hash Table 是最实用的数据结构之一,也是工业界使用最广泛的。 - **核心概念**: Hash function design, collision resolution (separate chaining, open addressing: linear probing, quadratic probing, double hashing), load factor α, rehashing, universal hashing, Java HashMap ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 11h(Lecture 2h + Applied Class 1h + 自学 4h + Problem Set 3 4h)🔥 Problem Set 3 Due 🎯 **考试关联**: Hash Table 的冲突处理策略对比是高频考点;给定 hash function 和数据序列,手动填表 🧪 **Applied Class**: 实现 separate chaining 和 linear probing 两种策略;分析不同 load factor 下的性能 📌 **作业关联**: Problem Set 3 截止(19/09),包含 hashing 分析题 ⚠️ **易错点**: Open addressing 删除时不能直接置空(需要 DELETED marker);load factor 超过阈值不 rehash 导致性能退化;hash function 对负数取模的处理 (数据来源:2025 S2 Course Profile)
Hash fu
💡 学习提示
请详细解释 COMP3506 中 "Hash Tables & Hashing" 的核心概念
Hash Tables & Hashing 的常见考题有哪些?如何准备?
Hash Tables & Hashing 在实际工作中有哪些应用场景?
Week 9Priority Queues & Heaps
### 📖 核心知识点:优先队列与堆 本周学习 Priority Queue ADT 及其最高效实现 — Binary Heap。Heap 是 Heap Sort 和图算法(Dijkstra, Prim)的关键组件。 - **核心概念**: Priority Queue ADT (insert, extractMin/Max), Binary Heap (min-heap, max-heap), heap property, array representation, sift-up / sift-down, heapify (bottom-up O(n) construction), java.util.PriorityQueue ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 9h(Lecture 2h + Applied Class 1h + 自学 3h + Assignment 2 启动 3h) 🎯 **考试关联**: Heap 的 array 表示和 sift 操作是必考内容;heapify 的 O(n) 时间证明可能出分析题 🧪 **Applied Class**: 手动构建 min-heap 并执行 extractMin;用 bottom-up heapify 从无序数组构建 heap 📌 **作业关联**: Assignment 2(due Week 12)开始,可能需要实现 Priority Queue ⚠️ **易错点**: 数组下标从 0 还是 1 开始会影响 parent/child 计算公式;max-heap 和 min-heap 的 sift 方向容易混淆 (数据来源:2025 S2 Course Profile)
Priority Queue ADT (i
💡 学习提示
请详细解释 COMP3506 中 "Priority Queues & Heaps" 的核心概念
Priority Queues & Heaps 的常见考题有哪些?如何准备?
Priority Queues & Heaps 在实际工作中有哪些应用场景?
Week 10Graphs: Representations, BFS & DFS
### 📖 核心知识点:图的基础与遍历 本周进入图论专题。图是建模现实世界关系的最强大工具,BFS 和 DFS 是所有图算法的基础。 - **核心概念**: Graph terminology (vertex, edge, directed/undirected, weighted), adjacency matrix vs adjacency list, BFS (Breadth-First Search), DFS (Depth-First Search), connected components, topological sort ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 11h(Lecture 2h + Applied Class 1h + 自学 4h + Problem Set 4 + A2 4h)🔥 Problem Set 4 Due 🎯 **考试关联**: BFS/DFS 手动 trace 是 Final 必考大题(10-15 分),要求写出访问顺序和 discovery/finish time 🧪 **Applied Class**: 在给定图上手动执行 BFS 和 DFS,记录每个节点的距离/时间戳;实现 topological sort 📌 **作业关联**: Problem Set 4 截止(10/10);Assignment 2 可能涉及图算法 ⚠️ **易错点**: BFS 用 Queue、DFS 用 Stack(或递归)不要混淆;有向图的 topological sort 只对 DAG 有效;adjacency matrix 空间 O(V²) 对稀疏图浪费 (数据来源:2025 S2 Course Profile)
Graph termi
💡 学习提示
请详细解释 COMP3506 中 "Graphs: Representations, BFS & DFS" 的核心概念
Graphs: Representations, BFS & DFS 的常见考题有哪些?如何准备?
Graphs: Representations, BFS & DFS 在实际工作中有哪些应用场景?
Week 11Graph Algorithms: Shortest Paths & MST
### 📖 核心知识点:最短路径与最小生成树 本周学习图论中最重要的两类问题:最短路径(Dijkstra, Bellman-Ford)和最小生成树(Prim, Kruskal)。这些算法在网络路由、地图导航等领域广泛应用。 - **核心概念**: Dijkstra's algorithm (non-negative weights, with PQ), Bellman-Ford (negative edges), Prim's MST (greedy, PQ-based), Kruskal's MST (Union-Find), relaxation technique, greedy correctness proofs ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 13h(Lecture 2h + Applied Class 1h + 自学 5h + Assignment 2 冲刺 5h)🔥 高压周 🎯 **考试关联**: Dijkstra 手动 trace 几乎每年必考;Prim vs Kruskal 的比较是常见简答题 🧪 **Applied Class**: 在加权图上手动执行 Dijkstra(记录每步的 distance table)和 Prim/Kruskal 📌 **作业关联**: Assignment 2(due Week 12)涉及图算法实现 ⚠️ **易错点**: Dijkstra 不能处理负权边(常考陷阱);Kruskal 需要 Union-Find 检测环;Prim 从不同起点结果可能不同但总权重相同 (数据来源:2025 S2 Course Profile)
Dijkstra's algorithm (
💡 学习提示
请详细解释 COMP3506 中 "Graph Algorithms: Shortest Paths & MST" 的核心概念
Graph Algorithms: Shortest Paths & MST 的常见考题有哪些?如何准备?
Graph Algorithms: Shortest Paths & MST 在实际工作中有哪些应用场景?
Week 12String Algorithms & Sets
### 📖 核心知识点:字符串算法与集合 本周覆盖字符串模式匹配算法和集合/多集合 ADT。字符串算法在文本搜索、生物信息学中至关重要。 - **核心概念**: Naive string matching O(mn), KMP algorithm (failure function), Boyer-Moore (概念), Trie data structure, Set ADT, Multiset, ordered vs unordered sets ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 12h(Lecture 2h + Applied Class 1h + 自学 4h + Assignment 2 最终提交 5h)🔥 Assignment 2 Due (29 Oct) 🎯 **考试关联**: KMP 的 failure function 构建和匹配过程是常考题;Trie 的应用场景题 🧪 **Applied Class**: 手动构建 KMP failure function 并执行模式匹配;Trie 的插入和前缀搜索 📌 **作业关联**: Assignment 2(20%)截止 29 Oct — 最后提交机会 ⚠️ **易错点**: KMP failure function 的递推公式容易写错;Trie 中标记单词结束节点的 flag 遗漏导致前缀误判为完整单词 (数据来源:2025 S2 Course Profile)
Naive stri
💡 学习提示
请详细解释 COMP3506 中 "String Algorithms & Sets" 的核心概念
String Algorithms & Sets 的常见考题有哪些?如何准备?
String Algorithms & Sets 在实际工作中有哪些应用场景?
Week 13Review & Exam Preparation
### 📝 复习周:全课程回顾与考试准备 本周是考前复习周,系统回顾 12 周内容。Final Exam 占 50% 且是 hurdle(必须 ≥50% 才能通过课程),需要严肃对待。 - **核心概念**: 全课程 ADT 总结(Array, LinkedList, Stack, Queue, BST, AVL, Heap, HashTable, Graph, Trie),各数据结构操作复杂度对比表,排序算法对比表 ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 15h+(全力复习)🔥 Problem Set 5 Due + 备考 🎯 **考试关联**: Final Exam 180 分钟,closed book,涵盖全部 12 周内容。题型包括:复杂度分析、手动 trace 算法执行过程、伪代码编写、证明/分析题。Hurdle: 必须 ≥50% 🧪 **Applied Class**: 模拟考题练习,重点练习 AVL 旋转、Dijkstra trace、排序算法 trace 📌 **作业关联**: Problem Set 5 截止(31/10),这是最后一次 Problem Set ⚠️ **易错点**: 时间管理 — 180 分钟内需要完成大量手动 trace 题,建议每题分配好时间;AVL 旋转和 Dijkstra trace 是最耗时的题型,优先练习 (数据来源:2025 S2 Course Profile)
全课程 ADT 总结(ArrayLi
💡 学习提示
请详细解释 COMP3506 中 "Review & Exam Preparation" 的核心概念
Review & Exam Preparation 的常见考题有哪些?如何准备?
Review & Exam Preparation 在实际工作中有哪些应用场景?

📋 作业拆解

Assignment 1: Core Implementation

30h
核心考察
从需求拆解到可运行原型,重视代码风格和边界处理。
COMP3506 Algorithms and Data Structures 的核心模块实现与单元测试。
要求
提交可运行代码、README、关键设计说明。

Assignment 2: Integrated Project

40h
核心考察
模块协作、性能/安全/可维护性权衡、测试覆盖。
完成一个综合项目或系统扩展,并进行结果验证。
要求
包含测试证据、架构说明、复盘文档。

📋 课程信息

学分
2 Credit Points
含金量
5 / 5
压力指数
4 / 5
课程类型
elective
期中考试
2001年7月1日

💬 学生评价

💭

还没有同学评价这门课,成为第一个分享体验的人吧

写点评