当前位置:首页 > 公众号精选 > 小林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 强校接轨。培养更多基础扎实、编程能力强的学生,助力操作系统、数据库等基础软件、工业软件的发展。


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

北京2024年5月13日 /美通社/ -- 5月11日,软通动力在鲲鹏昇腾开发者大会2024期间举办"软硬全栈,加速智能化赋能"分论坛。业界专家学者和优秀企业代表齐聚一堂,共同交流分享鲲鹏昇腾生态的创...

关键字: 智能化 全栈 PEN 计算机

卡西欧计算机株式会社宣布推出与冲浪者基金会合作设计的G-SHOCK系列新款防震手表G-5600SRF,旨在保护海洋。这款手表的表圈和表带由回收树脂废料制成,展现独特设计。配备Tough Solar太阳能充电系统,强调环保...

关键字: 手表 SHOCK SOLAR 计算机

随着信息技术的迅猛发展和大数据时代的到来,机器学习成为了人工智能领域中的核心技术之一。机器学习是通过模拟人类学习行为,使计算机系统能够从数据中自动发现规律、提取特征并进行预测和决策的过程。它在诸多领域取得了广泛的应用,包...

关键字: 计算机 人工智能 机器学习

随着大数据时代的到来,数据处理成为了一项至关重要的任务。传统的数据处理方法往往面临着效率低下、准确性不高等问题,而机器学习技术的兴起为数据处理带来了全新的解决方案。本文将深入探讨机器学习在数据处理中的应用,并分析其优势和...

关键字: 数据处理 计算机 机器学习

机器学习是人工智能领域的一个重要分支,它使用各种算法来使计算机系统能够从数据中学习和改进,而无需进行明确的编程。在机器学习的广阔领域中,有多种算法被广泛应用,每种算法都有其独特的适用场景和优势。本文将详细介绍机器学习中的...

关键字: 机器学习 人工智能 计算机

随着信息技术的飞速发展,机器学习(Machine Learning)作为人工智能领域的重要分支,正在逐步改变我们生活的方方面面。那么,什么叫做机器学习呢?简单来说,机器学习是一门研究如何让计算机从数据中自动获取知识和技能...

关键字: 机器学习 人工智能 计算机

随着信息技术的飞速发展,数据已经成为现代社会的重要资源。数据挖掘和机器学习作为处理和分析数据的两大关键技术,在多个领域得到了广泛应用。尽管它们在某些方面存在重叠,但数据挖掘和机器学习在定义、目标、方法以及应用场景等方面存...

关键字: 数据挖掘 机器学习 计算机

计算机的历史可以追溯到公元前的古代算盘和查尔斯·巴贝奇的“分析机”构想。然而,现代意义上的计算机起源于二战时期对复杂军事计算需求的响应。1941年,美国宾夕法尼亚大学开发出了ENIAC(Electronic Numeri...

关键字: 计算机 云服务

自二十世纪以来,计算机技术经历了从机械计算装置到如今高度智能化、微型化的巨大飞跃,成为人类科技进步的重要推动力。电脑的发展史是一段充满创新与突破的历史,以下将按照时间顺序概述这一发展历程。

关键字: 电脑 计算机

计算机网络是当今信息化社会中不可或缺的基础设施,它将世界各地的计算机系统及其附属设备紧密联系在一起,实现了信息的高速传输与共享资源的有效利用。计算机网络的定义可以归纳为:计算机网络是一系列分布在不同地理位置、具备独立功能...

关键字: 计算机 信息交互
关闭
关闭