我无意争论,但我所了解的事实是课内教学不仅无法覆盖社会对本科生水平的期望,甚至无法覆盖完成作业所需的知识。 因此无需争论自学的利与弊, 学会自学,是计算机学生的必修课。
我想举几个具体的例子:
- 程序设计的大作业要求你使用图形用户界面,插入音频,实现各类搜索算法和数据结构,但你甚至很难仅仅通过课堂学会指针。
- 大二以后的大部分专业课都会默认你掌握各种环境(C、C++、python、java)的配置方法和 linux 命令行的基本使用,这些方法只在计算机专业有一个 2 星期的专业实践进行简单的教授——而且大部分时候并不会手把手教你。
- 计算机网络的授课内容是各种协议的介绍、原理分析、性能评估,实验则是用 C++实现这些协议的功能,但是你在课堂上并没有学习过 C++的网络编程,也没有学习过协议的实现细节。
- 数据库系统的课程会要求你编写一个带有前端的数据库应用程序,但并不会告诉你如何处理 gui 和后端的交互,也不会告诉你如何使用某种语言的 sql 库。
- 在面试的时候,面试官会详细的拷问你 java 虚拟机、springboot 框架,mysql 乃至于 nosql 数据库的底层实现,这些可能你听都没听过。
- 在实习的时候,你需要迅速阅读大量别人的代码,分析数据集的格式,理解模型的架构,并且用简练的语言向你的导师汇报。机器学习与模式识别中取得高分并无助于你完成这些任务。
- 与工大水平相当或更高的高校的人工智能专业的申请者通常具有 ccf-a/b 类会议发表的论文。
- 大厂的暑期实习期待你具有实习经验,是的,实习也需要实习经验。
总而言之,这些不是老师教学的问题,计算机的实践属性就决定了课堂不可能教会你编程,配置环境,使用工具,解决问题的能力,这些能力只能通过自学获得。