詹姆斯•马歇尔

英航,康奈尔大学。印第安纳大学布卢明顿分校硕士、博士。对机器人、进化计算、人工智能和认知科学有特殊兴趣。在发展机器人,神经网络和模拟计算模型的研究论文的作者;Metacat计算机类比模型的作者。SLC - 2006年

本科课程2021 - 2022

计算机科学

人工智能与社会

开放,研讨会春天

近年来,人工智能(AI)领域取得了惊人的技术进步,并开始在社会中扮演越来越广泛和重要的角色。人工智能系统现在(至少在某种程度上)可以开车了;识别人脸、语言和手势;诊断疾病;控制自主机器人;立即将文本从一种语言翻译成另一种语言;在国际象棋、围棋和其他游戏中击败世界冠军人类棋手;并实现了许多其他惊人的壮举,而这些在几十年前还只能在科幻小说中实现。这种进步导致人们对人工智能技术的未来及其对社会的潜在影响抱有过高的期望、主张、希望和恐惧。在本课程中,我们将尝试超越炒作,直面人工智能的承诺和危险。 We will consider AI from many angles, including historical, philosophical, ethical, and public-policy perspectives. We will also examine many of the technical concepts and achievements of the field in detail, as well as its many failures and setbacks. Throughout the course, students will be asked to read texts, write responses, do follow-up research, and participate in classroom discussions. This is not a programming course, and no background in computer programming is expected or required.

学院

数据结构与算法

中间,Seminar-Spring

在本课程中,我们将学习对复杂计算机程序的设计很重要的各种数据结构和算法,以及管理程序复杂性的技术。在整个课程中,我们将使用Java,一种强类型的、面向对象的编程语言。涵盖的主题将包括类型和多态性、数组、链表、堆栈、队列、优先级队列、堆、字典、平衡树和图,以及用于操作这些结构的几个重要算法。我们还将学习分析算法效率的技术。将所有这些主题联系在一起的中心主题是抽象的概念以及信息隐藏和封装的相关概念,我们将在整个课程中强调这一点。每周的实验课将通过广泛的计算机实践来加强课堂上涵盖的概念。

学院

计算机科学介绍:该计划的方式

开放、小Lecture-Fall

本讲座课程是对计算机科学和计算机编程艺术的严格介绍,使用优雅的,非常实用的,但易于学习的编程语言Python。我们将学习用计算机解决问题的原理,同时获得进一步学习该学科所需的编程技能。我们将强调抽象的力量和编写清晰、结构良好的程序的好处,从命令式编程开始,一直到面向对象的概念,如类、方法和继承。在此过程中,我们将探索算法的基本思想;计算机如何以二进制表示和操作数字、文本和其他数据(如图像和声音);布尔逻辑;条件式、迭代式和递归编程;功能抽象;文件处理;以及列表和字典等基本数据结构。 We will also learn introductory computer graphics, how to process simple user interactions via mouse and keyboard, and some principles of game design and implementation. All students will complete a final programming project of their own design. Weekly hands-on laboratory sessions will reinforce the concepts covered in class through extensive practice at the computer.

学院

编程语言原则

中间,Seminar-Fall

本课程通过研究和实现被称为解释器的计算机程序来探讨程序语言设计的原则,解释器是一种将其他程序作为输入处理的程序。一位著名的计算机科学家曾经说过,如果你不懂解释器,你仍然可以写程序——你甚至可以成为一个称职的程序员——但你不能成为一个大师。我们将从学习函数式编程开始,使用异常漂亮的递归编程语言Scheme。在熟悉Scheme和递归之后,我们将为自己设计的类似Scheme的语言开发一个解释器,逐步扩展它的功能。在此过程中,我们将熟悉lambda演算(现代编程语言理论的基础)、作用域机制、延续、惰性计算、不确定性编程以及其他主题(如果时间允许的话)。我们将使用Scheme作为我们的“元语言”,以一种精确的、分析的方式探索这些问题——类似于在自然科学中使用数学来描述现象的方式。然而,与数学相比,我们最大的优势在于,我们可以通过口译员的形式,直接在计算机上执行,来测试我们对语言的想法。

学院

以前的课程

计算机科学

仿生人工智能

中间,Seminar-Spring

人工智能(AI)领域关注的是在计算机中复制人类智能的能力。近年来,令人兴奋的人工智能新方法得到了发展,这些新方法受到了各种具有自组织、适应和学习能力的生物过程和结构的启发。这些新方法的例子包括进化计算、人工神经网络、自主机器人和群体智能。本课程将从理论和实践的角度,提供对受生物启发的人工智能的算法和技术的实际介绍,主要集中在遗传算法、神经网络、深度学习、强化学习和机器人技术。我们将使用Python编程语言实现和实验这些技术的细节,并使用模拟和真实机器人测试它们。学生将有许多机会通过开放式的、动手操作的、实验室练习和会议工作进行扩展探索。

学院

第一年的研究:阿基里斯,乌龟和不可确定的神秘

开放,不满

在本课程中,我们将通过Douglas Hofstadter的普利策获奖书延长旅程,哥德尔,埃舍尔,巴赫,这被称为“一本书的盖子之间的整个人文教育”。这本书核心的关键问题是:何种思想可能会因仅仅思考而且可能出现?很少有人会声称大脑中的个体神经元在我们体验意识的正常意义上是“有意识的”。然而,不知何故,自我意识出现,从无数的神经元灌注和分子相互作用。如何在大脑中单独无意义的物理事件,甚至是大量的,引起有意义的意识,对自我感?我们可以在机器中复制这样的过程吗?考虑到这些问题将导致我们从数学和计算机科学基础上探讨了分子生物学,艺术和音乐的广泛想法 - 以及现代认知科学和神经科学的研究前沿。一路上,我们将密切研究英格尔的不完整定理,数学逻辑和正式系统,计算限制以及人工智能的未来前景。

学院

计算机科学介绍:该计划的方式

开放,讲座

本讲座课程是对计算机科学和计算机编程艺术的严格介绍,使用优雅的,非常实用的,但易于学习的编程语言Python。我们将通过计算机来了解解决问题的原则,同时获得在学科进一步研究所需的编程技能。我们将强调抽象的力量和编写清晰、结构良好的程序的好处,从命令式编程开始,一直到面向对象的概念,如类、方法和继承。在此过程中,我们将探索算法的基本思想;计算机如何以二进制表示和操作数字、文本和其他数据(如图像和声音);布尔逻辑;条件式、迭代式和递归编程;功能抽象;文件处理;以及列表和字典等基本数据结构。 We will also learn introductory computer graphics, how to process simple user interactions via mouse and keyboard, and some principles of game design and implementation. All students will complete a final programming project of their own design. Weekly hands-on laboratory sessions will reinforce the concepts covered in class through extensive practice at the computer.

学院

功能规划简介

开放,研讨会春天

本课程将探索功能规划范例,通过将函数应用于参数来执行所有计算的程序模式。我们对功能规划的研究将充分利用递归 - 计算机科学 - 和递归定义的数据结构中最强大的概念之一,例如列表,使用奇怪的漂亮编程语言方案。方案和其他功能语言提供了强大的抽象技术,用于控制程序的复杂性和简单的数学基础,了解其正确性。首先在功能规划的框架内首先引入和研究了现代编程语言的许多最重要的概念和特征。如今,功能语言仍处于新的编程语言设计的前沿,并且功能编程的关键思想在高度平行,可扩展和分布式计算系统的开发中继续发挥核心作用。要涵盖的主题包括递归及其关闭表弟,数学诱导;归纳证明和程序正确性;映射,过滤和减少列表;Lambda表达和高阶功能;数据抽象和表示独立; infinite lists; continuations and continuation-passing style; and other topics as time permits. No prior knowledge of computer programming is necessary, though students should be comfortable with algebra and the fundamentals of mathematical thinking.

学院

编程语言原则

中间,Seminar-Fall

本课程通过研究和实现被称为解释器的计算机程序来探讨程序语言设计的原则,解释器是一种将其他程序作为输入处理的程序。一位著名的计算机科学家曾经说过,如果你不懂解释器,你仍然可以写程序——你甚至可以成为一个称职的程序员——但你不能成为一个大师。我们将从学习函数式编程开始,使用异常漂亮的递归编程语言Scheme。在熟悉Scheme和递归之后,我们将为自己设计的类似Scheme的语言开发一个解释器,逐步扩展它的功能。一路上,我们将熟悉Lambda Calculus(现代编程语言理论的基础),如果时间允许,则划分机制,延续,延迟评估,非定值性编程和其他主题。我们将使用Scheme作为我们的“元语言”,以一种精确的、分析的方式探索这些问题——类似于在自然科学中使用数学来描述现象的方式。然而,与数学相比,我们最大的优势在于,我们可以通过口译员的形式,直接在计算机上执行,来测试我们对语言的想法。

学院

量子计算

中间,Seminar-Fall

物理学家和哲学家一直在努力了解超级世界的陌生感,因为它在20世纪20年代的成立之后揭示了量子理论;但直到20世纪80年代 - 超过半个世纪的理论后 - 计算机科学家首次开始怀疑量子物理可能对计算来说可能会产生深远的影响,并且其固有的怪异可能是可能的转变为巨大的计算能力来源。This dawning realization was followed soon afterward by key theoretical and practical advances, including the discovery of several important algorithms for quantum computers that could potentially revolutionize (and disrupt) the cryptographic systems protecting practically all of our society’s electronic banking, commerce, telecommunications, and national security systems. Around the same time, researchers succeeded in building the first working quantum computers, albeit on a very small scale. Today the multidisciplinary field of quantum computing lies at the intersection of computer science, mathematics, physics, and engineering; it is one of the most active and fascinating areas in science, with potentially far-reaching consequences for the future. This course will introduce students to the theory and applications of quantum computing from the perspective of computer science. Topics to be covered will include bits and qubits, quantum logic gates and reversible computing, Deutsch’s algorithm, Grover’s search algorithm, Shor’s factoring algorithm, quantum teleportation, and applications to cryptography. No advanced background in physics, mathematics, or computer programming is necessary beyond a basic familiarity with linear algebra. We will study the quantitative, mathematical theory of quantum computing in detail but will also consider broader philosophical questions about the nature of physical reality, as well as the future of computing technologies.

学院

大自然的计算之美

开放、Lecture-Spring

本课程将探讨自然和人工系统内的出现和复杂性的概念。简单的计算规则以复杂的互动,非线性方式可以产生丰富和意外的行为模式,并且可能考虑到我们认为世界美丽或有趣的大部分内容。Taking this as our theme, we will investigate a multitude of topics, including: fractals and the Mandelbrot set, chaos theory and strange attractors, cellular automata such as Wolfram’s elementary automata and Conway’s Game of Life, self-organizing and emergent systems, formal models of computation such as Turing machines, artificial neural networks, genetic algorithms, and artificial life. The central questions motivating our study will be: How does complexity arise in Nature? Can complexity be quantified and objectively measured? Can we capture the patterns of Nature as computational rules in a computer program? What is the essence of computation, and what are its limits? Throughout the course, we will emphasize mathematical concepts and computer experimentation rather than programming, using the computer as a laboratory in which to design and run simulations of complex systems and observe their behaviors.

学院