Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >UC Berkeley EECS系是如何培养计算机学生的

UC Berkeley EECS系是如何培养计算机学生的

作者头像
陆道峰
发布于 2020-06-17 09:18:05
发布于 2020-06-17 09:18:05
3K0
举报

加州大学伯克利分校电子工程和计算机科学系(EECS)是世界知名的院系,计算机领域在2020 USNews排名第一[1]。EECS的使命是教育创新服务社会。自创建以来,为社会培养了大批人才,诞生7位图灵奖得主。EECS认为,其成功的背后,是强大的合作传统与工业界紧密联系互助的文化

像这样的顶尖大学,本文无法面面俱到,而是从计算机专业培养入手,结合课程研究中心实验室等角度总结其培养学生的特点,为CS领域或想转行CS的小伙伴提供可借鉴的方法和参考。

课程

命名约定

课程采用编号+课程名表示,比如很出名的CS 61A: The Structure & Interpretation of Computer Programs,61A是课程的编号,字母A表示系列(下面会介绍),后面跟着名字。关于编号有如下约定:

•0xy (e.g., 16, 61, 70) - lower-division courses,默认0是省略的,表示核心课程•1xy (e.g. 105) - upper-division courses,高阶课程•15x - Computer Architecture,计算机体系结构类课程•16x - Software,软件类课程•17x - CS Theory,计算机理论类课程•18x - CS Applications,计算机应用类课程•11x - Electromagnetics/Optics,电磁学或光学类课程•12x - Information Processing and Communication,信息处理和通信类课程•13x - Physical Electronics,物理电子类课程•14x - Integrated Circuits and Embedded Systems,集成电路和嵌入式系统类课程•19x - Special Topics, Directed Studies,特殊主题课程,指导学习

不同编号序列按照如下约定:

•1xy,1开头为本科课程•2xyA is the mezzanine-level course room-shared with 1xy,和1xy课程共享教室,但内容层次更高•2xyB,研究生课程•2xyC, 2xyD...,2xy后面跟C、D...表示后续课程

从上面可以总结出,0xy是核心课程,1xy是本科课程,2xy是研究生课程。总体分为EE和CS两大类,层次分明。

0xy核心课程

核心课程:

•CS61A 计算机程序的构造和解释•CS61B 数据结构•CS61C 计算机结构•CS70 离散数学和概率论

0xy系列课程重点培养学生的计算机基础、计算机科学素养和数学能力。

1xy本科生课程

本科生CS课程:

•CS 161 计算机安全•CS 162 操作系统与系统编程•CS 164 编程语言与编译器•CS 169 软件工程•CS 170 高效算法与难题•CS 172 可计算性与复杂性•CS 174 组合数学与离散概率•CS 182 设计、可视化和理解深度神经网络•CS 186 数据库系统概论•CS 188 人工智能导论•CS 189 机器学习导论•CS C191 量子信息科学与技术

面向本科生的1xy系列课程和0xy系列核心课程有明显区别,0xy是核心基础课,1xy则针对CS不同方向开课。

2xy研究生课程

研究生CS课程:

•CS 252 研究生计算机体系结构•CS 261 计算机系统安全•CS 261A 因特网与网络安全•CS 262A 计算机系统高级主题•CS 262B 计算机系统高级主题,对262A的延续,高级话题一门课讲不完...•CS 263 编程语言设计•CS 264 编程语言实现•CS 265 编译器优化与代码生成•CS 268 计算机网络•CS 270 组合算法与数据结构•CS 285 Deep Reinforcement Learning, Decision Making, and Control•CS 286A 数据库系统导论•CS 286B 数据库系统实现•CS 288 自然语言处理•CS 289A 机器学习导论•CS 294-162 机器学习系统•CS 298-015 BAIR First-year Proseminar•CS 299 个人研究

2xy系列是面向研究生的课程,部分课程名和本科课程相同,为了区别会在前面加上Graduate(研究生)或Advanced Topics(高级主题),比如CS 252. Graduate Computer Architecture。为了培养研究生论文阅读、交流讨论等能力,还开设了研讨会课程(CS 298-015 BAIR First-year Proseminar)。

课程总结

下图是笔者总结的CS课程架构图,可以看到特点鲜明:分类合理、层次分明、层层递进。红色部分是核心课程,也是其它课程的基础,然后将课程分为软件、硬件、理论、应用等方向。有些课程本科和研究生阶段都会开设,但研究生课程偏向高级主题、注重研究。

EECS信息化程度很高,上文提到的课程都有对应的官网资源,读者可以浏览EECS Course WEB Sites[2]选择自己感兴趣的课程。

培养方案

本科

伯克利是公立大学,招收的学生数量比哈佛、斯坦福要多很多,因此对于本科生来说有三个特点:宽进严出、竞争激烈和丰富多彩。在学位上,CS方向为本科生主要提供两个选择:

•由文理学院(Letters & Science)提供的CS专业项目,毕业后授予Bachelor of Arts•由工学院(College of Engineering)提供的EECS专业项目,毕业后授予Bachelor of Science

两个学位CS课程内容是一样的,不同点在于选修课上,文理学院提供更丰富的课程选择,工学院的选修课侧重EECS领域。想修双学位可以选择前者,希望专注于计算机、STEAM选择后者,详情参考EECS/CS Program Comparison Chart[3]。

研究生

伯克利的研究生有两种,面向工业(Industry-Oriented Degree Programs)和面向研究(Research-Oriented Degree Programs),类似国内的专业/工程硕士和学术硕士。

专业硕士有两个培养方案:

1.Master of Engineering(M.Eng.):工程硕士,教授毕业后进入工业界所需的技能,重点培养学生的技术基础和领导力。主要计算机相关课程是Data Science and Systems[4]和Visual Computing and Computer Graphics[5],学制为1年。2.5th Year M.S. Program:和M.Eng.类似,不过该项目只面向UC Berkeley自己的CS本科生,和国内的本硕连读类似。

研究型硕士有三个培养方案:

1.Master of Science:学制为2年,是比较小的研究型项目,读完后可以申请博士或者进入工业界做研发。2.Doctor of Philosophy:博士项目,培养学术人才,学制本科生要读5-6年,硕士读要3-5年。3.Both (M.S./Ph.D.):硕博连读,学制5-6年。

研究型项目着重培养学生的研究能力教学能力,页面Graduate Research Program Admissions[6]详细列出了研究型CS(Computer Science)专业主要研究方向:

•Artificial Intelligence (AI)•Operating Systems & Networking (OSNT)•Database Management Systems (DBMS)•Graphics (GR)•Human-Computer Interaction (HCI)•Programming Systems (PS)•Scientific Computing (SCI)•Security (SEC)•Theory (THY)•Education (EDUC)

每个研究领域都有详细的介绍,并且列出了主要研究者、开设的课程等,方便学生了解和选择。

硬件条件

地理位置

UCB地理位置优越,地处湾区(Bay Aarea),附近比较出名的城市还有旧金山,奥克兰,硅谷等。硅谷大量的创业公司和科技公司为学生实习提供的便利。也为伯克利与工业界紧密合作提供了条件。

图书馆

伯克利图书馆系统包括三个主要图书馆、18个学科专业图书馆和11个具有特殊藏书的附属图书馆,藏书超过1000万册,北美地区排名第四。在校园里,平均每步行5分钟,都会遇到一个图书馆。

研究中心和实验室

由于EECS是两个体系,所以研究中心和实验室大方向上包括EE方向和CS方向,这里主要讲CS方向,说两个业界出名的实验室。

伯克利人工智能研究实验室(BAIR)[7],开发Caffe[8]和PyTorch[9]的大神贾扬清就来自这个实验室。该研究中心包含约30名教师和超过200名研究生、博士后。研究领域包括计算机视觉机器学习自然语言处理规划机器人。该中心开发了很多业界出名的工具,包括大数据处理框架Spark中的GraphX[10]、CycleGAN[11]等,详细页面见BAIR SOFTWARE[12]。

RISELab[13],该实验室前身是AMPLab[14],两者都是为期5年的针对特定主题的实验室。AMPLab研究周期为2011-2016,为业界贡献了Mesos[15]集群管理框架、Spark[16]大数据引擎、Alluxio[17]虚拟分布式存储等知名框架,为行业作出卓越贡献。新的5年研究项目由RISELab承担,RISELab实验室研究领域聚焦在Real-time Intelligence with Secure Explainable decisions,即开发实时、智能、安全、可解释的决策系统,围绕这一理念,RISELab已经研究开发了Ray[18]、Clipper[19]、confluo[20]等软件,并开源的。Ray已经在很多公司开始使用,国内知名科技金融公司蚂蚁金服就在使用。

伯克利EECS的研究中心非常多,这里只列举两个,详细信息请浏览EECS-Research Centers and Labs[21]。从这两个实验室可以一窥伯克利CS研究生的培养方式:学生会在导师所在实验室做研究,和工业界保持紧密的联系与合作。好的软件会和业界分享,在GitHub上开放源代码,与各界共同开发。

总结

在本科阶段,伯克利EECS很重视学生的基础知识,课程理论与实践相结合,课程的Project有难度需要编写很多代码,以培养学生的计算机科学思维为主,编程能力为辅。研究生阶段,重点培养学生的研究能力、教学能力,学生通过参加学术会议、开源项目等和学术界、工业界保持紧密的联系。

伯克利对于学生的培养方案是值得我们借鉴和学习的,但因人而异,以笔者个人经验来说,给出以下不成熟的建议:

1.在CS领域,计算机基础知识至关重要!2.对于想转专业到计算机的本科学生:

1.可以学习CS的核心课程CS 61A 61B打基础2.然后学习一门语言课(推荐Python,适合初学者)3.再学习OS、Network等课程4.最后要重视实践,多编写代码和参与开源项目5.接着去找实习在公司中锻炼自己,最后应该可以找到一个满意的工作

3.本身就是CS专业的本科生:CS专业应该具备相关知识了,这时可以根据自己感兴趣的CS课程4.工作1-3年的程序员:工作和实际编程中可以发现自己的不足,针对不足选择相关课程重点加强5.其它情况超出笔者的能力和经验了,可以结合本文自行决定

References

[1] 2020 USNews排名第一: https://www.usnews.com/best-graduate-schools/top-engineering-schools/computer-engineering-rankings [2] EECS Course WEB Sites: http://www-inst.eecs.berkeley.edu/classes-eecs.html [3] EECS/CS Program Comparison Chart: https://eecs.berkeley.edu/academics/undergraduate/eecs-cs-comparison-chart [4] Data Science and Systems: https://eecs.berkeley.edu/node/370 [5] Visual Computing and Computer Graphics: https://eecs.berkeley.edu/node/389 [6] Graduate Research Program Admissions: https://eecs.berkeley.edu/academics/graduate/research-programs/admissions [7] 伯克利人工智能研究实验室(BAIR): http://bair.berkeley.edu/ [8] Caffe: http://caffe.berkeleyvision.org/ [9] PyTorch: https://pytorch.org/ [10] GraphX: http://spark.apache.org/graphx/ [11] CycleGAN: https://junyanz.github.io/CycleGAN/ [12] BAIR SOFTWARE: https://bair.berkeley.edu/software.html [13] RISELab: https://rise.cs.berkeley.edu/ [14] AMPLab: https://amplab.cs.berkeley.edu/ [15] Mesos: http://mesos.apache.org/ [16] Spark: http://spark.apache.org/ [17] Alluxio: https://github.com/Alluxio/alluxio [18] Ray: https://github.com/ray-project/ray [19] Clipper: https://github.com/ucbrise/clipper [20] confluo: https://github.com/ucbrise/confluo [21] EECS-Research Centers and Labs: https://www2.eecs.berkeley.edu/Research/Areas/Centers/ [22] 伯克利加州大学计算机专业课程简介: https://www.zhihu.com/question/23372616 [23] 转专业在Berkeley上的CS课: https://www.1point3acres.com/bbs/thread-345582-1-1.html [24] 加州伯克利大学计算机系是如何培养计算机人才的?: http://www.sohu.com/a/308174076_453160 [25] 在加州大学伯克利分校(UC Berkeley)学习计算机是怎样的体验?: https://www.zhihu.com/question/41533899 [26] 2020最新世界大学排名: https://www.forwardpathway.com/worldranking [27] 《大学之路》 吴军: https://book.douban.com/subject/27199584/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
win10的NET Framework 3.5离线安装
win10的操作系统无法找到用户和组,无法获取管理员权限       1、使用“Win+R”快捷键或右键单击左下角,进入运行界面;输入“netplwiz”进入用户帐户设置界面。   2、选择要增加权限的账户,点击属性。   3、点击组成员,点选“管理员”。   这样就能把一般的标准帐户升级为管理员帐户了,用户可以获得使用和设置的权限。同理,想解除管理员权限,也是通过这样的步骤来完成。 ———————————————— MS酋长很早以前已经分享了《Win10离线安装.NET Framework 3.5的方法技巧》,同时分享了exe格式的.NET Framework 3.5离线安装包下载地址。但有部分网友反映安装过程中会出现错误提示安装失败,那么今天MS酋长就再分享一下cab格式的.NET Framework 3.5离线安装包下载地址,以及安装方法。
用户3519280
2023/07/06
4.3K0
win10的NET Framework 3.5离线安装
内网及外网MSSQL口令扫描渗透
在实际渗透过程中,往往通过SQL注入或者弱口令登录后台,成功获取了Webshell,但对于如何进行内网渗透相当纠结,其实在获取入口权限的情况下,通过lcx端口转发等工具,进入内网,可以通过数据库、系统账号等口令扫描来实施内网渗透。本文就介绍如何在内网中进行MSSQL口令扫描及获取服务器权限。 1.使用SQLPing扫描获取mssql口令 在SQLPing程序目录,配置好passlist.txt和userlist.txt文件,如图1所示,设置扫描的IP地址及其范围,本案例是针对内网开始地址192.100.1
企鹅号小编
2018/02/09
2.6K0
内网及外网MSSQL口令扫描渗透
Windows权限维持之账户隐藏篇
在windows操作系统中攻击者可以通过创建隐藏账户来实现权限维持的目的,由于创建的隐藏账户无法通过命令行或者图形化界面的方式被检索到,所以此类权限维持的方式极为隐蔽,本篇文章将对隐藏账户的创建方式和检索方式进行复现
Al1ex
2023/10/23
1.4K0
Windows权限维持之账户隐藏篇
Windows系统安全 | Windows中的用户和组
用户帐户是对计算机用户身份的标识,本地用户帐户、密码存在本地计算机上,只对本机有效,存储在本地安全帐户数据库 SAM 中,文件路径:C:\Windows\System32\config\SAM ,对应的进程:lsass.exe 。通过本地用户和组,可以为用户和组分配权利和权限,从而限制用户和组执行某些操作的能力。
谢公子
2022/01/13
2K0
Windows系统安全 | Windows中的用户和组
无需借助任何设备破解Win7、Win8、Win10开机密码
一想到开机密码,很多人忘记了就会采用PE,但是有时候并不是随身携带一个PE的U盘,接下来就介绍一种方法给大家,可以解决忘记密码。
Lcry
2022/11/29
1.5K0
护网问题之——Windows入侵之后权限不够怎么办
net user administrator //查看administrator账户的信息
网e渗透安全部
2024/06/07
3260
护网问题之——Windows入侵之后权限不够怎么办
Windows与网络基础:Windows用户管理
原文: https://blog.csdn.net/m0_51456787/article/details/12441231
入门笔记
2022/06/03
1.6K0
Windows与网络基础:Windows用户管理
windows上修改中文用户名导致开机显示无法登录到你的账户注销关闭弹窗正确做法
之后重新去注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-37503620-462879402-3397714388-500将注册表项ProfileImagePath 改回原来用户目录,结果重启电脑后问题依旧而且每次重启会在C:\User生成新的用户目录TEMP.用户名001之类的。导致无法解决的尴尬局面。因此后面我复现了这种情况并成功解决问题。现在我讲解一下办法。
云未归来
2025/07/22
1680
windows上修改中文用户名导致开机显示无法登录到你的账户注销关闭弹窗正确做法
[WEB安全]MSSQL/SQL Server 提权手法详解
​ Microsoft SQLServer是一个C/S模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。
李鹏华
2024/03/12
1.3K0
[WEB安全]MSSQL/SQL Server 提权手法详解
【愚公系列】2021年12月 网络工程-用户与组管理
文章目录 一、服务器系统版本介绍 二、用户管理 1.1用户概述 1.2内置账户 1.3配置文件 1.4用户管理命令 三、组管理 3.1 组概述 3.2 内置组 3.3 组管理命令 四、服务管理 ---- 一、服务器系统版本介绍 windows服务器系统:win2000 win2003 win2008 win2012 linux服务器系统:Redhat Centos 二、用户管理 1.1用户概述 每一个用户登录系统后,拥有不同的操作权限。 每个账户有自己唯一的SID(安全标识符) 用户SID:S-1-5-21
愚公搬代码
2022/12/01
4900
Windows 系统账户隐藏
黑客入侵一台主机后,一般都想办法给自己留后门,其中使用最多的就是账户隐藏技术。账户隐藏技术可谓是最隐蔽的后门,一般用户很难发现系统中隐藏账户的存在,因此危害性很大,本文就对隐藏账户这种黑客常用的技术进行复现。
LuckySec
2022/11/02
3.4K0
Windows 系统账户隐藏
windows系统 用户与组管理 (自用
KID.
2023/12/25
4360
Windows安全测试命令大全!收藏这一篇就够了!
本文系统性地整理了Windows环境下进行网络安全测试的核心命令集,涵盖从基础信息收集到高级域环境评估的完整工具链。安全工程师应当熟练掌握这些命令,并在实际工作中灵活运用,以提高渗透测试的效率和质量。
释然IT杂谈
2025/04/21
4030
Windows安全测试命令大全!收藏这一篇就够了!
提权思路
【1.能不能执行cmd就看这个命令:net user,net不行就用net1,再不行就上传一个net到可写可读目录,执行/c c:windowstempcookiesnet1.exe user
纯情
2023/04/26
1.2K0
用户和组详解
用户管理不仅仅是运维工作人员需要熟知的工作技能。由于黑客攻击涉及到权限提升,权限又和用户紧密相关,了解用户和权限就变得很重要。
阿七日记
2021/11/12
1.3K0
破解 Windows 系统密码
找到D:\system32下的sethc文件,将其重命名为sethc.bak或者其他任意名字即可
LuckySec
2022/11/02
2.4K0
破解 Windows 系统密码
系统超级管理员权限打开
Windows PowerSell (管理员)<A>系统版本不一样,可参考相应的方案进行命令。
hide
2022/12/30
2.3K0
系统超级管理员权限打开
Windows 系统指令及服务
ipconfig /all 获取ip地址 所在域 linux:ifconfig -a
安全小王子
2020/07/31
1.8K0
windows用户和组
用户账号的认证 用户账号是对计算机用户身份标识,。每个使用计算机的人,必须凭借他的用户账号密码才能够进入计算机,进而访问计算机里面的资源。在计算机中存有一个叫SAM的数据库,当用户输入账号密码之后会与SAM数据中的密码进行验证,SAM路径为:
黑白天安全
2020/04/14
3.1K0
windows用户和组
系统提示“权限不足”,如何提升权限?
是山河呀
2025/03/22
1.1K0
相关推荐
win10的NET Framework 3.5离线安装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档