Skip to content

三. 准入课的介绍 && 评价

下图是cs本科阶段的课程结构图,对于转专业的你可以看一看做个了解

了解完整的课程结构对你的转专业之旅和转专业之后的规划都具有帮助

Soaked 学长总结的《南京大学计算机科学与技术专业学科专业课程汇总》可以让你对计算机专业需要修读的课程有更加全面的了解

你可以在转 cs 交流群里获取这份文件:1055656826 (这是广告吗)

https://pic1.imgdb.cn/item/68d89be6c5157e1a883e2aca.png

准入课程主要分为 “数学课” 与 “专业课”:

· 数学课

此处只考虑一层次微积分+线性代数

考虑到使用数学系的数学课/匡院数学课等进行转专业的情况比较少见,故此处不讨论

(《大学通修数学替代关系表》的内容也适用于转专业,仅供可行性参考

一层次数学包括微积分ⅠⅡ与线性代数。主观学习难度 线性代数 ≈ 微积分Ⅰ<微积分Ⅱ

微积分ⅠⅡ分别在大一秋季学期与次年春季学期学习,而线性代数从大一上学期到大二上学期都有课程开设

课程号为 1 开头的数学课(匡亚明学院开设的)不能用于转专业,你应该也无法选中这门课

课程名相同不代表课程号相同,你在选课的时候应该永远以课程号相同为选课正确的标准

主观的个人建议

考虑到大一下学期某些课程的学习难度,个人推荐在大一上学期学习线性代数 (●'◡'●)

如果你的专业不在大一上学期开设线性代数课程,你可以在退补选阶段抢课

以下是一些能帮助你在应试考试中取得较高分数的物品:

  1. 往年卷多多益善(大多数老师会在考试前发放近三年的电子版往年卷,而很多民间群里能找到更早的往年卷,像高中那样多写写题有好处的,这是为数不多能靠刷题得高分的大学课程了)

  2. 《大学数学典型题解析》(很老的书,几乎只能买到翻印版,可以去淘宝的“小蓝鲸书店”看看有没有二手库存;有电子版;会“偶遇”考试原题)

前者能让你适应考试节奏与手感并巩固知识点,后者(尤其是高等数学分册,封面是黄色的,对应微积分ⅠⅡ的学习)能帮助冲高分

如果你不希望仅仅面向考试学习线性代数,推荐自学 MIT 18.06: Linear Algebra 这门课,这门课确实相比国内的课程对以后的cs专业课学习更有帮助

· 专业课

总共有五门可选择的专业课:《程序设计基础》《计算机程序的构造和解释》《离散数学》《数字逻辑与计算机组成》《高级程序设计》

《程序设计基础》(开设学期:1-1 1-2)

1-1 1-2 即“大一第一学期”和“大一第二学期”

C语言入门课,无OI基础萌新友好,有OI基础大佬~~咔咔乱杀~~会感到非常熟练

主要的教学参考用书是《程序设计教程:用C++语言编程》(前五章不涉及 C++ 特性的内容)和《C语言程序设计:现代方法》(好书)

期中、期末考试为笔试,期间穿插三次机试,学期末有一次大作业,平时每周会有几道上机题当作业(上机课的大多数时间都是用来写作业的)

笔试机试难度都适中偏友好,有基础的比较容易 95+,无基础的 90+ 也不难(吧)

主观的个人建议

这门课和《计算机程序的构造和解释》是二选一关系(也可以都选,但是会比较累)

期中/期末考试都是笔试,零基础的学生可能需要注意一些知识点细节,而不仅仅是会敲代码

《计算机程序的构造和解释》(开设学期:1-1)

基于计算机科学入门课 Berkeley CS61A 设计的一门课,内容大致是一样的(A Clone of Berkeley CS61A)

这门课的官网是 sicp.pascal-lab.net,参考用书《Composing Programs》,是《计算机程序的构造和解释》(SICP)这本书的课程适配简化版

这门课主要关注“抽象方法”“编程范式”等较为抽象而非常关键的学习内容,有一定的思考难度

这门课的编程语言以 Python 为主,后期也会学到一些 SQL、Scheme 相关的知识

课程安排、作业设置情况等可通过课程官网了解,这门课所有的课件资源都在官网公开,OJ系统也可以在没选这门课的情况下申请账号使用,此处不赘述。

这门课没有平时分,作业占比50%,期中期末各25%,给分情况不错,但是高分看能力

总体来说这是很好的一门课,就是对纯cs新手不友好

主观的个人建议

这门课的难度对于一个大一新生来说(尤其对无编程经历的人来说)不会很简单,但是你确实可以学到很多东西

考虑到这门课的优质性和难度性,我不会在这里大夸特夸这门课,选不选择这门课由你自己决定

自学 CS61A 也是可以的

《离散数学Ⅰ》(开设学期:1-2 2-1)

注意

在选课前请务必确认你选择的是课程号为 22000210A,由计算机学院开设的 3 学分《离散数学Ⅰ》(而不是其他学院开设的各种《离散数学》)

这门课曾经是 5 学分的课,在课程改革中拆分为了必修的《离散数学Ⅰ》和选修的《离散数学Ⅱ》(只在 2-1 开设),所以可能会和你之前了解的不太一样

思考量需求 > 做题量需求的一门数学课,教学内容“涵盖数理逻辑引论、集合论、计数与离散概率、代数系统和图论等多个数学分支的基本内容”(摘自课程简介),应该是所有不同学院开设的离散数学课程里学习难度最大的一门(在课程拆分后说不定了

(多数情况)每周两个 Problem Set(也就是作业),每个 Problem Set 平均十道题(有波动),会有专门的习题课讲解题目(每周一次);期中 期末考试占比分别是 20% 60%,难度不至于太难,给分相对友好,但如果不认真学以至于期末考试直接空题也不会得到一个满意的分数

主观的个人建议

这门课的知识点较为琐碎复杂,个人感觉在很多情况下理解一串知识点所花的时间会比写作业所花的时间更长,在学习策略上与微积分有很大不同

转专业考试的笔试试题一直以离散数学为主(抽象代数+图论通常会出三题,而笔试总共四题),并且机试试题往往也会出现一道图论相关的题目,所以这门课对于一个转CSer来说基本是必选(除非你真的系统学过相关内容,否则一定要学习离散数学)

《数字逻辑与计算机组成》(开设学期:1-2 2-1)

一门较为硬核的专业课,前半部分从逻辑门、CMOS电路讲到组合逻辑、时序逻辑电路,后半部分会介绍 RISC 架构 CPU 的运算部件、指令集等,最终你将实现一个能够执行 RV32I 指令集的单周期 RISC-V CPU,并且对多周期CPU、流水线CPU等有一定的了解(哇听上去好高大上)。课程部分参考了 Berkeley CS61C

主要的教学参考用书是《数字逻辑与计算机组成》(及其配套的“习题解答与实验教程”),主要用到的软件是仿真电路软件 Losigim (ITA fork)

作业包括教材后的课后习题(挑部分题目),六次 Logisim 仿真实验(前三次只需线上OJ完成并完成实验报告,后三次在此基础上会有三次线下验收课,你需要向助教展示你的电路与思考题实现);

分数组成:课后作业、问答等平时成绩 15%;六次实验成绩 35% (包括实验验收+报告);期末考试成绩 50%。给分较为友好,期末成绩影响较大(虽然有捞分)

主观的个人建议

考虑到大二上学期的专业课《计算机系统基础》比这门课的学习量/任务量更大,较为建议在大一下学期学习这门课(两门课一起学任务量会很大),不过需要做好这门课的任务量同样不小,赶ddl、突击复习可能会火葬场的准备

(但是期末考试的试卷和往年卷相比几乎没啥变化,所以往年卷还是要好好看看的)

yry老师的每节课都有录屏可供回看,可用作课后回顾资料

个人额外推荐《计算机组成与设计:硬件/软件接口(RISC-V Edition)》这本书,可能会对这门课的学习提供很大的帮助(RISC-V版本的这本书有点难买到,可以找电子版)

《高级程序设计》(开设学期:1-2 2-1)

和往年不一样的是

高级程序设计从“与概率论与数理统计二选一”修改为了必修,所以你现在终究会选这门课的

程序设计基础 PLUS,注重 C++ 的面向对象编程,形式和程序设计基础差不多

主要的教学参考用书是《程序设计教程:用C++语言编程》(从第六章开始的内容),课程目标是 “加深对面向对象、泛型、事件驱动、异常处理等程序设计基本概念和技术的理解和掌握,加强解决实际问题的能力”

课程结构参考《程序设计基础》,两者差不多

给分客观

主观的个人建议

这门课目前来看不是很优质,但是据说会改革

高级程序设计这门课有趣的一点是:鼓励使用AI(考试不算)