17级CSE

  • 本人是17级CSE学生,结合个人体验和身边同学经历给出评价,仅代表个人观点,欢迎补充。

  • 个人背景:普通CSE学生,无竞赛背景,无科研经历,上课出国找工党

个人经历;大一到大三跟CSE专业的大部分人一样,老老实实的上课写作业, 曾经尝试过科研,但是由于自己并没有真的搞清楚对什么感兴趣,只是看到大家都在卷科研而盲目从众(这样的心态要不得。。。),所以最后还是没走这条路;GPA由于自己比较擅长应试教育所以还可以(专业前10%,但是从真实水平上来讲肯定是没有前10%的)。大三下开始找国内大厂的实习的时候才发现,自以为认真读的三年书,其实根本没学到真东西;然后就开始拼命刷leetcode+背面经,终于混到一份21fall的某大厂fulltime的offer;然后又因为GPA还行又混到了某北美大学的研究生offer,自此开始了一年的GAP生活。。。

我的GitHub(欢迎follow);里面有一些面经leetcode刷题的记录,可以给同样在找开发岗实习的同学一点参考(欢迎star)

对课程评价的话有三点准则

  • 不限定题目的学期大project一般都是坑比课程,期末注定诸神之战,例如CSC3170,CSC4001

  • 不涉及工程,数学统计知识较多的课一般会好一点

  • 需要卷report的课都是傻逼课程,写report的时候不要太care内容,反正TA也只会看看格式和typo什么的,代码也基本不会跑

以下是课程评价:

School Package 学院大礼包

  • 不评价了,能拿A尽量拿A,这种半个学院都会上的课一般不会太困难,质量也相对来说比较过得去(不能让刚刚大一的人就看清这学校真实的课程质量对吧)

Major Required 专业必修

  • PHY1002 毫无意义的一门课程,不擅长写report的话就留到大四最后上吧

  • EIE2050

    • 不难,努力拿A

  • CSC3001

    • 偏理论的课一般不会太坑比,认真学就好,以后data structure和algorithm会需要很好的离散基础

  • CSC3002

    • 黄锐讲的很烂,而且课程作业需要用的qt & 斯坦福库毫无学习价值,建议划水抱大腿的同时找门国外大学的对应课程自学。

    • 自学的话,建议至少能会写基本的Makefile & cmake,了解C++程序从编译到链接的大概过程,静态分析(clang-tidy)&动态分析(llvm sanitizer,valgrind)工具以及为什么需要这些工具,这些工具可以检测出来的常见代码错误,有余力可以再学习一些至少到C++17的特性(智能指针,lambda函数,std::optional / variant /any类型,std::thread的基本使用,std::move和左右值),黄锐讲的完全就是十几年前的东西。。。根本不够看的

    • 个人学过Stanford CS110L,一门讲rust的系统编程课,并且个人认为学习rust过程中对C++的收获都比黄锐的课更多

  • CSC3050

    • 体系结构还是很重要的,可惜我当年没好好学。。。现在工作需要看x86汇编相关的时候就很后悔当年怎么学这门课的时候如此混日子。。。

    • 个人感觉汇编器和模拟器难度并不是很大,C programming熟练的话并不是很大问题,但是撸个带pipeline的CPU我感觉着实不太扛得住,特别是verilog编程跟普通编程语言差别还是很大的,个人感觉不是很好上手

  • CSC3100

    • 当年上的是Jane YOU的,这老师真的是有点大病。。。

    • 建议用别的学校的同等课程自学;举例而言,当时上红黑树的时候,看龙大的课件几个小时都没理解转树操作,但是找来伯克利CS61B的课件,看了半个小时就理解原理了(红黑树实际上与234树等价,因此只要明白B树的插入删除,就可以推导出对应的红黑树等价变化是什么。。。龙大的课根本就没提这一点,而且我感觉老师自己也不是很懂)

    • 代码作业的话,我当时上的时候发现能否在限时内通过跟算法半点关系都没有,关键是要改输入输出(问学长学姐就知道了),总之很坑,不建议花太多时间,实验报告也毫无意义(优化程序不仅只取决于算法,还取决于你代码写的怎么样,例如C++不熟练的话很可能会写出多余的复制操作,更不用提locality等等;叫一群啥都不会的大三学生想办法优化这玩意实在是有点想当然)

  • CSC3150

    • 很重要的一门课,一定要认真学;也别觉得老钟作业太难下手太狠,看一下CMU,MIT的操作系统课的作业之后就会发现老钟多仁慈了,人家可都是要求手撸个OS出来的啊

    • 不过老钟虽然带课态度认真,但是讲课水平一般,照本宣科而且不擅长举例子帮助理解,内容经常感觉过于抽象;感觉听不懂的时候就去看国外大学对应课程的lecture吧,会比老钟讲的通俗易懂很多

    • 另外VM千万别用VirtualBox,难用的一批;搞个激活码用VMWare Fusion吧

  • CSC3170

    • 我的数据库是Clement带的,个人认为他自己其实就不懂数据库,所以讲的也很烂。前半学期一直在讲关系代数和SQL语法,还有关系范式。实际开发中这些作用都不是很大(语法层面有ORM,实在不会还可以现场Google;关系范式的开销太大,一般开发不会特别严格遵守),后半学期的并发控制,崩溃恢复等内容才是重点,可惜Clement这块并没有特别深入,导致学到的东西也比较浮于表面,而且完全不涉及实操,最后学到的都是纸上谈兵。

    • 个人建议起码自己学习一下MySql和Redis的使用,大概原理以及了解下数据库从 Relational到NoSql这几年的演变,OLAT,OLTP的区别以及用途等内容。Clement讲的东西还是比较过时的

    • 这课大作业无限制选题导致大家都在拼命卷前端卷UI,但数据库这种课的大作业,练习如何才能做到高并发才是真正有含金量的内容,然而Clement自己都不懂,也没法给学生讲懂,最后大家都跑去卷没用的花哨前端了

  • CSC4001

    • 讲的都是十分老旧过时的知识,基本可以说毫无用处,建议大四不在乎GPA,拿B拿C也不在乎的时候混完,否则会上的十分痛苦

    • UML这玩意我就没见有什么人用过

    • 大作业也是无限制诸神之战。。。你懂的

  • CSC4005

    • 内容还行,MPI,OpenMP,CUDA还是值得了解一下的;但这门课report卷到飞起,很恶心。而且TA根本不看你的内容,只关心排版,字数以及图好看不好看。个人亲测完全照抄上一年学长学姐的report,自己做出来的实验数据跟report里面的数据完全对不上的情况下,report都可以拿满分。

    • 顺带一提,Final考的东西很扯淡。。。不要花太多时间复习,反正复习了也没有用

Major Elective 专业选修

  • CSC4180

    • 讲的东西不是那么没用,但也没太大用。编译器实际上分为前端,IR,后端三个部分,但这门课80%的时间都在讲前端,IR和后端基本没怎么涉及。个人建议真想学的话还是自学国外大学的对应课程。

    • 作业也比较扯淡,基本没给什么instruction,就干巴巴让你实现一个能解析某个语法的parser,甚至我当时上的时候作业说明LL1的parser可以有bonus,但实际TA给出的语法有二义性导致无法用LL1实现。这门课的TA及其不负责,作业有问题都靠学生自己踩坑。交的代码也不看,甚至当时TA有一次作业以打不开我们提交的pdf为由给了很多人0分,让我们自己去找时间argue成绩,非常傻逼

    • 四次大作业勉强够实现一个很简略的类C语法的编译器,本身作业实际难度不大,但TA的极其不负责+不提供任何指导让体感难度变得非常大。我自学UCB的compiler课程的时候发现UCB讲解相关概念就很通俗易懂,学起来也体验好很多。我期末复习LALR那一章节的时候实在看不懂老钟的ppt,然后找了UCB和MIT的ppt来复习,很快就搞懂了相关概念。

    • 总结:感觉除了学会了regex原理,NFA&DFA之外收获不大。作业没让用LLVM比较遗憾,毕竟现在LLVM已经是一个很通用的编译器后端了,已经没什么必要手写编译器后端了。但个人感觉要这门课的TA学会LLVM,那可真是见了鬼了

  • CSC4020

    • CS专业最好的一门课,也是最难的一门课,可以看作国外大学ML课的青春版,少讲了几个MLAPP上的topic,但还是十分硬核,适合想了解ML的同学体验

    • 我上的时候大家都说难,群里整天鬼哭狼嚎,但我觉得只要下课认真看MLAPP并且按照书里的内容自己推导一遍的话还是可以理解上课讲到的全部概念的,否则会比较知其然不知其所以然

    • MLAPP这本书也很牛逼,cover了ML里面大部分常用算法,也有很详细的推导过程,是一本很好的工具书

    • 作业也很难,纯numpy实现各种ML算法,非常考验coding能力,但同时也能打下很好的基础

  • EIE3280

    • 当作通识课来上就好,不会学到特别深度的知识,但黄建伟上课跟大家讨论的气氛还是比较轻松的,可以当做调剂来上。

    • 但期末project又是无限制格斗。。。这一点就很坑了,但最后黄教授给分还是不错的,哪怕你做的project很水他也不会觉得有什么

    • 顺带一提,这门课跟计算机网络毫无关系

  • MAT3007

    • 这课不能拿A的话,建议别搞ML相关了。。。

  • MAT3220

    • 最优化2,感觉是给想从事优化方向科研的人上的;我当时一个班只有三十来个人,CS专业不超过3人。。。然后就被数学专业的人狠狠爆虐

    • 虽然是CS选修,但CS人真的不属于这门课的世界

Free Elective 自由选修

  • STA2002

    • 非常intro的统计课,个人感觉“概率与统计”,STA2001更多是关于概率,而2002才是统计。不上2002的话等于概率统计只了解了一半

    • 内容基本都是各种估计&算置信区间,想做ML的建议上一下,MLE和贝叶斯对后面学4020会比较有帮助;个人感觉作业和考试完全就是查表。。。

    • 想拿A难度不大,适合想拉GPA的选手上

  • STA4001

    • 随机过程,但是感觉讲的还是浅了点,当然我们水平也比较差,讲难了未必能受得了。。。

    • 难度不低,但认真学的话拿个A-问题不大,想拿A还是需要付出一点努力的

最后更新于