关于软件工程
软件工程的课程
在 全校课程表 25-26-1 中可以找到 2025-2026-1 学期所有课程的信息。
**软件工程(特立)**的班号是 07192401
和 07192402
,**软件工程(睿信)**的班号是 08012401
和 08012402
。
看程设的师资分布,感觉特立的两个班的教师对应往年的 01 班和 02 班,而睿信的两个班的教师对应的 03 班和 04 班。
01 班和 02 班会遇到 赵小林的数据库 和 耿晶的面向对象,所以感觉不会很好受。
虽然软工的很多课名称和计科、大数据等专业很像,但其实学分、内容和考核方式几乎完全不同,所以你很难在别人在计科的经验里知道软工的专业到底在干嘛。
例子
计科:面向对象技术与方法 2.5 学分,学的是 C++ 的语法
软工:面向对象技术与方法 2 学分,学的是 Java 的语法
计科:程序设计方法与实践 1 学分,小学期做题即可
软工:程序设计方法实践 2 学分,授课学期,不仅要做题还要考试
...
为什么想选软件工程
我个人认为的软件工程专业有以下几个优点:
竞争不如计科,卷绩点比较轻松
可以锻炼自己的开发能力
可能课比较少
事实上,大二上计科和软工的必修学分(算计科数值分析限选)一样,大二下软工的必修学分还更多一点。
可能是因为软工大二下的大部分课都集中在上半学期,显得下半学期很闲。(不算选修,后半学期一周只有四节课)
为什么我不推荐你选软件工程
课程质量问题
我主要是觉得软件工程的课程其实挺累的,很多课并不能真正锻炼自己的开发能力。
比如说 面向对象技术与方法,这门课其实是教你 Java 的。它大部分时候并不是在讲面向对象的设计模式,而是在教 Java 的语法,考试的时候也是一堆语法题,非常无语。如果你想学面向对象程序设计的范式,推荐还是选 金旭亮老师的 Android 技术开发基础,在你实际编程的过程中,才能真正体会到面向对象的设计模式。
非常搞笑,这里提到的是 金旭亮老师的 Android 技术开发基础,为什么不提他的 Java 程序设计呢,因为在大二上软件工程没法选这门有实践意义的课,可能是因为觉得会和大二下的面向对象冲突吧,不过我还是无法理解。
再比如 赵小林老师的 数据库设计与开发,这门课虽然会涉及一些数据库的实际操作,但它不会提供详尽的资料,给的还是一些冷门版本的数据库,实践时又要用 Delphi,完全脱离了生产实践。
考试和学习资源
而且几乎所有课考试的时候都是一头雾水,因为没有老师会给往年题。这种小专业的特点就是往年题根本留不下来,而老师为了方便自己重复利用题目,肯定也不会放出来。
不过如果你不追求绩点的话,过考试其实还算简单。但平时会有很多实验和作业,对没有基础的同学来说非常不友好。
竞争环境和学习体验
软件工程的内卷程度其实也不算很低,前排的人都还在认真学,后排可能就摆烂了。
你能想象吗?整个大二下学期成天对着一堆非常无语的课程写实验报告,我真的不觉得这些能锻炼什么开发能力。
时间安排和心理状态
但实际上时间还挺多的,我这个学期玩了 270h+ 的瓦罗兰特,20h 的最后生还者 2,看了 300 多集银魂,其实是非常闲的。所谓的累更偏向于心累,心智被各种无意义的课程折磨得疲惫不堪,感觉产生了厌倦社交、厌学的心理。有时候我真的想过放弃保研,直接躺平算了。
对的,厌倦。
软件工程给我带来的最大感受就是厌倦。我几乎厌倦一切课程——它们过时、没必要、负担又重。
总体评价
当然感觉这种缺陷在整个计院都存在,都有很多无意义的八股课程,不过如果是计科的师资的话不会出现这么 CS(形容词,非 Computer Science)的数据库和面向对象。
如果你能接受这些缺点,并且能保持自己成绩稳定或者能够应付日常任务的话,选软件工程还是不错的。
培养方案
大家可以直接在侧栏看到大二的课程安排,因为笔者也没有上过大三的课,所以大三的课程就不评价了。
其实课程安排的初衷是好的(指的是课程名字),但是落实到具体课程可能就比较难绷了,大二上其实八股课还没那么多,大二下几乎全是八股课了,之前最讨厌的数据结构都眉清目秀了起来。
实践类课程没有那么多,我比较喜欢 互联网应用开发基础训练 和 Android 技术开发基础(选修),都属于是拿项目说话的课程。软件工程基础训练 这门课废话太多,用 Python 做的项目都比较小。
八股课程最大的问题是比较神秘,那么多概念到底从哪里抽一句话来考考你呢?这样的课程实在很难复习,而且复习成效其实一般。可恨的是这样的课有特别多。方法其实就是考前突击,所以平日里真的没什么学习的欲望。
学习方式
到大二之后平日里学习的应该没有那么多,大部分都是考前突击的。
如果有自己想学的,平日里可以多花时间去学。