美文网首页QuanTalk
加州大学伯克利分校是如何培养计算机学生的

加州大学伯克利分校是如何培养计算机学生的

作者: 机器学习与系统 | 来源:发表于2019-07-25 19:22 被阅读0次
    image
    加州大学伯克利分校电子工程和计算机科学系(EECS)是世界知名的院系,计算机领域在2020 USNews排名第一。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课程架构图,可以看到特点鲜明:分类合理、层次分明、层层递进。红色部分是核心课程,也是其它课程的基础,然后将课程分为软件、硬件、理论、应用等方向。有些课程本科和研究生阶段都会开设,但研究生课程偏向高级主题、注重研究。

    ucb cs课程体系

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

    培养方案

    本科

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

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

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

    研究生

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

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

    1. Master of Engineering(M.Eng.):工程硕士,教授毕业后进入工业界所需的技能,重点培养学生的技术基础和领导力。主要计算机相关课程是Data Science and SystemsVisual Computing and Computer Graphics,学制为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详细列出了研究型CS(Computer Science)专业主要研究方向:

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

    硬件条件

    地理位置

    image

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

    图书馆

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

    研究中心和实验室

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

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

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

    伯克利EECS的研究中心非常多,这里只列举两个,详细信息请浏览EECS-Research Centers and Labs。从这两个实验室可以一窥伯克利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

    相关文章

      网友评论

        本文标题:加州大学伯克利分校是如何培养计算机学生的

        本文链接:https://www.haomeiwen.com/subject/ttekrctx.html