当前位置:首页 > 单片机 > 小林coding
[导读]我在逛知乎的时候看到一个问题:随手写了个回答,没想到很多读者都表示说出了心声,所以也同步发到公众号。以下是原回答我自己是CS科班的,读者里也有很多各大高校计算机的同学,覆盖了上交、北邮、南邮、华科、川大、普通一本等等,根据他们反馈,总结了以下几点:上课耽误学习,不上课考勤扣分,拿...

我在逛知乎的时候看到一个问题:

随手写了个回答,没想到很多读者都表示说出了心声,所以也同步发到公众号。

以下是原回答

我自己是 CS 科班的,读者里也有很多各大高校计算机的同学,覆盖了上交、北邮、南邮、华科、川大、普通一本等等,根据他们反馈,总结了以下几点:

  1. 上课耽误学习,不上课考勤扣分,拿不了高绩点,耽误保研出国。不多说,懂的都懂哈哈。

  2. 课程设置不合理,实验课多,作业多,并且大多是写 Word 报告,实验报告就像这种(迪杰克斯拉算法):

  1. 占了很多时间,但是效果却不如自学,上课基本是放 PPT,考试内容全在 PPT 上,看书的同学没有背 PPT 的分数考得高,没有人愿意去啃那些大厚书,因为“性价比”太低。

  2. 都 2021年了,估计没有几个学校提交代码是用 Git、Gitlab 这些工具吧,评分也没有搞自动化测试。做悉大、MIT这些学校的 labs,都是直接去网站提交代码,跑 test case,马上就能知道哪些 case 没有过,再去 debug。

  3. 教材大部分使用自己编的,水平如何就不多说了,懂的都懂。很多书上还是用 VC 6.0 来写的 C,为什么不换用更加优秀经典的教材呢?

    顺便贴一个匿名回答:

    不过值得表扬的是,我们学校教材基本都是使用全英文黑皮书,比如《计算机网络:自顶向下》、《深入理解计算机系统》等,这样的学校我知道有 15 所以上,希望会越来越多~

    对于计算机的学生,最好的资料和书籍是美帝那边的,因为计算机就是发源自美帝。

  4. 讲课全程 PPT,放 PPT 就算了吧,很多 PPT 还是十几年都没更新那种(C语言 PPT 上用的还是 VC6.0....),什么 C 语言 main 函数返回值 void。

我看过的一门非常经典课程,MIT CS107,讲师全程几乎都是黑板粉笔板书,学生跟着老师思路学习,这才是最高效的,而且各自手写代码、手画栈帧、手写汇编:

CS107
在我大学期间,只有一位数学老师坚持板书,大部分基本就是放 PPT 了事,下面的学生纷纷拿起手机拍照,或者直接下课去拷 PPT,这样能学到多少呢?

  1. 代码量太少,很多同学到毕业估计几万行都没写到,但是真正想锻炼出极强的编程能力没有 10w 很难,这方面作为学生我们也要多反思,为什么平时没有写到这么多代码。

  2. 很多学校就是孤立的学了一堆 操作系统、计组、体系结构、编译原理、C、汇编,但是很少有同学能把这些课程连起来形成 CS 体系,这方面 CMU 的神书神课《CSAPP》又要提下了,幸好我们学校开设了系统编程的课程,教材就是 CSAPP,其它没有开设这门课的学校建议学弟学妹们自学。

  3. 课程设置杂乱,学了一堆的数电、模电、大学物理..... 想起大一被大物实验支配的恐惧,时间都费在这些上面了,说实话把这些课程压缩,上一些函数式编程、或者比较前沿的 CS 方向,我觉得对计算机专业更好!

  4. 核心课程上的太晚!我们学校大二下、大三才开始计网、操作系统、数据库原理等核心课程,太晚了,这些课程至少要在大三前完成,大三再开设图形学、编译原理等进阶课程,大四直接就是实践课程为主或者让同学们自己出去找实习!

我个人觉得大概这样设置CS课程更为合理:大一上:C/C 程序设计、高数1(初等微积分)、离散数学

大一下:数字逻辑、数据结构、汇编语言、面向对象编程(Java/C )、高数2 、线性代数

大二上:软件工程、数据库、Java/Python Web开发、组成原理

大二下:操作系统、计算机网络、系统级编程(CSAPP)

大三:软件测试、软件安全、课程设计、密码学、图形学等选修方向

大四:实践、毕设、实习

另外,还有最大的问题就是OS、网络、数据库等 CS 核心课程上成了文科!缺乏一些动手实践 Lab,大部分都是写实验报告,就是不写代码。

为什么美帝在数据库、操作系统、各种工业软件工程能力如此强悍?

我觉得和他们 CS 强校的教育模式有关。

国外,尤其是美国,很多高校 CS 教育极其注重实践,国内也就清北复交浙等少数 TOP 学校有少量的实践教学,其它大部分是念 PPT,课后作业就是做 Word 项目。

因为很多老师自己也不会编程.... 更没法设计那些硬核的实验和辅助教学平台,不会编程的人教你编程......这结果能好么。

就拿我自己来说,学校好歹也是个 985 吧,我上了三周的 Java 课,愣是没听懂在讲啥,最后看了几个尚学堂高琪的视频几天就入门了....

再来说美国为什么有强大的基础软件能力吧,这得益于他们的高校在培养学生造轮子的能力。

比如国外是如何学习数据库的?

就拿 MIT 来说,6.830 Database Systems: 这是一门数据库系统的一门核心课程。前半部分比较基础的数据库的知识,后半段主要在讲Distributed Databases的东西

他们的实验是什么?

是让你写个小型关系型数据库,比如 lab1实现数据库基本的存储逻辑结构,具体包括:Tuple、TupleDesc、HeapPage、

HeapFile、SeqScan、BufferPool等。

国内数据库教什么?

教 SQL 怎么写,教数据库原理(这个还算好的)

更有甚者实验就是安排用 Java 使用 JDBC 连接MySQL 写个应用。。。

国外是如何教计算机网络的?

手写 TCP!

比如斯坦福 CS 144,CS144 Lab Assignments - 手写TCP - LAB4

img
国内是怎么教的?

记住 TCP 三次握手、四次挥手、记住 DNS使用 UDP协议....

国内大作业是什么?

有些是 Word 写报告。。。有些是让你用一下 socket api 写个网络程序。。。好吧,其实会用 socket 的也挺不错的,最关键是有些直接让你写个爬虫、HTTP 服务,就算是使用了网络协议了。。。

这是计算机网络原理吗?

国外是如何教 操作系统的?

比如 MIT 6.828,现在改名了。

直接让你基于一个 xv6 去实现一些模块,比如文件系统、多线程。

国内是如何教的?

记住进程和线程区别、记住虚拟内存的各种组关联....

当然也有一些学校会有实验,比如清华 ucore、哈工大 linux0.11、川大也有引入 nachos

这就是为什么美国高校有很强的编码能力、造轮子的能力,因为他们的CS学生成长环境就是这样的。

大多数高校老师升职不靠教学,所以大家都没把心思放在教学上,做“研究”发论文,不香么。

设计这么多麻烦的实验不是给自己找麻烦么

弄个 PPT、Word 多爽呀

这个现象我估计还会一直持续下去,老实说,跟着学校的路线走,学计算机,大概率毕业即失业。

给大家列举一个我做过的国外老师设计的实验吧:

模拟实现 TCP 可靠传输的

人家老外老师就是给力,直接做了一个网站,这个网站你可以通过 TCP 连接上去,然后你需要创建几个节点,互相发消息。

他们之间的消息都会经过老师的网站所以通过网站上是可以控制丢包率的,也能控制节点的拓扑结构,要求就是让你基于这种不可靠的信道,做出可靠数据传输!

这简直就是翻版 TCP 嘛,超时重传、ACK、滑动窗口啥的都给我安排上!

就是像下面图中一样,圆圈就表示你可达的范围,不同节点形成各种网络拓扑,可以调节网络 丢包率 Loss chance。

设计这些东西、实验系统、自动化测试评分系统,肯定需要花费老师大量时间精力,但是有没有带来多少升职上的产出,当然没动力去搞啰。

反正吧,学计算机最好不要全部去跟着学校学,除非你学校很好,不然大概率毕业即失业。

当然,说了这么多问题,也是有长处的,这里引用知乎一位答主邦彦的总结:

最后,附上这个回答下的一些评论:

郑重申明

本文非崇洋媚外,吐槽只针对部分高校的现象。

像清华、哈工大、南大就有非常不错的课程,也在积极像 MIT、Stanford 学习,毕业的时候已经有自己造的编译器、OS、数据库等等,并且均使用 docker 和 gitlab CI 解决环境和自动化测试问题。-- 来自评论区

但是这样的学校有点少,希望国内能有更多高校计算机教育模式能够早日跟美帝等 CS 强校接轨。培养更多基础扎实、编程能力强的学生,助力操作系统、数据库等基础软件、工业软件的发展。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭