「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑
最近花了一点时间研究加利福尼亚大学伯克利分校(University of California, Berkeley,简称UCB)计算机专业的课程设置,感触颇深。
UCB在计算机科学领域的杰出表现可以在各大主流计算机专业排名中得以体现。
全美大学范围内,UCB在US News 2019计算机科学排名中与麻省理工大学(MIT)、斯坦福大学(Stanford)、卡内基梅隆大学(CMU)三所顶尖大学并列第一名。
UCB的计算机科学是一个人才辈出的专业,其著名毕业生包括:
同时,UCB每年都会评选几个杰岀校友,有意思的是,Andrew Ng(吴恩达,华裔美国人,人工智能和机器学习领域国际上最权威的学者之一,2014年-2017年曾担任百度首席科学家)刚被评为2019年UCB杰出校友。
我找到了近几年杰出校友的名单:
① UCB计算机专业的杰出校友
从上述名单中可以看到,UCB的校友除了在高校任教外,很多都是一些科技公司的创始人和技术主管。
此外,UCB计算机科学专业的现任教授们也是大名鼎鼎,其中包括六位图灵奖得主。
那么,为什么UCB诞生了这么多牛人?
除了本身名气大、生源好以外,我认为,这与它的培养体系有不可或缺的关系。
我们先看看UCB计算机专业的一些特点。
出人意料的是,尽管UCB的计算机专业非常有名,但它竟然没有单独的计算机系。
在UCB,计算机系和电子工程系合在一起,叫电气工程与计算机科学系(Department of Electrical Engineering & Computer Sciences),简称:EECS。
② UCB的电气工程与计算机科学系
为什么CS(Computer Science)会和EE(Electrical Engineering)在一起呢?EECS主页上是这么解释的:
EECS不仅在学院名称上体现了学科交叉的特点,在课程培养上也有体现。
从本科来看,EECS可以用“一个学院,两种培养体系(One Department, Two Programs)”来简单概括。
这两个培养体系的最终结果是两种证书:
这两个不同的培养体系在计算机科学的内容上没有什么不同,其主要差别在于计算机科学之外的课程上。EECS主页上介绍,
简单的说,前者在工程方面更深入,后者则让学生有更大的灵活性来探索工程之外的领域。
EECS在它的主页上说:
UCB CS专业课的课程体系将课程分为lower division和upper division两种,类似国内的专业必修课和专业选修课。此外,课程体系中每一门课都有一些先修课,整个形成一个知识树(见图③)。
图③显示了课程中的一部分重要课程。包括红色的核心课程(core),蓝色的软件课程(Software),黄色的硬件课程(Hardware),绿色的理论课程(Theory),以及紫色的应用课程(Applications);
有箭头指向某一个节点课程的课程,就是这门课程的先修课:
③ CS的课程体系
Lower division:只要是CS专业的就要求学,是基础和核心,包括六门课:
Upper division:专业选修课,满一定学分即可毕业。
选修课可以分 为4个方向,包括软件,硬件,理论,及应用。
我选几个重要的列举出来:
EECS的几门核心课程的确是王牌,以CS 61A(SICP)为例,该课程被彭博社评为“全美五个最佳计算机科学课程之一”。
CS61A的SICP指的是程序构造与解释,不局限于教语言本身(实际上这门课的final会同时考到Python, Scheme, SQL)等语言。
这和自学以及培训班所开设的专门针对某一个语言的课(C++, Java, Python)等是不一样的。报名该课程的人数非常多,曾出现了1600人同上一门课的盛况!(见图④)
④ 1600人同时上的一门课:CS61A
另外一门核心课程CS 61C(Machine Structures)和直接教你编程写代码不同,这门课讲计算机的底层原理,覆盖量相当之广,从汇编语言到SDS,搭建CPU,cache,包括从伯克利诞生的RAID都有所涉猎。
由此我们可以看出,UCB的CS教育以培养学生的计算机科学思维为主,编程(coding)能力为辅。
我记得之前在计算机学院开会的时候,一个老师提出了一个问题:
我想,区别主要在这些专业核心课程上。
UCB还有一类课程,是让学生自己开课,被称为(DeCal),就是完全由学生自己组织、上课、布置任务的特殊课程(学生自己开课流程如图⑤)。
经过这么多年的发展,DeCal已经成为Berkeley课程体系的一部分,并且其课时计入总学分(一般普通课程是4学分一学期,DeCal—般为2学分),但是不参与GPA计算。
计算机的Decal通常是一些应用的课程,例如VR、游戏设计、3D建模与动画、网页开发、iOS开发、3D打印、区块链技术等。
⑤ 学生自己开课流程
最后总结一下EECS的计算机课程体系的几个特点:
UCB的EECS学院,鼓励本科生参与更多的研究工作。
UCB认为:
⑥ 本科生参与科研
UCB提供了多条路径积极鼓励学生参与科研。
对于本科生,UCB在网站上给出了一系列指导措施和具体方法:
1. 决定你感兴趣的研究领域;
• 阅读EECS研究页面,查看该部门的区域、实验室、中心和项目的完整列表。查看EECS研究项目以查看过去和当前的研究项目。此外,注意你比其他人更喜欢什么课程,这可能会帮助你决定你想在哪里做研究。
2. UCB每周会有一次的学术报告会(colloquia showcase research presentations);
• 教职工会展示他们的一些研究成果,同时借此机会来找到愿意参与该项目的学生。
3. UCB经常会有本科生研究海报会议(undergraduate research poster sessions);
• 本科生通过参加这个会议就可以了解到自己的同学正在参与的研究项目,从而加入某个项目中。
4. UCB的本科研究见习计划(The Undergraduate Research Apprentice Program, URAP);
• 该计划旨在使伯克利大学的本科生更深入地参与大学的研究生活,在每个学期开始时开放申请。图⑦显示了EECS学院部分供本科生参与的项目。
⑦ URAP计划中EECS学院部分供本科生参与的项目
5. 本科暑期工程研究项目(Summer Undergraduate Program, SUPERB);
• EECS会每年夏天会邀请一群不同的本科生在EECS教职员工和研究生的指导下进行为期9周的研究工作。很多参加该项目的本科生后来都获得了博士学位。
6. 为了鼓励科研,UCB规定“在本科参与研究可以获得一定的学分”,并为此专门设了两门课(EE199, CS199);
• 这两门课被称为有监管的独立研究课(Supervised Independent Study class),学生注册这门课需要一名教师主管和一名导师的批准。
7. 如果特别喜欢研究的本科生,还可以申请EECS荣誉计划(EECS Honors Program)。
• 该计划主要针对在研究上感兴趣且有才华的本科生。参加该计划的本科生会以从事研究为主,接受一名特别的导师指导。该计划的学生可选择完成荣誉论文,并在毕业的成绩单上得到关于荣誉学位(honors degree)的正式批注。但是关于申请和完成该计划,都有比较严格的管理规章。
UCB计算机专业的特点及其给我的启发如下:
本文整理自刘雪峰·信息思维课。
(本文为 AI大本营转载文章,转载请联系原作者)
◆
精彩推荐
◆
「2019 Python开发者日」演讲议题全揭晓!这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。
推荐阅读:
❤点击“阅读原文”,了解「2019 Python开发者日」