|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/cs-algorithms-theory-machines
课程评论:没有评论
课程名称:计算机科学:算法、理论与机器 课程概述: 本课程旨在向具有基本Java编程知识的人介绍计算机科学的广泛领域。课程覆盖了《计算机科学:跨学科的方法》一书的下半部分(上半部分已在我们2018年秋季发布的Coursera课程《计算机科学:以目的为导向的编程》中讨论)。我们的目标是揭示计算的奥秘,提升学习者对于计算机科学领域深厚的知识基础和丰富历史的认识。 课程首先介绍经典算法及其性能评估的科学技术,并将这些知识应用于现代应用中。接着,我们讲解经典理论模型,探讨计算的基本问题,例如可计算性、普遍性和不可解性。课程最后部分涉及机器架构(包括机器语言编程及其与Java编程的关系)和逻辑设计(包括从零开始构建的完整CPU设计)。 课程强调应用编程、计算理论、现实计算机以及该领域的历史与演变之间的关系,包括布尔、香农、图灵、冯·诺依曼等人的贡献。 本课程的所有功能均可免费使用,完成课程后不会颁发证书。 课程大纲: 1. 课程简介:介绍《计算机科学:以目的为导向的编程》课程。 2. 排序与搜索:探讨经典算法(如二分搜索和归并排序),强调高效算法在处理大规模计算问题中的重要性。 3. 栈与队列:深入探讨栈和队列的数据结构及其实现。 4. 符号表:介绍符号表抽象和二叉搜索树这一经典数据结构。 5. 计算理论导论:探讨计算的本质和计算机的交互方式,引入形式语言和抽象机。 6. 图灵机:分析图灵在1936年发表的论文,讨论计算设备的等效计算能力及其局限性。 7. 不可解性:探讨在实际资源限制下可解决的计算问题。 8. 计算机架构:介绍计算机处理器的基本特点,了解Java代码如何执行。 9. 冯·诺依曼机器:讨论程序和数据共存于同一内存的冯·诺依曼结构及其设计原则。 10. 组合电路:从简单抽象出发,设计实现计算机处理器的电路。 11. 中央处理单元:开发一个完整的计算机处理器电路,展示计算机的工作原理。 此课程为学习计算机科学打下坚实基础,帮助学习者理解复杂的计算概念和技术。
Name:INFORMATION ABOUT LECTURES 1–10
Description:This lesson provides information about the course Computer Science: Programming with a Purpose, which is the precursor to Computer Science: Algorithms, Theory, and Machines.
Name:SORTING AND SEARCHING
Description:We introduce and study classic algorithms for two fundamental problems, in the context of realistic applications. Our message is that efficient algorithms (binary search and mergesort, in this case) are a key ingredient in addressing computational problems with scalable solutions that can handle huge instances, and that the scientific method is essential in evaluating the effectiveness of such solutions.
Name:STACKS AND QUEUES
Description:Our introduction to data structures is a careful look at the fundamental stack and queue abstractions, including performance specifications. Then we introduce the concept of linked structures and focus on their utility in developing simple, safe, clear, and efficient implementations of stacks and queues.
Name:SYMBOL TABLES
Description:The symbol table abstraction is one of the most important and useful programmer's tools, s we illustrate with several examples in this lecture. Extending the scientific approach of the previous two lectures, we introduce and study binary search trees, a classic data structure that supports efficient implementations of this abstraction.
Name:INTRODUCTION TO THE THEORY OF COMPUTING
Description:The theory of computing helps us address fundamental questions about the nature of computation while at the same time helping us better understand the ways in which we interact with the computer. In this lecture, we introduce formal languages and abstract machines, focusing on simple models that are actually widely useful in practical applications.
Name:TURING MACHINES
Description:In 1936, Alan Turing published a paper that is widely hailed as one of the most important scientific papers of the 20th century. This lecture is devoted to the two far-reaching central ideas of the paper: All computational devices have equivalent computational power, and there are limitations to that power.
Name:INTRACTABILITY
Description:As computer applications expanded, computer scientists and mathematicians realized that a refinement of Turing's ideas is needed. Which computational problems can we solve with the resource limitations that are inescapable in the real world? As described in this lecture, this question, fundamentally, remains unanswered.
Name:A COMPUTING MACHINE
Description:Every programmer needs understand the basic characteristics of the underlying computer processor being used. Fortunately, the fundamental design of computer processors has changed little since the 1960s. In this lecture, we provide insights into how your Java code actually gets its job done by introducing an imaginary computer that is similar to both the minicomputers of the 1960s and the microprocessor chips found in today's laptops and mobile devices.
Name:VON NEUMANN MACHINES
Description:Continuing our description of processor design and low-level programming, we provide context stretching back to the 1950s and discuss future implications of the von Neumann machine, where programs and data are kept in the same memory. We examine in detail the idea that we design new computers by simulating them on old ones, something that Turing's theory guarantees will always be effective.
Name:COMBINATIONAL CIRCUITS
Description:Starting with a few simple abstractions (wires that can carry on/off values and switches that can control the values carried by wires), we address in this lecture the design of the circuits that implement computer processors. We consider gates that implement simple logical functions and components for higher-level functions, such as addition. The lecture culminates with a full circuit for an arithmetic/logic unit.
Name:CENTRAL PROCESSING UNIT
Description:In this lecture, we provide the last part of our answer to the question "How does a computer work?" by developing a complete circuit for a computer processor, where every switch and wire is visible. While vastly different in scale, this circuit, from a design point of view, has many of the same characteristics as the circuits found in your computer and your phone.
This course introduces the broader discipline of computer science to people having basic familiarity with Java programming. It covers the second half of our book Computer Science: An Interdisciplinary Approach (the first half is covered in our Coursera course Computer Science: Programming with a Purpose, to be released in the fall of 2018). Our intent is to demystify computation and to build awareness about the substantial intellectual underpinnings and rich history of the field of computer science. First, we introduce classic algorithms along with scientific techniques for evaluating performance, in the context of modern applications. Next, we introduce classic theoretical models that allow us to address fundamental questions about computation, such as computability, universality, and intractability. We conclude with machine architecture (including machine-language programming and its relationship to coding in Java) and logic design (including a full CPU design built from the ground up). The course emphasizes the relationships between applications programming, the theory of computation, real computers, and the field's history and evolution, including the nature of the contributions of Boole, Shannon, Turing, von Neumann, and others. All the features of this course are available for free. No certificate will be offered upon completion.