曼彻斯特 COMP26120《算法与数据结构》:笔试 70%+实操 30%,全学年自学为主
曼彻斯特 COMP26120《算法与数据结构》是本科 Level 2 的全学年二十学分单元:书面考试 70%+实践技能评估 30%——重实践轻数学分析,练的是「算法素养」,内容以自学为主线。
课程官网(学校官网):https://www.manchester.ac.uk/study/undergraduate/courses/2027/12832/bsc-computer-science/course-details/COMP26120
COMP26120 是一门什么课?
一句话:CS 学位里最硬的骨架课之一——从伪代码到实现、从性能测量到正确性推理,把「会写代码」升级成「会选算法」。
这是曼彻斯特大学(The University of Manchester)的本科单元,模块代码 COMP26120,英文名 Algorithms and Data Structures,中文常译「算法与数据结构」,开课单位是 Department of Computer Science(计算机科学系)。
几条身份信息:
- 层级:Level 2(本科二年级)。
- 体量:20 学分,教学周期是 Full year(全学年)。
- 选课规则:学校官网明写不可作为自由选修单元——它是计算机科学的核心必修地基。
- 单元协调人:Francisco Lobo。
学校官网的定位很直接:覆盖算法及其正确性与性能的计算机科学基础材料;这是一门两学期实践课,核心内容经视频与阅读资源交付,辅以面对面同步课巩固,配大量形成性与总结性实操、tutorial 与 drop-in 实验支持;学生需自行检索资料支持课程工作,发展「算法素养」("algorithmic literacy")。
这段定位里有两个信号,比大纲本身更重要(分析):一是「内容经视频与阅读交付」——它是翻转式课程,讲授不是主渠道;二是「自行检索资料」是明写要求,不是加分项。
大纲五块,从表达走到推理:
- 算法是什么:如何用伪代码与选定编程语言表达。
- 基础数据结构:数组、链表、树(含有序平衡树与堆)、各类图,以及它们在编程语言里的表示。
- 基础算法:查找与排序、树遍历与操作、基础图算法。
- 算法性能导论:时间与空间需求、最坏/平均/最好估计、计数操作、增长率。
- 非形式推理:用它来确立算法的正确性。
另有一条实操主线,写在大纲最前面(分析):针对现实问题的大量算法求解练习、寻找与发明合适的算法与数据结构、算法素养(用文献、识别适用、评估效用)——这三条是「做」的部分,也是这门课真正的重心。
八条学习成果,构成一个完整闭环:
- ILO1:能用真实应用例子解释不同数据结构上的排序查找、图操作与数论标准算法问题。
- ILO2:能分析问题,识别并实现最合适的算法方案。
- ILO3:能解释分治、动态规划、贪心算法与线性规划等技术,讨论适用时机并应用。
- ILO4:能从一组已学算法中识别给定情境该用哪个、怎么用,并与备选方案比较。
- ILO5:能定义渐近复杂度的标准概念,并用它推理算法复杂度。
- ILO6:能用伪代码表示算法,并非形式地推理其正确性。
- ILO7:能复述基础数据结构的定义与表示及其操作复杂度。
- ILO8:能复述并解释可解性与 NP 完全性概念,并用它证明新问题的 NP 完全性。
八条串起来是一句话(分析):认问题→选技术→实现→评性能→证正确→识不可解——每一个环节都对应一种题型,缺一环就有一种题做不了。
教学形态是三类:异步材料(定向视频与阅读)为主线、同步 Q&A 课、实验室(Laboratories),另配 tutorial 与 drop-in 支持。
三类课的分工很清楚(分析):异步材料给你知识,同步课答疑,实验室动手——而实验室的即时反馈,是这门课最主要的答疑渠道。
推荐书目十本,纵深很大:Goodrich《Algorithm design and applications》(2015)、Cormen 等《Introduction to algorithms》第四版(2022)、Sipser《Introduction to the theory of computation》(2012)、Harel《Algorithmics》(2004)、Knuth《The art of computer programming》Vol.1–3(1997/1998)、Sedgewick《Algorithms in C》(1998)与《Algorithms in Java》(2003/2004)。
从入门到「圣经级」都在书单里(分析):Cormen 与 Knuth 不是让你一学期读完的,是让你知道职业前五年该往哪查。
就业技能栏另写了四项:分析技能、创新与创造、问题解决、书面沟通。
「书面沟通」出现在算法课里不是偶然(分析):实验报告要写清楚你做了什么、为什么这样选——只贴代码不算交付。
与国内同类课程的差异
第一个差异是教学形态:异步视频与阅读为主、同步课巩固、双实验动手;国内以课堂讲授为主(分析)。
第二个差异是定位口径:学校官网明写重实践关切而非数学分析("practical concerns, rather than mathematical analysis");国内同类课的证明与推导占比更高(分析)。
第三个差异是考核结构:笔试 70+实操 30,配每周 Blackboard 形成性测验;国内多为「平时+期末」两段(分析)。
第四个差异是自学要求:学生须自行检索资料支持课程工作(算法素养);国内教材配套讲义齐、检索要求低(分析)。
第五个差异是书单纵深:从 Goodrich 入门到 Knuth 与 Sedgewick 分语言版本;国内通常指定单一教材(分析)。
考核怎么算?
两类考核:书面考试 70%+实践技能评估 30%,合计 100%。
| 考核项 | 形式 | 占比 |
|---|---|---|
| Written exam | 书面考试 | 70% |
| Practical skills assessment | 实践技能评估(coursework) | 30% |
| Blackboard 周测 | 形成性测验,不计入总评 | 0% |
学校官网还写了两条关键说明:
- 可考内容在异步材料与实验练习中均有引入——考试不是另起炉灶。
- 每周 Blackboard 形成性测验对可考概念提供早期反馈。
四条结构性判断:
第一,七成笔试考的是纸面功。 选型、复杂度、正确性论证都是要在纸上写出来的(分析)——代码写得漂亮,笔试答不出来一样丢七成。
第二,三成实操考的是真写代码。 两条线共用同一套异步材料与实验(分析)——所以实验认真做,等于同时准备了两条线。
第三,每周 Blackboard 测验等于小模拟考。 它不计分,但它每周告诉你「这一块你到底懂没懂」(分析)——把它当模拟考做,笔试就不用等到期末才发现漏洞。
第四,反馈渠道有三条。 实验课即时反馈、全部材料配 Blackboard 测验、assessed coursework 的总结性反馈经 Blackboard 在个人脚本上提供(分析)——三条都用上,才不会到批改时才第一次知道自己错在哪。
一个常见误读:「笔试 70%」不等于「多刷题就行」(分析)——这门课要的是判断力:给你一个情境,选哪个结构、哪种技术、为什么——而判断力靠实验里真做过。
先修要求是什么?
先修两门,且都是必修(Pre-Requisite: Compulsory):
- COMP16321 Introduction to Programming 1
- COMP16412 Introduction to Programming 2
但学校官网给了替代条款:接受 C、Java 或 Python 的等效知识("Alternative equivalent knowledge of C, Java or Python accepted")。
这条替代条款要读准(分析):它说的是「等效知识」,不是「上过课」——转学分、跨专业或自学的学生,理论上可以凭能力满足,但要经协调人确认。
先修的实质只有一件事:会写程序(分析)——算法课的实验,要能随手把伪代码落成能跑的代码。
实际需要的底子三样(分析):
- 一门语言的熟练度:C、Java 或 Python 任一,能独立调试。
- 基本数据结构认知:数组、链表至少用过。
- 英文技术材料阅读:异步材料是视频与阅读,全英文。
对转学分与跨专业学生的建议:带成绩单或作品集向单元协调人确认等效性,再决定是否免修先修(分析)——不要自己判断「我大概算等效」,选课系统不认「大概」。
一个具体自评标准:能不能在一节课内把一个中等复杂度的伪代码落成可运行程序并调通(分析)。能,就先修无虞;不能,先补两周语言实操再开课。
学完能做什么?
学完你能为现实问题选型并实现算法方案、用渐近复杂度与实测评估性能、非形式论证正确性、识别并证明 NP 完全问题,并具备检索算法文献的自学习惯。
八条学习成果按能力归四类(分析):
- 问题分析与选型(ILO2/ILO4)——给情境能挑对方案,并说清为什么不用别的。
- 技术实现(ILO3/ILO6)——分治、动规、贪心、线性规划会用;伪代码写得规范。
- 性能评估(ILO5/ILO7)——复杂度会推,结构操作代价会说。
- 不可解性识别(ILO8)——知道哪些问题没有高效解,并能证明新问题的 NP 完全性。
去向层面:软件开发、算法工程师、数据工程直接对口(分析)——大厂与独角兽的笔试题库,基本就是 ILO1–8 的排列组合。
一条长期价值:「算法素养」是这门课的真交付物(分析)——离开课堂后遇到新问题,知道去文献里找什么、怎么评估,比背下任何具体算法都值钱。
一段现实的提醒(分析):后续的算法、AI、系统类课程都默认这套底座——这门课没打牢,后面每一门都会回来补同一块。
难点与常见挂因
这门课的难点不在「写不出来」,而在「选不对、说不清」:写出一个能跑的算法不算完,选对技术并说清为什么,才是考核点。
一、技术选型错界:贪心与动规分不清
机制:分治、动态规划、贪心、线性规划各有适用特征(分析),而 ILO3 明确要求「讨论适用时机」、ILO4 要求「与备选方案比较」。
为什么卡:四种技术在课堂里分章讲,很少并排对比(分析)——学生记住了模板,没建立判据。
卡了会怎样:选型题里贪心与动规划不清界限——这是最早的信号;一旦选错,整道题的复杂度与正确性都白搭。
怎么补:做一张「技术—适用特征—反例」三列对照表,每题先对特征再选技术(分析)。能说出「为什么这题不能用贪心」,才算真会选。
二、渐近复杂度推理:递归式化简推不动
机制:大 O 的定义要落到循环与递归结构上,递归式的化简与主定理是必备工具(分析)。
为什么卡:国内课程重计算、轻推导(分析)——学生会代公式,遇到递归式就跳步。
卡了会怎样:复杂度题只给答案、没有化简过程——而过程分往往就在这里。
怎么补:每种递归结构各推三例,写出完整化简链(分析)。能一步步写到结果、不跳步,才算过关。
三、正确性论证:只有测试,没有推理
机制:ILO6 要求用伪代码表示算法并非形式地推理正确性(分析)。
为什么卡:正确性证明的训练少(分析)——学生默认「跑通了就是对的」。
卡了会怎样:实验报告里没有推理段落——只有测试用例与截图。
怎么补:每个自写算法固定写三句:循环不变量、终止条件、正确性结论(分析)。三句成段,论证就有了骨架。
四、NP 完全性证明:归约方向画反
机制:ILO8 要求证明新问题的 NP 完全性,归约的方向与经典问题选择都有讲究(分析)。
为什么卡:归约的实操训练少(分析)——方向一反,整道证明全错。
卡了会怎样:NP 完全题写到一半写不下去——因为起点选错了问题。
怎么补:背熟三到五个经典 NP 完全问题做锚,每题先画归约方向再写证明(分析)。能先画出箭头方向,再动笔。
五、自学节奏:异步视频积压
机制:核心内容经视频与阅读交付,同步课与实验是巩固与动手(分析)。
为什么卡:翻转式课程没人盯,异步内容最容易被推到后面(分析)——而积压到一定程度,同步课就听不懂了。
卡了会怎样:同步课开始听不懂讲授——这个信号一旦出现,追赶成本陡增。
怎么补:把异步内容排在每周固定时段,看完当场做配套 Blackboard 测验(分析)。每周清零、当周闭环,节奏就稳了。
六、算法英语的术语场
机制:invariant、reduction、tractability、amortized 这套词与中文教材译名部分错位(分析)。
为什么卡:英文算法文献的训练少(分析)——读讲义与题干时概念配对慢。
卡了会怎样:术语反应慢,读题就慢——而笔试时间固定,读题慢直接吃掉答题时间。
怎么补:按「数据结构+算法技术+复杂度概念」三列做中英对照卡,每词配一行伪代码场景例句(分析)。测验前把当周卡片过一遍再上场。
七、实验课的求助窗口:独自硬耗
机制:实验室的即时反馈是主要答疑渠道,tutorial 与 drop-in 支持也在(分析)。
为什么卡:学生习惯自己 debug(分析)——而一个隐蔽的 bug 能耗掉一整晚。
卡了会怎样:问题积压,实验进度落后——而实操分占三成。
怎么补:卡壳超过一段合理时间,就带着最小复现例子去 lab 或 drop-in 求助(分析)。能在一节课内把卡点讲清楚,求助才有效率。
八、先修替代条款:资格误判
机制:先修两门必修,但学校官网明写接受 C、Java 或 Python 的等效知识(分析)。
为什么卡:等效知识替代制的经验少(分析)——转学分学生容易多修一遍,或者误判自己符合。
卡了会怎样:选课被系统拦下,或者重复修课——都会浪费一个学期。
怎么补:有编程基础者带成绩单或作品集,向单元协调人确认等效性,再决定是否免修(分析)。确认过了再选课,不要凭猜。
九、英文技术写作:报告只贴代码
机制:就业技能明列「书面沟通」,实验报告与论述要写成英文(分析)。
为什么卡:英文技术写作训练少(分析)——代码贴上去,解释一句不写。
卡了会怎样:实操分被压——因为评的是「你怎么想」,不是「你写了什么」。
怎么补:每份实验报告固定写四段:问题—方法—复杂度—验证(分析)。写完请同学互审一遍语言再定稿。
十、全学年的疲劳管理:第二学期劲头回落
机制:20 学分、两学期连续考核(分析)。
为什么卡:长周期课程的中段最容易松(分析)——第一学期靠新鲜感撑,第二学期靠习惯。
卡了会怎样:第二学期的实验质量明显下滑——而期末笔试覆盖全年内容。
怎么补:把两个学期当成两轮独立冲刺,寒假复盘第一学期错题并预修图算法章节(分析)。寒假动一次,第二学期就不断档。
十一、数据结构表示与操作复杂度:ILO7 最容易被跳过
机制:ILO7 要求复述基础数据结构的定义、表示及其操作复杂度(分析)。
为什么卡:学生偏爱算法题,觉得结构是「背」的(分析)——而结构选错的代价比算法写错更大。
卡了会怎样:说不出平衡树与堆在插入删除上的代价差异——选型题就没有依据。
怎么补:给每种结构做一行卡片:定义、表示、各操作复杂度、典型用途(分析)。能横向比三四种结构,才算掌握。
十二、笔试与实操两条线:准备方式不同
机制:笔试 70% 考纸面推导与选型判断,实操 30% 考真代码(分析)。
为什么卡:学生把两条线混着准备(分析)——刷题刷的是手感,笔试要的是书写;写代码写的是实现,笔试要的是论证。
卡了会怎样:代码写得快,笔试写不完——两边都受影响。
怎么补:分开练:笔试按题型练书写(选型、复杂度、正确性、归约),实操按实验课要求练实现与报告(分析)。两条线各有固定练习时段,才不互相拖累。
留学生特别提醒
中国学生最容易在六处吃亏:算法英语术语反应慢、自学节奏失控、实验卡壳硬耗、先修等效条款误判、英文技术报告写不清、全学年中段滑坡。
- 按「数据结构+算法技术+复杂度概念」三列做中英对照卡,每词配一行伪代码场景例句,测验前过一遍当周卡片。
- 开学第一周就把「异步—实验—同步」三类时段排进周历并设提醒,任何一周都不断档。
- 卡壳超过一段合理时间就带最小复现例子去 lab 或 drop-in 求助,别独自硬耗整晚。
- 有编程基础者带成绩单或作品集向协调人确认等效,确认后再决定是否免修先修课。
- 每份实验报告固定写「问题—方法—复杂度—验证」四段,写完请同学互审语言再定稿。
- 把两个学期当两轮独立冲刺:寒假复盘第一学期错题并预修图算法章节。
怎么准备?
准备的关键是三条:把编程熟练度亮出来、把自学节奏先建起来、把四条笔试题型分开练。
- 自评代码:一节课内把中等复杂度伪代码落成可运行程序并调通。
- 确认先修:带成绩单或作品集找协调人确认等效,再选课。
- 排周历:异步、实验、同步课三类时段固定进日历,设提前提醒。
- 建术语卡:数据结构、算法技术、复杂度概念三列中英对照。
- 练复杂度:每种递归结构各推三例,写出完整化简链。
- 练选型:分治、动规、贪心、线性规划各配两个问题,写明选与不选的理由。
- 练论证:每个自写算法补三句:不变量、终止条件、正确性结论。
- 练归约:背三到五个经典 NP 完全问题做锚,先画方向再写证明。
- 练报告:一份实验报告按四段写完整,请同学互审。
- 读书单:从 Goodrich 起步,Cormen 当手册查,Knuth 先不碰。
中英术语速查
- algorithm —— 算法。
- data structure —— 数据结构。
- pseudocode —— 伪代码。
- array —— 数组。
- linked list —— 链表。
- stack / queue —— 栈/队列。
- tree —— 树。
- balanced tree —— 平衡树。
- heap —— 堆。
- graph —— 图。
- traversal —— 遍历。
- searching —— 查找。
- sorting —— 排序。
- divide-and-conquer —— 分治。
- dynamic programming —— 动态规划。
- greedy algorithm —— 贪心算法。
- linear programming —— 线性规划。
- asymptotic complexity —— 渐近复杂度。
- big O notation —— 大 O 记号。
- worst / average / best case —— 最坏/平均/最好情况。
- growth rate —— 增长率。
- recurrence relation —— 递归式。
- loop invariant —— 循环不变量。
- correctness —— 正确性。
- termination —— 终止性。
- reduction —— 归约。
- tractability —— 可解性。
- NP-completeness —— NP 完全性。
- amortized analysis —— 摊还分析。
- algorithmic literacy —— 算法素养:用文献、识别适用、评估效用。
- formative assessment —— 形成性评估。
- summative assessment —— 总结性考核。
- drop-in —— 随时可去的答疑时段。
- unit coordinator —— 单元协调人。
- Level 2 —— 本科二年级层级。
关于我们
鱼之跃做在读留学生的学业支持,服务分两块,界限很清楚:
辅导=老师授课:由 QS 前 200 院校的硕博老师把课程的知识点、推导链、作业要求讲透,按对口专业配课;覆盖同步辅导、论文辅导、考前辅导、预习。
护航=你的学业管家:排计划、理材料、理流程这些杂事都替你打点好,该提前准备的他先想到;你只管学,有事随时找,需要时都在。同地区的留学学姐,熟悉你所在学校的节奏。
学术问题上的申诉,我们做材料梳理与流程陪跑,不代写、不代考、不碰学术诚信边界,也不承诺任何成绩。
课程官网与核对说明
课程官网(学校官网):https://www.manchester.ac.uk/study/undergraduate/courses/2027/12832/bsc-computer-science/course-details/COMP26120
本文涉及学校、开课单位(Department of Computer Science)、模块代码、层级(Level 2)、教学周期(Full year)、学分(20)、单元协调人、选课规则(不可作为自由选修单元)、模块定位原文(覆盖算法及其正确性与性能;两学期实践课;核心内容经视频与阅读交付;同步课巩固;大量形成性与总结性实操;tutorial 与 drop-in 实验支持;自行检索资料;算法素养)、五块大纲、八条学习成果、教学形态(异步材料、同步 Q&A、实验室)、就业技能四项、十本推荐书目、考核(书面考试 70%+实践技能评估 30%;每周 Blackboard 形成性测验;三条反馈渠道)、先修两门与 C/Java/Python 等效知识替代条款等事实,均来自上述学校官网单元详情页;核对时间为 2026-10-30。文中标「(分析)」的句子为基于学校官网事实的推导或判断,不代表学校官方表述。