【教育】斯坦福大学——人工智能本科4年课程清单
大数据文摘出品 编译:笪洁琼
相信每个入行人工智能的老手,对自己过往的几年学习生涯都或多或少会有一些遗憾:如果我当年先从基本概念入手就好了,如果我当年把核心算法吃的更透一点就好了……
最近,一位在行业内工作了几年的斯坦福人工智能”师兄“就根据自己的工作和学习经验,为入学的师弟师妹们送出了一份大礼:人工智能的本科4年课程清单,希望想要了解人工智能的新生能够靠着这份指路图,少走弯路。
这位大方的学长名叫MihailEric,本人也是一位妥妥的“学霸”。在斯坦福大学的NLP研究组里,与ChristopherManning,PercyLiang,ChristopherPotts(三位巨佬)一起做研究,度过了3年非常充实的研究时光,收获颇多。同时Eric向ACLEMNLPNLPforAIwork投稿论文,均已发表,目前正在担任ACL的审稿人,也是业内人工智能公司AlexaAI的工程师。
作为已经毕业的学长,Eric离开学校已经有一段时间了,总结了一下自己的学习和工作经历,Eric为自己的人工智能和机器学习的职业生涯,设计一个完整的4年制人工智能本科学位基础课程。这些课程是为AI和CS领域的萌新提供的,虽然是萌新定位,但Eric觉得这些课程直到今天都还在用,是基础必会的技能。
第1年,打基础假设你没有CS的经验,这一年的大部分时间应该用在CS和机器学习的核心概念和算法上,推荐的课程有:1.编程基础,这是AI从业人员必需具备的软件工程学的基本技能。课程为CS106B:
http://web.stanford.edu/class/cs106b/
2.计算机系统,这门课的重点在于计算机的基础设计和构建,尤其是学习软件编译的时候,运行一个程序会发生什么,以及程序是如何在内存中运行的。课程为CS107:
http://web.stanford.edu/class/cs107/
3.算法概论,这门课包含了计算机算法背后的数学和理论基础,比如最优搜索算法和动态编程,以及如何分析这些算法的内存和优缺点。课程为CS161:
http://web.stanford.edu/class/cs161/
4.概率论,概率论和统计学是机器学习算法中的核心,尤其是分析数据在实战里很重要。课程为CS109:
http://web.stanford.edu/class/cs109/
5.线性代数,如何计算矩阵和向量,线性方程组,最小二乘法,这些都是机器学习需要用到的数学基础。课程为EE103:
http://web.stanford.edu/class/ee103/
6.多维微积分,调试函数的梯度,反向传播以及机器学习,这些都是经常用到的。课程为向量微积分(工程师):
https://www.coursera.org/learn/vector-calculus-engineers
第2年,从系统的基础知识中开始慢慢探索AI本科的第二年,至少要明白人工智能的一些原理,应该用什么样的理论去解决问题,还需要加强对计算机系统运行的理解。1.人工智能概论,这门课包括了人工智能领域所运用的研究,比如搜索,游戏,逻辑以及图像还有机器学习算法的应用。课程CS221:
https://stanford-cs221.github.io/spring2020/
2.编译器,主要是讲编译器背后的设计和理论,你学了之后,至少应该了解一个编译器是如何构建的,还有编译器的模块化组件,也需要了解。如果你对语义识别感兴趣,可以好好琢磨一下编译器的设计和传统的自然语言处理堆栈之间的相似之处,非常有趣。课程CS143:
http://web.stanford.edu/class/cs143/
3.数据库原理,主要讲数据库管理系统背后的原则,比如关系数据模型、索引、模式等主题,但凡你想成为数据专家或者机器学习工程师,就必须要懂得数据库的原理。课程CS145:
https://cs145-fa19.github.io/
4.并行计算,并行计算这门课会讲ApacheSpark到GPU这些系统背后的原理,课程CS149:
http://cs149.stanford.edu/fall19/
5.操作系统,你如果想要擅长系统编程,就一定要上这门课,这门课是讲如何从头开始搭建一个操作系统,不仅需要设计系统,还需要明白如何调试和代码管理。如果你不明白,你手下的人敲完:sudorm-rf/*就撤了,你该如何拯救你的代码?课程CS140:
http://web.stanford.edu/~ouster/cgi-bin/cs140
第3年,开启提升课程这个时候应该开始学高级课程,开始NLP,BA,CV这些方向的研究,
1.机器学习,监督学习和模型训练的概念,比如偏差、方差,正则化以及模型选择,这些内容看上去简单,实际上每个AI从业者天天都在用的。课程CS229:
http://cs229.stanford.edu/
2.凸优化,这门课运用很广,比如统计学,机器学习,信号处理和其它使用凸优化的领域,虽然现在有不少问题都是非凸化的,但是你最好还是要懂背后的逻辑。课程EE364A:
http://web.stanford.edu/class/ee364a/
3.概率图模型,像CV和NLP就会经常用到,所以还是需要了解。课程CS228:
https://cs.stanford.edu/~ermon/cs228/index.html
4.数据挖掘,大数据与数据挖掘,这门课涵盖了处理大型数据集的技术方法,会运用到推荐算法、聚类以及大规模的数据集计算与分析,要知道每天产生的数量还是比较大的。课程CS246:
http://web.stanford.edu/class/cs246/
5.NLP,自然语言处理,让机器懂得文本数据的理论和时间,而且还会在这门课里学到传统自然语言处理,老师会教如何用深度学习技术来处理这些。课程CS224N:
http://web.stanford.edu/class/cs224n/
6.基于CV的卷积神经网络,基本包含了深度学习背后的理论,比如CV模型就经常运用,只要学过人工智能课程的人,没错,是来自李飞飞教授的CS231N吧。课程CS231N:
http://cs231n.stanford.edu/
第4年,同学你该开始打比赛了经过前面3年课程的训练,你应该对计算机系统和人工智能概念、应用有了清楚的理解,找到你比较感兴趣的方向,拿起数据集,就要开始自己跑模型,做数据分析,调参还有解决Bug。想要成为一个真正的人工智能专家,不仅得学,还得上手练。
1.做研究项目,有的学校会提供这类课程,在这门课里,你需要深入研究整个项目的情况。课程CS341:
http://web.stanford.edu/class/cs341/
2.参加课题研究,主动去找研究生学长学姐,做他们的助理,将基础知识再过一遍,也可以选择自己开一个课题项目,进行研究,主要是让你有一个项目经验。
3.大厂实习,如果你要是时间管理的好,可以考虑在课余时间去AI公司实习,一般大厂都有这种3-6个月的实习机会,在实习里,不仅让你了解书本上的基础知识,还能使用基础知识进行落地的运用,这种应该算比较好的实战机会了。
以上就是作为一个人工智能从业者的斯坦福毕业生Eric,送给AI萌新的4年规划安排,如果你觉得上面的课程比较难,可以适当调整,当然也欢迎你与文摘菌分享你的学习之路。
就像歌词所说“一代人终将老去,但总有人正年轻。“AI之路任重且道远,不管是不是萌新,只要你还愿意学习,就一直在路上,加油!!!
参考素材:
https://www.mihaileric.com/posts/complete-artificial-intelligence-undergraduate-course-plan/
荐:
【中国风动漫】除了《哪吒》,这些良心国产动画也应该被更多人知道!人工智能课程主页
课程简介
本课是面向所有专业本科生的人工智能普及化教学。人工智能旨在理解智能行为的潜在机理、构建相应人工智能模型,实现特定智能任务的人工系统。本课程对人工智能领域作一个入门介绍,包括一些典型的人工智能应用的原理、模型和算法。本课程包括以下几方面内容:人工智能发展历史概述,用状态空间搜索来表示和求解人工智能问题,启发式算法,连接机制,以及一些特定的人工智能问题譬如视觉,音频、自然语言处理和群体智能等。通过本课程的学习,使学生了解人工智能和专家系统的基本概念,掌握人工智能的基本原理和方法,启发学生对人工智能的兴趣,培养知识创新和技术创新能力。培养学生应用人工智能技术提高分析和解决较复杂问题的能力。
欢迎对网络方向的科研和技术感兴趣的同学加入我们实验室!
人工智能课程大纲(网络专业)
集美大学人工智能课程大纲(网络专业)课程性质:专业选修课
课程学时:32(理论)+16(实验)
适用专业:网络工程
GitHubRepo:https://github.com/happyfaye/AIforJmuNet
一、课程的性质和教学目标课程性质人工智能是计算机科学中的重要内容,已经成为计算机技术发展以及许多高新技术产品中的核心技术。由于人工智能是模拟人类智能解决问题,几乎在所有领域都具有非常广泛的应用。《人工智能导论》是网络工程专业本科生的一门专业选修课程。本课程主要介绍人工智能问题求解的一般性原理和基本思想以及一些前沿内容,为学生提供最基本的人工智能技术和有关问题的入门性知识,为进一步学习和研究人工智能理论与应用奠定基础。
教学目标了解人工智能的特点、主要研究领域、研究历史及未来发展动向。掌握人工智能的基本概念、基本原理和基本方法。了解应用人工智能技术解决实际问题的范例。该课程的目标是把握计算机科学与技术的发展趋势,熟悉本专业的前沿知识和研究热点。该课程讲述了人工智能的发展简史、人工智能研究的基本内容和主要研究领域、人工智能的研究热点包括遗传算法、人工神经网络及其应用,机器学习,深度学习等。要求学生掌握基本创新方法,能够针对创新点开展切实有效的理论和应用研究。学生通过该课程的学习能够了解基本的人工智能新技术和有关问题求解的创新方法;课程要求完成启发算法应用实验、遗传算法应用实验、基于人工智能应用的团队项目等自主型实验项目,学生通过实验,能够发挥主动性,研究探讨人工智能系统的运行和实现过程,提出思路并积极验证和探索自己的思路,从而更好的掌握知识,培养学生的理论联系实际能力和创新能力,逐步培养他们发现问题、提出问题、分析问题和解决问题的能力。
课程支撑的毕业要求及其指标点该课程支撑以下毕业要求和具体细分指标点:
毕业要求3设计/开发解决方案:能够设计针对复杂工程问题的解决方案,设计满足特定需求的系统、单元(部件)或工艺流程,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。支撑指标点3-5:具备积极的创新思维和敏锐的创新意识,善于发现科学研究和工程应用中的创新点,掌握基本创新方法。
毕业要求5使用现代工具:能够针对复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性。支撑指标点5-4:能够掌握理论分析工具,从原理角度实现对工程问题的分析和预测,并在此过程中理解解决工程问题中的各种局限性。
二、课程教学方法设计本课程以课堂教学为主,结合课内实验与课外自学、课堂讨论、团队项目。
课堂教学主要讲解基本原理,结合人工智能最新前沿技术的相关介绍,辅助以最新的视频资料,使同学们对人工智能课程的各个章节产生兴趣,从而促进学习热情,在之后的理论教学中能更好地理解技术的先进性与实用性。要求学生在课内学习的基础上,自己完成网络资料与科技文献的检索工作,针对感兴趣的章节进行自主学习,加深加强课堂理论教学,并提高自身的自学能力。
团队项目要求学生能够运用课堂知识,在互相分工配合的基础上,进行适当的创新,运用人工智能的理论知识来解决一些实际的问题。团队项目内容一般以实际生产实践中所遇到的问题为主,通过该方式可有效的提升学生学以致用的能力。
三、课程教学内容及学时分配1.理论教学安排序号章节或知识模块教学内容学时分配能力培养要求素质培养要求学生任务(自学要求)学生任务(讨论)1绪论1.人工智能的概念;2.人工智能的发展简史;3.人工智能研究的基本内容;4.人工智能的主要研究领域2了解人工智能研究的特点、内容、发展历史及未来,增加对人工智能学科的认识。把握计算机科学与技术的发展趋势。了解人工智能研究的基本内容和主要研究领域,开阔学生思路,为以后学习和应用人工智能奠定基础。熟悉本专业的前沿知识和研究热点。课前完成预习,课后查阅最新人工智能研究点分组讨论人工智能主要研究领域2人工智能的应用场景1.人工智能的应用场景在哪?2.应用案例;3.应用场景概述2了解人工智能的应用场景,主要包括哪些方面了解人工智能的主要应用场景,为以后团队项目开发奠定基础课前完成预习,课后对实验进行理解完成AI入门实践——手写数字识别3搜索求解策略1.搜索的概念;2.状态空间的搜索策略;3.盲目的图搜索策略;4.启发式图搜索策略2搜索的基本概念、基本方法。能够针对创新点开展切实有效的理论和应用研究。掌握搜索方法的实现与基本软件设计。掌握基本创新方法。课前完成预习,课后对实验进行改进。完成启发算法求解井字棋实验4知识表示与知识图谱1.知识的特性、分类和表示;2.表示方法:一阶谓词逻辑、产生式、框架等;3.知识工程基本概念;4.知识图谱基本概念和应用2熟练掌握知识及知识表示的概念,了解知识的相对正确性、可表示性及可利用性等特性。了解知识图谱的应用。了解新技术的发展趋势。了解各种表示方法的具体表示形式、优缺点、适宜的应用对象。课前完成预习,课后对课堂内容进行复习分组讨论产生式方法的适用范围5智能计算及其应用1.遗传算法的产生与发展;2.基本遗传算法;3.基本遗传算法案例:拼图游戏;4.遗传算法的改进算法;5.粒子群算法;6.粒子群算法应用案例:音乐生成器4了解一些遗传算法的改进算法,了解遗传算法的应用实例。掌握遗传算法的基本概念和基本方法。课前完成预习,课后查阅GA的最新发展。完成遗传算法实现Hello实验6机器学习1.机器学习入门;2.机器学习主要算法;3.机器学习与数据挖掘;6掌握机器学习与数据挖掘的基本概念、主要算法、一般结构等基本内容。掌握机器学习的基本流程,了解机器学习的应用例子。课前完成预习,课后对课堂内容进行复习分组讨论团队开发选题和立项,扩展阅读(微软机器学习平台建设)7人工神经网络及其应用1.神经元与神经网络的基本概念;2.BP神经网络学习算法及其应用;3.Hopfield神经网络及其应用2了解BP神经网络学习算法及其在模式识别、软测量等工程中的应用;了解Hopfield神经网络的特性及其在联想记忆、优化等工程中的应用掌握人工神经网络的基本概念、常用人工神经网络模型。能够针对创新点开展切实有效的理论和应用研究。课前完成预习,课后对查阅最新的ANN相关技术发展。分组讨论BP-ANN在模式识别中的应用8深度学习1.深度学习入门;2.深度学习入门实践:手写数字识别;3.卷积神经网络;4.卷积神经网络实践:猫狗分类;5.深度学习进阶4了解深度学习的基本概念、应用实例;理解深度学习的主要算法掌握深度学习的基本概念和基本方法。课前完成预习,课后查阅深度学习的最新发展。分组讨论团队项目的人工智能实现原理9人工智能伦理道德与职业行为1.计算机协会道德与职业行为准则;2.电车难题;3.是否赞成:强人工智能优先弱人工智能?4.讨论:人工智能是否会替代人类2了解人工智能伦理与社会问题进一步思考人工智能与人类的关系课前完成预习,课后对课堂内容进行复习微软Github资源,北大MOOC视频10智能体与多智能体系统1.智能体与多智能体的概念与结构;2.多智能体系统的通信、协调、协作和协商2了解智能体与多智能体的概念与结构、多智能体系统的通信、协调、协作和协商等概念掌握智能体与多智能体的概念与结构、多智能体系统的通信、协调、协作和协商等概念课前完成预习,课后对查阅多智能体的最新技术资料。分组讨论最新的多智能体技术11自然语言处理及其应用1.自然语言理解的概念与发展;2.语音分析、词法分析、句法分析、语义分析基本概念与方法;3.基于语料库的大规模真实文本的处理方法、机器翻译、语音识别等应用。2了解自然语言理解的概念与发展历史。掌握大规模真实文本的处理方法、机器翻译、语音识别等应用的基本思路。掌握语音分析、词法分析、句法分析、语义分析等基本概念与思路课前完成预习,课后对查阅语音识别的最新技术资料。分组讨论最新的语音识别技术12人工智能在游戏设计中的应用1.智能游戏的概念与主要游戏智能技术;2.智能游戏设计技术;3.游戏开发工具及其应用2了解智能游戏的概念与基本原理。掌握角色的运动、追逐与躲避、路径搜索等基本设计方法掌握强化学习等在游戏中的程序设计方法。能够针对创新点开展切实有效的理论和应用研究。课前完成预习,课后对常见的游戏中人工智能技术进行总结。分组讨论常见游戏中的AI的使用点。2.课内实践教学安排序号项目名称学时类型每组人数能力培养教学要求素质培养教学要求学生任务1AI入门实践(手写数字识别)2验证1初步了解AI应用。熟悉本专业的前沿知识和研究热点。掌握手写数字识别系统的运行机制,以及基于图片识别数字的基本方法。实现基本的手写数字识别系统,并在此基础上扩展。2启发算法求解井字棋2验证1熟悉和掌握启发式搜索的定义、估价函数和算法过程。熟悉本专业的前沿知识和研究热点。能利用启发算法求解井字棋游戏,理解求解流程和搜索顺序。掌握启发式函数的编写以及各类启发式函数效果的比较。参考启发算法核心代码,以井字棋为例实现启发算法的求解程序3遗传算法求Hello2验证1熟悉和掌握遗传算法的原理、流程和编码策略。能够针对创新点开展切实有效的理论和应用研究。能利用遗传求解字符串显示问题。参考拼图游戏给出的遗传算法核心代码,用遗传算法求解字符串显示的优化问题,分析遗传算法求解不同规模字符串显示问题的算法性能4-1团队项目(确定选题)2综合4-6根据选定的题目,基于AI模型实现团队项目了解团队项目开发流程,能够给出时间进度安排,并按照进度完成自由组队,每组选定一个题目4-2团队项目(需求分析和原型设计)2综合4-6熟悉和掌握需求分析的基本要求掌握需求分析技术,搭建平台环境完成需求分析和原型设计,队员估计任务难度并学习必要的技术4-3团队项目(编码实现)2综合4-6理解团队项目所采用的人工智能模型和算法原理掌握编码规范,实现并测试系统基于人工智能模型构建系统,并对系统进行测试4-4团队项目(项目展示)2综合4-6团队项目展示团队项目展示各团队介绍项目背景及意义,实现原理,数据预处理(难点、实现方案),源码分析和项目效果展示4-5团队项目(项目改进)2综合4-6团队项目的二次迭代掌握事后分析方法对团队项目进行事后分析和总结,并思考项目的进一步改进四、考核方式及成绩评定方式课程考核强调平时成绩和最终成绩的综合方式。其中,课堂表现主要从学生是否缺勤,上课是否专心听讲、回答教师提问是否正确,课堂小测是否认真完成,以及分组讨论是否积极、正确、有独特见解等,以提高课堂教学效果,培养学生的对新技术的兴趣,并逐步培养其创新能力。作业和课内实践方面要重点培养学生的创新能力,并且提高其对新技术探索和自学习的兴趣。考核方式采用考查课形式。考核方式为项目综合实践+报告方式。要求平时作业成绩与课内讨论及课内实验(包括实验一、二、三)的最终考核占比50%,团队项目综合实践成绩的最终考核占比50%。
五、课程评价与改进对本课程的毕业要求达成度进行自我评价。主要依据学生的考核成绩和平时成绩,并保存各个成绩段的学生相关资料。教师根据评价结果,改进其教学方法和教学内容,以便更好支撑学生毕业要求的达成。
教材及参考资料教材:《人工智能导论》(第4版),王万良编著,高等教育出版社,2017
参考书:
《人工智能及其应用》(第3版),王万良编著,高等教育出版社,2016《人工智能》(第2版),史蒂芬、丹尼著,林赐译,人民邮电出版社,2018社区资源:https://github.com/Microsoft/ai-edu
【麻省理工学院】人工智能课程安排
Abstract:MITAI本课课程介绍Keywords:
人工智能课程安排本文介绍麻省理工EECS学院,AI专业的本科课程安排,相比于斯坦福,MIT给出的更直接,所以直接原文搬过来,稍微解释下大家就清楚了。
计算机科学工程学士学位BachelorofScienceinComputerScienceandEngineeringDepartmentalProgram忽略公共课程,直接来专业的,公共课程什么哲学或者艺术的,不在我们参考范围内。
DepartmentalRequirements(必须要学的)Units6.0001IntroductiontoComputerScienceProgramminginPython66.042[J]MathematicsforComputerScience126.UATOralCommunication(CI-M)19Selectoneofthefollowing(选一个):126.01IntroductiontoEECSviaRobotics6.02IntroductiontoEECSviaCommunicationsNetworks6.03IntroductiontoEECSviaMedicalTechnologyComputerScienceRequirements(CS必须的)6.004ComputationStructures126.006IntroductiontoAlgorithms126.009FundamentalsofProgramming126.031ElementsofSoftwareConstruction156.033ComputerSystemEngineering(CI-M)126.034ArtificialIntelligence12or 6.036IntroductiontoMachineLearning6.045[J]Automata,Computability,andComplexity12or 6.046[J]DesignandAnalysisofAlgorithmsAdvancedUndergraduateSubjects下面这些应该不是全部需要学习的,应该是根据自己的需要来选择,根据研究方向,选择你需要的课程
6.023[J]Fields,ForcesandFlowsinBiologicalSystems126.025[J]MedicalDeviceDesign(CI-M)126.035ComputerLanguageEngineering126.047ComputationalBiology:Genomes,Networks,Evolution126.061IntroductiontoElectricPowerSystems126.101IntroductoryAnalogElectronicsLaboratory(CI-M)126.111IntroductoryDigitalSystemsLaboratory126.115MicrocomputerProjectLaboratory(CI-M)126.131PowerElectronicsLaboratory(CI-M)126.172PerformanceEngineeringofSoftwareSystems186.175ConstructiveComputerArchitecture126.301Solid-StateCircuits126.302FeedbackSystemDesign126.602FundamentalsofPhotonics126.701IntroductiontoNanoelectronics126.717[J]DesignandFabricationofMicroelectromechanicalSystems126.801MachineVision126.802[J]FoundationsofComputationalandSystemsBiology126.803TheHumanIntelligenceEnterprise126.804[J]ComputationalCognitiveScience126.806AdvancedNaturalLanguageProcessing126.813UserInterfaceDesignandImplementation126.814DatabaseSystems126.815DigitalandComputationalPhotography126.816MulticoreProgramming126.819AdvancesinComputerVision126.837ComputerGraphics126.905Large-scaleSymbolicSystems12IndependentInquirySubjects6.035ComputerLanguageEngineering126.047ComputationalBiology:Genomes,Networks,Evolution126.100ElectricalEngineeringandComputerScienceProject126.111IntroductoryDigitalSystemsLaboratory126.1151MicrocomputerProjectLaboratory-IndependentInquiry(CI-M)156.129[J]BiologicalCircuitEngineeringLaboratory(CI-M)126.1311PowerElectronicsLaboratory-IndependentInquiry(CI-M)156.141[J]Robotics:ScienceandSystems(CI-M)126.161ModernOpticsProjectLaboratory(CI-M)126.163StrobeProjectLaboratory(CI-M)126.170SoftwareStudio126.172PerformanceEngineeringofSoftwareSystems186.182PsychoacousticsProjectLaboratory(CI-M)126.805[J]FoundationsofInformationPolicy(CI-M)126.806AdvancedNaturalLanguageProcessing126.811[J]PrinciplesandPracticeofAssistiveTechnology126.819AdvancesinComputerVision126.905Large-scaleSymbolicSystems12MIT很讲究的一点是把你的打怪升级图贴出来了
以及一张表
总结本文只列出了MIT本科CS专业(包含AI的部分的相关课程,供自学人员参考)参考http://catalog.mit.edu/degree-charts/computer-science-engineering-course-6-3/