作者:该用户名称被禁止使用
链接:https://www.zhihu.com/question/597743712/answer/45331983693
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我刚读完大一,我尽量客观一点评价这边的课程。
先讲讲s1的课:
INFO1110,这门课讲Python,讲的是最基本的编程内容,数组,if-else,loop这些东西。
Lecture讲的不好也不坏吧,毕竟都是非常基础的东西。
每一周的lab会复习本周讲过的内容,PHD或者honor的学生担任tutor,复习之后当堂考试,纸笔写代码或者纠错之类的,然后讲综合一点的应用,每周还有一个代码作业,当时每周大概用2h之内完成,比如学完function之后是写一个点单系统,有几种指令和商品,实现增删改查功能,用了200行以内,学完Class之后写一个船对战游戏,300行左右。
Assignment大作业是实现5个文件,总的来说是实现一个大的电路,给定电路大小,实现光子的正确运动,遇到镜子正确反射,从发射器正确发射,接收器正确接受这四个主要功能,第五个文件是写test测试所有函数,我用了2200行实现。
Mid-semester和final都是纸笔考,期中是2h完成5道基本的代码选择,3道综合代码大题,每一个在100行以内。Final是2h完成10道选择题,10道代码大题,包括综合项目,实现要求功能函数,递归,对象,2道写test。
================分割线================
ELEC1601这门课讲的是计算机组成原理
Lecture讲的很一般,12节里7-8节都没有讲完课,之后就不讲了,讲完的内容也不是很好,讲了一下基本的定义以后就没有了,不解释为什么,不解释怎么用,纯理论讲解不严谨,一笔带过,比如状态机,我在学离散数学的时候是讲输入以后输出是什么,对于某一个状态当输入某一信号之后进入哪一个状态,从头画表格开始。但是ELEC1601讲的则完全不行,上来先给一个图说输入什么了进入什么了,既没有说初始状态是什么也没讲为什么输入这个以后能进入别的状态,甚至没提输入以后还要有输出这件事。
这门课的tutorial是2个学生讲的,从第一节课开始就没有讲完题过,我去问某一个题他们两个竟然不会。
这门课的lab是3个学生带的,实际上从来没带过,只是坐到那里,所有的内容全由小组自己看slides自己讨论。而且这门课有一个比较离谱的地方在于,lab的内容超前lecture,lab第一节课就要实现电路控制3个灯泡进位,按一次开关第一个亮,按2次第二个亮,就是实现2进制进位,而此时的lecture才刚讲第一节课讲了一下教授名字,这门课这个学期有什么内容什么安排,还连一个有用的知识点都没讲。
而且这门课要用c++但是没人给你讲过任何语法和内容。
那么你可以想象一下,tutorial没讲完过题,lecture知识点讲不全,lab的时候tutor完全不讲东西,同时做的还是完全没学过的东西。
===============分割线=================
MATH1061这门课讲基础的微积分和一点基础的线代。
Lecture上讲的正常发挥,上课时候会从最基础定义开始一步步推导而不是念ppt。
tutorial则是发题自己在白板上面写,有不会的问tutor,没什么特别的。
Assignment比较简单,quiz也简单,因为要照顾到高中没学过数学的学生,所以题都很简单。
Final是30道选择题,5道大题,每道大题5个小题,都很基础。
=================分割线===============
DATA1001这门课讲的是基本的统计知识,双盲实验,平均数,中位数,数据分类,各种图,中心极限,检验这些东西。
Lecture没有什么好说的,都是很基础的内容,高中学过的,毕竟要照顾没学过的。
Lab不太好,因为这门课为了让学生直观看数据是基于R语言讲的,但是却没有任何代码练习,他们一方面照顾到没学过统计的学生一方面又要求学生会编程,说实话不是很理解,而且这门课3个report全是用代码写markdown,对于没有编程基础的学生很不友好。
================分割线================
讲讲s2的课:
INFO1113这门课是讲Java,面向对象编程,静态类,非静态,接口,枚举,多态,泛型,内部类之类的东西。
首先是Lecture,讲的不好,纯念ppt,流程是告诉你有这个东西,怎么用,演示一遍。但是不讲为什么要有这个东西,解决什么问题,同时这门课没有每周练习只有作业。
那么你可以想像,你刚学完Python,面对一个print要调用System,out,println三个东西,不知道static,main,为什么开头要有public class的时候就要直接开始写作业,这门课没有给你适应语法的时间,因为week1就有作业。
同时因为lab没有练习,以接口举例:你根本不知道什么时候要用接口,为什么我要用接口,尽管我知道接口是一份标准,我还知道只有一个抽象方法可以用lamda,我还知道可以直接定义一个接口类,后面跟的是实现这个接口的具体的类,你什么都知道就是不知道什么时候用,为什么要用,只在final的时候问你了你写一下,自己从来没用过。
Assignemnt是实现一个游戏,小球在固定大小窗口运动,碰到墙反弹,碰到不同颜色的墙变色,进洞加分等功能。
那么首先第一个问题在于,这是一个GUI编程,但是你从没学过,课上也没解释,你自己去翻doc才知道他给的那个现成的有好几个已经写出来的method的东西叫做架构,gradle,本地的jdk和配置路径都是自己研究的。看doc才知道运行逻辑是每秒调用FPS次draw方法。mouse方法的逻辑是按照像素位置定位,press方法中的参数e类型是event,根本不知道这个event是什么类,读文件不是从txt里面读而是从Jason文件,根本不知道本质上是个数组,明明说一下就知道的事情没有任何人说过。
这门课的纸笔quiz是公司面试题的类型,虽然是课上讲过的东西但是没有任何练习,举个例子:匿名内部类,重写一个抽象类的子类中的一个抽象方法,这个方法来自于父类实现的一个接口,这个接口继承自另一个接口,最初的接口里面有两个方法签名不一样的方法,子接口中又定义了一个重名但是签名不同的方法,最后问有什么error或者exception。
你可能要说这很简单,很基础,但是没有任何练习此前,如果你从没刷过题能不能做出来?
===============分割线=================
MATH1064这门课讲的很好,但是我感觉这门课应该放在学算法之前。
所有的内容都是手写,没有ppt,从为什么要有这个东西,给出定义,从定义开始符号化,到综合实际应用,环环相扣。
推荐所有理工学生学的一门课,是我这一年学的最严谨最有逻辑的课。
=================分割线===============
COMP2123,数据结构与算法讲的是,链表,数组,堆,队列,栈,树,图,dijskra,最小生成树,分治之类的东西。
Lecture不好,没比ELEC1601好多少,讲完课了也只是讲完了,课程排版和讲课模式灾难级的。
具体流程是,告诉你有这个东西,有什么方法,方法功能是什么,分析一下时间复杂度,没有了。最能感觉念ppt是什么感受的一门课。
不讲为什么有这个,不讲数据结构怎么实现,不讲方法代码怎么写,没有任何练习题。
如果你不自学的话你甚至不知道后面的数据结构都是根据数组和链表实现的,而且不讲指针,不自学的话甚至不知道链表是根据Node类中指针实现连接的,连建堆怎么做都不知道,讲到tree的时候更是灾难级的,我们有一个结构叫做树,还有个叫二叉树,有一个树叫红黑树。
你要是没有自学过,还以为这三个没什么关系呢,实际上因为树和二叉树之间各方法时间复杂度相同,但是二叉树在实现avl树方面具有相当优势才讲二叉树,avl树会出现退化情况才有了自平衡树,红黑树是一种自平衡树,你不自学是根本不知道这回事的。
如果你不自学,那么学完这门课你连指针都不知道。
=================分割线===============
MATH1062,多变量微积分和统计基础
和MATH1061一样正常发挥,除了统计部分完全重合DATA1001,我想只选微积分部分但是学校不让,多收我一半钱,早知道上个学期不选DATA1001了,DATA1001不是必修,但是MATH1062是必修,不知道为什么这门课是微积分和统计组合不是微积分和线代。
===============分割线=================
第一年是这样的,等我之后学完再更新。
就这一年读下来,我自己感觉所有工科的课讲的都不怎么滴,数学的课都挺好,一个念ppt不讲原理,没有练习全靠自学,一个从定义一点点推导,每周2页a4纸习题。
我打算不看学校的工科的课了,所有cs的课全看国内培训班的课,我看过mit,Stanford,华盛顿的公开课,说实话讲的好是好,但是不全,国内培训班讲的全。
至于数学课目前学的这3门基础课还不错,等我学2000level之后再探再报。