|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/programming-languages
课程评论:没有评论
课程名称:编程语言 A 部分 课程概述: 这门课程是对编程语言基本概念的介绍,着重强调函数式编程。课程使用 ML、Racket 和 Ruby 等编程语言作为工具来教授这些概念,但真正的目的在于教授如何使任何语言“融会贯通”,从而提高你在任何语言中的编程能力,以及学习新语言的能力。课程既不单纯理论化,也不仅限于具体的编程细节,而是提供一个有效使用语言构造和设计正确优雅程序的框架。通过学习不同语言,学员将能更加深入地思考,而不仅仅局限于某一语言的具体语法。函数式编程的强调对于学习如何编写稳健、可重用、可组合和优雅的程序至关重要。确实,现代语言中许多重要概念的根源都在于函数式编程。准备好以一种新颖而美丽的方式来看待软件,以及享受构建软件的乐趣吧。 课程假设学员具备一些编程经验,具体细节将在第一模块中说明。 本课程分为三个部分:A 部分、B 部分和 C 部分。由于内容难度较大,分为三个部分能够提供两个中间里程碑和在继续学习前的暂停机会。这三个部分设计为按顺序完成,并激励学员坚持学习,直到完成 C 部分。三个部分的长度并不完全相等:A 部分几乎与 B 和 C 部分的总和相当。 A 部分的第一周将提供所有三个部分的详细主题列表,但预计大多数学员在此时可能对这些主题并不了解。 课程大纲: - 名称:介绍和课程信息(首先观看) 描述:欢迎!从这里开始!了解课程及其组织方式。 - 名称:软件安装和作业 0 描述:本模块包含两个内容:(1)有关需要安装的 [特别] 软件的信息;(2)可选择的“假”作业,供学员提交以便自动评分和同伴评估,以适应整个课程的作业提交机制。可以在观看接下来的课程内容视频之前或之后完成此模块,但希望尽快安装软件,以便通过实际尝试视频中的代码变体进行学习。完成作业需要安装软件。 - 名称:第一部分和作业 1 描述:是时候深入学习了!首先仔细阅读“第一部分欢迎信息”,然后继续。 - 名称:第二部分和作业 2 描述:这一部分特别令人满意,许多思想汇聚在一起,揭示了 ML 中一个惊人优雅的基础结构。和往常一样,从欢迎阅读开始,深入材料,留出足够时间来系统地处理编程作业。 - 名称:第三部分和作业 3 -- 以及课程动机 描述:这一部分专注于高阶函数,这是函数式编程表达性和优雅性的关键特征。和往常一样,第一篇阅读材料介绍了这一部分,但深入讲座之后会更有意义。同时,不要错过我们在这一周的其他视频和作业之间添加的课程动机材料。虽然这些材料是“可选”的,但强烈推荐,以更好地理解本课程(包括 B 和 C 部分)的内容,并希望从根本上改变你对软件的看法。 - 名称:第四部分和 A 部分考试 描述:我们在此模块结束 A 部分的课程。详细说明后,我们讨论类型推导、ML 的模块系统以及计算中基本的两个计算等价性概念。没有编程作业 -- 而是有一个涵盖 A 部分所有内容的考试。最后,有一段关于 A 部分结束的简短总结视频,同时展望 B 和 C 部分 -- 这段视频在考试之后,因此不要忽略它。
Name:Introduction and Course-Wide Information (Start Here)
Description:Welcome! Start here! Learn about this course and how it's organized.
Name:Software Installation and Homework 0
Description:This module contains two things: (1) The information for the [unusual] software you need to install for Programming Languages Part A. (2) An optional "fake" homework that you can turn in for auto-grading and peer assessment to get used to the mechanics of assignment turn-in that we will use throughout the course. You can do this module either before or after watching the first few "actual course content" videos in the next module, but you will want to get the software installed soon so you can learn by actively trying out variations on the code in the videos. You will need to install the software to do the homework.
Name:Section 1 and Homework 1
Description:It's time to dive in! Start with a careful reading of the "Section 1 Welcome Message" and go from there.
Name:Section 2 and Homework 2
Description:This section is a particularly rewarding one where a lot of ideas come together to reveal a surprisingly elegant underlying structure in ML. As usual, start with the welcome reading, dive into the material, and leave plenty of time to approach the programming assignment methodically.
Name:Section 3 and Homework 3 -- and Course Motivation
Description:This section is all about higher-order functions -- the feature that gives functional programming much of its expressiveness and elegance -- and its name! As usual, the first reading below introduces you to the section, but it will make more sense once you dive in to the lectures. Also be sure not to miss the material on course motivation that we have put in a "lesson" between the other videos for this week and the homework assignment. The material is "optional" in the sense that it is not needed for the homeworks or next week's exam, but it is still very highly encouraged to better understand why the course (including Parts B and C) covers what it does and, hopefully, will change the way you look at software forever.
Name:Section 4 and Part-A Exam
Description:We finish Part A of the course with this module. As explained in more detail in the welcome message, we discuss type inference, ML's module system, and the fundamental idea in computing of two computations being equivalent. There is no programming assignment -- instead there is an exam covering all of Part A. Finally, there is a brief wrap-up video for the end of Part A that also looks ahead to Part B and Part C -- we have put it after the exam, so don't overlook it.
This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones. This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it. The course assumes some prior experience with programming, as described in more detail in the first module. The course is divided into three Coursera courses: Part A, Part B, and Part C. As explained in more detail in the first module of Part A, the overall course is a substantial amount of challenging material, so the three-part format provides two intermediate milestones and opportunities for a pause before continuing. The three parts are designed to be completed in order and set up to motivate you to continue through to the end of Part C. The three parts are not quite equal in length: Part A is almost as substantial as Part B and Part C combined. Week 1 of Part A has a more detailed list of topics for all three parts of the course, but it is expected that most course participants will not (yet!) know what all these topics mean.