从2024年9月开始,魁北克的 CEGEP 正式将计算机编程课加入了理科专业(science / pure science / health science)的必修课程。经过几年的沉淀,已经有很多同学体验过这门课了。那么,这门编程课到底如何?这篇文章我将结合身边同学的反馈,以及我多年的编程教学经验,聊聊对这门课程的看法,顺便给未来的同学们提些小建议。特别是本文以 Marianopolis College 为例,如果其他学校的同学也有类似的经验,欢迎一起讨论!
编程课:不是新鲜事,但必修了
其实,CEGEP 里的编程课并不是新玩意儿,早些年就已经有了,只不过一直是选修的。不过2024年突然成了必修课,所以对很多同学来说,心情真是复杂。一些中学时期就接触过编程的同学,觉得这门课轻松得像“送分题”;但是对于那些从来没接触过编程的同学,情况就不一样了。课程又多,任务又重,突然来一门全新的学科,压力山大。
这也让人不禁好奇,魁省为什么要把编程加到必修课呢?从大方向看,计算机编程已经是当今社会的基础技能,特别是在人工智能、大数据这些领域的快速发展下,编程的作用越来越大。把编程课纳入必修课程的初衷,是想让同学们在大学前打好基础,适应未来社会的需求。理论上,这个想法没问题——毕竟,计算机技术无处不在,掌握编程将对未来的工作和学习大有裨益。但是,现实有点复杂。编程这东西,从零基础学起,光靠一个学期的时间,很多同学可能根本没能掌握基本的编程思维。
一般来说,从零开始学编程,最少需要 6 到 8 个月才能打下比较扎实的基础,但 CEGEP 的课程设置最多也就一个学期。这样一来,大家可能连最基本的概念都没掌握,课程就结束了。如果后续没有继续学习或实践,这一学期的努力就像是白费了。
CEGEP 这个时机合适吗?
我个人觉得,CEGEP 这个阶段其实有点“晚了”。我一直认为学编程要么尽早开始,要么稍微晚一点。
如果在中学阶段就接触编程,那时候课业压力相对较小,有时间慢慢打基础;而大学阶段则更适合深入学习,毕竟大学课程会更加集中于专业内容,学生也能有更多时间深耕。而 CEGEP,它又不算是“早”,也不算是“晚”,反而可能让很多同学感到压力山大,尤其是对于那些完全没有编程经验的人。CEGEP 的学习特点是时间短、刷高分,每一门课程都关系到大学申请,同学们主要任务是拿到理想的 R-Score,去心仪的大学。理科同学已经要学习微积分、统计概率、线性代数、物理、化学等科目,这时候再来一门计算机编程,对于毫无准备的同学学习难度又增加了。虽然这门课很重要,但把它安排在 CEGEP 这段时间,恐怕不一定能达到理想的效果。
如果你是 CEGEP 的同学,特别是理科专业的学生,可能会觉得这门编程课的压力有点大。不过,如果你对编程有兴趣,也不妨当作一个新的挑战,尽量抓住这门课的机会。如果你之前完全没有接触过编程,不妨把这门课当作“入门级”的体验,尽量理解编程的基本思想,后续如果有兴趣,可以继续深造。不过,从长远来看,编程这门课最好还是能从中学阶段就开始普及,让学生们有更多的时间去积累。而 CEGEP 不妨把编程课程做得更有针对性,让那些已经有基础的同学能学得更深入,同时也给新手们更多的时间和资源去学习。
计算机老师缺失的问题
从2024年 Marianopolis College 的计算机编程课程教师名单中,我们可以发现一个有趣的现象:其中有好几位并非专职计算机老师,而是数学或科学教师兼职。
这一现象反映出魁省普遍存在的“计算机老师缺失”问题。尽管几年前魁省就已发布了课程改革通知,但许多 Cegep 院校仍然没有足够的专职计算机教师,只能临时安排其他学科的教师兼职教授计算机课程。
计算机教学需要扎实的专业背景,非计算机专业出身的教师往往难以保证教学质量。因此,这也解释了为什么魁省的中学计算机编程普及率较低:一方面是缺乏足够的专职教师,另一方面是课程内容本身具有一定的挑战性,难以适应所有学生的水平。这些因素共同作用,导致许多中学无法开设计算机编程课程,或者仅将其作为拓展课程简单涉及。结果,许多学生在进入 Cegep 时,缺乏扎实的计算机编程基础。
Cegep 编程课程内容
接下来,我们来看看 Cegep 的计算机编程课程内容。
以 MP 为例,该校的必修课程 420-SN1-RE Programming in Science 内容上是基于之前的选修课程 420-LCU-05 Computer Programming,但从课程内容来看,更接近 McGill 的 COMP 204 Computer Programming for Life Sciences。内容如下:
- Topic 1–3:计算机理论基础
- Topic 4–15:Python、expression and types、statements、collections、conditional、looping、function、file I/O 等
- Topic 16–18:拓展内容,主要讲解常用的数据处理模块,如 matplotlib、pandas、numpy 等

这些内容与 McGill 大学 COMP 204 的教学大纲非常相似。学习的重点应放在 Topic 4–15 部分,因为这部分内容涵盖了基础编程的核心概念,也是期末考试的主要考察范围。此外值得一提的是,MP 提供 Enrichment Component,可以理解为高阶班。这部分除了包括刚才提到的内容以外,还包括 recursion、OOP、graphical 等内容。当然,选择 Enrichment Component 的同学需要通过相应考试才能取得学习资格。
期末考试与给分标准
我们可以看看2024年的给分标准。期末考试占比最大,覆盖 Topic 4–15。Topic 16–18 主要出现在 Lab test 中,Topic 1–3 则在 quizzes 和 midterm 中考察。期末考试的题目类型包括 multiple choice、short answer(要求学生读懂程序并写出执行后的输出),以及 coding on paper。其中,coding on paper 占比最大,要求学生在没有电脑或 AI 辅助工具的情况下手写代码。这意味着,学生在平时学习过程中必须注重代码细节,避免过度依赖 Google 或 GPT 等工具生成代码,因为一旦进入考场,脱离计算机和 AI 辅助工具的环境,手写代码可能会带来一定困难。
