斯坦福大学人工智能本科4年课程清单
这些课程旨在为人工智能和计算机科学领域的新人们提供广度与深度并重的知识。第1学年：构建你的学业基础在人工智能学位学习的第1年，你应该聚焦于学习那些构成计算机科学和现代机器学习基础的核心概念。此处，我假设你完全没有计算机科学先修经历，所以，这一年的主要精力应该花在学习软件和算法基础上，在你的整个学位学习阶段和职业生涯中都将会需要这些基础知识。你应该聚焦的课程包括：程序设计基础（Programming Fundamentals）：介绍面向对象程序设计及数据结构（集合、图等）。人工智能从业者需要有扎实的软件工程技能。相关课程代码：CS 106B。计算机系统导论（Introduction to Computer Systems）：讲授从低层来角度来看计算机科学系统是如何设计和构成的。其中，重点在于学习软件编译过程，当你运行程序时会发生什么，在内存中程序是如何组织的等。相关课程代码：CS 107。算法（Algorithms）：涵盖广泛使用的计算机科学算法后面的数学和理论，比如广度优先遍历、动态规划，以及如何分析那些算法的内存和运行时特点。相关课程代码：CS 161。概率论（Probability Theory）：概率统计是许多机器学习算法的核心， 学习如何解释和分析数据对于任何机器学习或大数据科学的领域来说 ，都是至关重要的。相关课程代码：CS 109。线性代数（Linear Algebra）：涵盖如何运用矩阵和向量，解线性方程，应用最小二乘法。这些数学基础知识在机器学习领域都被广泛使用。相关课程代码：EE 103。多维微积分（Multi-dimensional Calculus）：你应该能轻松地解得函数梯度，因为这是诸如反向传播算法之类的现代深度学习主力算法的核心技术。相关课程代码：工程向量微积分。第二年：探索领域，开发系统知识 人工智能本科二年级学生的重点应该是让自己了解人工智能的一般原理，已经解决的问题是什么以及是如何解决的。此外，你应该继续理解与模型构建相关的计算机系统，并实践软件工程和设计原则。为此，建议学习以下课程：人工智能导论（Introduction to Artificial Intelligence）：涵盖了不同的人工智能领域的广泛概述，如搜索、游戏、逻辑、图形模型、机器学习和这些算法的应用。这样的课程应该为从符号逻辑到统计技术等方法的思想演变提供历史背景。相关课程：CS 221。编译器（Compilers）：涵盖编译器背后的设计和理论，理想情况下强调从头构建一个完整的编译器。编译器是你编写的每一个程序的核心，即使对人工智能从业者来说，理解它们的工作原理也是很重要的，这样你才能成为有能力的工程师。这样的课程将让你很好地接触到如何构建一个复杂的软件系统，着重于模块化的、经过文档化和测试的、架构良好的组件。除此之外，如果你对追求应用于语言理解的人工智能感兴趣，编译器的设计和传统自然语言处理堆栈之间的相似之处是不可思议的。相关课程：CS 143。数据库导论（Introduction to Databases）：涵盖数据库管理系统背后的原理，重点诸如关系数据模型、索引、模式和事务等部分。任何现代数据科学家或机器学习工程师都必须在某种程度上与数据库交互，因此了解它们的组织架构方式至关重要。相关课程：CS 145。并行计算（Parallel Computing）：并行计算平台构成了当今许多平台和技术的核心，从 Apache Spark 到 GPU 等硬件。有关并行计算的课程应该介绍这些系统背后的思想，以便你更熟练地有效地使用它们。相关课程：CS 149。操作系统（Operating Systems）：如果你想真正擅长系统编程，成为一个更熟练的工程师，那就去上一门操作系统课程，在这门课程中，你必须从头开始构建一个操作系统。您不仅将学习如何设计操作系统，还将学习如何成为一名精通Debug代码的程序员。在未来的人工智能职业中，这些基本技能将是无价的。相关课程：CS 140。第三年：进阶课程深度挖掘在第三年，你应该专注于深入学习机器学习以及统计原理的特定领域应用，包括自然语言处理、大数据分析和计算机视觉。以下是一些推荐的课程：机器学习（Machine Learning）：涵盖机器学习的原则，包括监督和非监督学习和模型训练概念，如偏方差权衡、正则化和模型选择。一定要学习这些理论并把它们学好，因为人工智能从业者每天都在使用它们。相关课程：CS 229。凸优化（Convex Optimization）：涵盖解决凸优化问题背后的思想与应用到统计、机器学习、信号处理和其他领域。虽然现在许多模型使用非凸目标，但这有助于理解可处理优化问题背后的形式。相关课程：EE 364A。概率图形模型（Probabilistic Graphical Models）：涵盖图形模型范式，它允许对随机变量的大量集合进行概率建模。计算机视觉和自然语言处理等各种应用中的许多问题都可以用图形模型来表达，因此了解这些思想是有帮助的。相关课程：CS 228。数据挖掘（Data Mining）：涵盖如何处理大数据集的技术和方法，尤其侧重于推荐系统、聚类和大规模监督机器学习等应用领域。鉴于每天都会产生大量新数据，人工智能从业者必须适应大规模操作和分析数据，特别是通过使用 Spark 这样的现代工具包。相关课程：CS 246。自然语言处理（Natural Language Processing）：介绍让机器理解文本数据背后的理论和实践。这样的课程应该概述诸如解析和命名实体识别之类的传统自然语言处理中的任务，并讲授如何使用诸如深度学习之类的技术来解决这些任务。相关课程：CS 224N。用于计算机视觉的卷积神经网络（Convolutional Neural Networks for Computer Vision）：涵盖了现代深度学习体系结构背后的理论，尤其是与构建计算机视觉模型有关的理论。在当今的人工智能领域中，想要获得成功，拥有扎实的神经网络基础至关重要。相关课程：CS 231N。第四年：实践经验至关重要第四年的课程名称应该是实践、实践、再实践！在你完成你的头三年课程的时候，你对低级计算机科学和软件工程原理以及人工智能概念及其应用背后的理论已经有了深入的了解。在这一点上，你需要多花时间动动手。 找到您感兴趣的研究领域，获取现有数据集（或开发自己的数据集），然后开始构建模型。学习数据处理、假设检验和错误分析的细微差别。学习如何对模型进行故障排除。想要成为一名人工智能领域的专家，那需要将你所学到的所有原则付诸实践。下面是一些如何尽可能多实践的方法：参加项目课程：一些大学会开设一些课程，在这些课程中，你可以在整个课程期间严格地处理一类问题中的单个项目。这些类很好，因为您有时间真正深入研究项目的所有复杂性。我想到的一个例子是 CS 341。参与研究：参与研究是获得人工智能工作中所有错综复杂的实践经验的一种十分有效的方式。主动帮助研究生完成你感兴趣的课题，或者请求老师资助你自己的课题！通过这样做，你会很好地了解从事人工智能课题时的日常工作情况。进行行业实习：如果你的时间安排允许，可以考虑从学校请假到一家人工智能公司实习。许多公司都提供 3-6 个月的实习机会，让你接触到所学原理的实际应用。如果你打算毕业后马上就进入工业界，那么没有更好的方式来体验数据科学家或机器学习工程师的工作。via - A Complete 4-Year Course Plan for an Artificial Intelligence Undergraduate Degree
《数据科学家如何选择 Python 的 IDE》是一篇2018年的文章，提到 Spyder 是 python 做科学计算的最佳 IDE，visual studio 已经变成了 R 语言在 windows 平台上最完美的 IDE，可作参考。以下节选主要内容：对于一个做数据分析计算的人来说，他的 IDE 最好能提供以下核心功能（按重要性排序）：强大的交互性查看 dataframeqtconsole目前数据科学领域的编程语言主要是以下几种（按使用人数大致排序）：RPythonmatlab/octaveJulia在这些语言中，Python 通用性最强，所以在 Python 社区里码农们的声音比较大，利用 Python 做计算的新手很容易被程序员们带偏，所以本文主要讨论 Python 的 IDE。考察的IDEpycharmRodeoSpyderjupyter notebookpycharmpycharm 并不适合所有人，至少在推出 scientific mode（科学模式）之前，pycharm 在科学计算领域根本没有 spyder 方便。但尽管有了新版，由于其是庞大的商业软件，且冷启动慢和占用内存比较大，并不适合新手及小项目。RodeoRodeo 是一个轻量级的简陋 IDE，唯一亮点在于它可以查看 dataframe。Spyderspyder 在所有针对科学计算的 IDE 里第一个使用 qtconsole，它也是第一个可以以表格形式查看 numpy 和 pandas 对象的 python IDE。方便和强大的交互特性，使其成为 python 做科学计算的最佳 IDE。jupyter notebook不建议把 jupyter notebook 作为主力开发工具，因为这容易让人养成两个坏习惯：一是每写一行代码就要运行一下然后跳到下一个 cell，导致驾驭长代码的能力越来越差；二是把所有代码放在一个文件里，不利于养成模块化和工程化的编程习惯。jupyter notebook 作为展示工具和交互工具都是很好用的，适合用来做展示或撰写报告。例外：visual studioR 语言只有一个专用 IDE——Rstudio，但是最近发现 visual studio 里面加入了针对 R 语言的数据科学模式（由 RTVS 提供），有单独的绘图 pane 与变量查看功能，默认的 layout 类似于 Rstudio，但是可以更加自由地定制。和 Rstudio 相比，visual studio 里的数据科学模式最令人眼前一亮的特点是它和 excel 的完美互动。在 Rstudio 中，要查看一个 datafarme，通常的做法是在变量列表里双击变量的名字，在 Rstudio 里以表格的形式将它打开；现在在 visual studio 中你不仅可以做到这件事，还可以在变量列表中的某个变量名右边直接点击"在excel中打开"这个选项，直接在 excel 中打开这个变量。除此之外，visual studio 作为宇宙第一 IDE，在项目资源管理、版本管理等方面都是非常方便的，这些功能在 Rtudio 里面基本没有。可以说，自从提供了数据科学模式，visual studio 已经变成了 R 语言在 windows 平台上最完美的 IDE。最后给 R IDE 一个排名Visual StudioEmacsRstudioVSCode其他IDE相关文章2019年PYPL榜单发布，编程语言、IDE与数据库市场如何？编程界十大顶级IDE延伸阅读这篇关于数据科学开发环境设置的文章（The Definitive Data Scientist Environment Setup）详细介绍如何在自己的计算机上，安装各种软件，设置一个数据科学环境。主要观点是：A NVIDIA GPU of at least 4GB of RAM.Avoid Apple MacBooks.Ubuntu LTS.Python.Miniconda.Jupyter.PyCharm.既是推荐WinPython 是一个免费的、开源的、可移植的Python编程语言的发行版，适用于科学和教育用途。Anaconda 是一个适用于科学计算的 Python 集成开发环境。JupyterLab 是广受欢迎的 Jupyter Notebook新界面，允许在基于单元格的组织中逐步可视化数据。