Programming Languages普通证书 签名认证

编程语言

关注 (2294) 学过 (45) 写点评 (15) 晒证书

Programming Languages

8.9 (15人)

  • 知识量:9.9
  • 教师参与:9.8
  • 趣味性:9.7
  • 课程设计:9.8

难度:一般

开始时间:2014-10-02

持续时间:10.0周/每周8.0-16.0小时

去上课

你可能感兴趣换一换

本课程旨在研究编程语言的基本概念,重点研究函数式编程的技巧和裨益。使用ML、Racket、和Ruby等编程语言,从中体会如何整合语言片段,而非简单组合在一起。获得自学新语言所需的新的软件技巧和概念。

课程概述
学习各种编程语言的基础概念。采用函数编程,并与面向对象编程进行对比。通过编写程序及三种不同编程语言的学习,认识设计及运用程序语言的关键问题,例如模块化问题、静态和动态类型互补优势的问题等。这门课程不是纯理论课,也不单讲编程细节——它会让你有一个框架去了解如何有效地运用语言结构,以及如何设计出正确且流畅的程序。对比起使用单种语言的特定语法,使用不同的编程语言能让你学会更深入地思考。学习如何在任何语言环境中编写出健壮、可复用、可组合以及流畅的程序,是函数编程的重点。

课程大纲
注:以往教学中,约一半的学生反映每周8-12小时的学习量估算比较准确,而另外一半中有大多数学生则反映需花费更多时间——每周15小时或以上来完成课程。学习量对于不同人来说自然有别,这取决于各人的知识背景。请务必查看以下建议背景知识。

课程标题(其中大部分课程在你参加本课程前对你来说没有多大意义):

  • 语法、语义、习语、库和工具
  • ML语言(绑定、条件句、记录、函数)
  • 递归函数和递归类型
  • 无变异的优点
  • 代数数据类型,模式匹配
  • 尾递归
  • 第一级函数和函数闭包
  • 词法作用域
  • 柯里化
  • 语法糖
  • 等价性和效果
  • 参数化多态性和容器类型
  • 类型推断
  • 抽象类型和模块
  • Racket语言
  • 动态与静态类型
  • 惰性、数据流和记忆化
  • 实现语言,尤其是高阶函数
  • 宏命令
  • Eval
  • Ruby语言
  • 面向对象编程是动态分配
  • 纯面向对象
  • 实现动态分配
  • 多重继承、接口和混合
  • OOP与功能分解和可扩展性
  • 记录、函数和对象的子类型化
  • 子类型化
  • 基于类的子类型化
  • 子类型化与参数化多态性;有界多态性


先修要求
这门课程需要学生们熟悉大部分的编程入门课程——这不是一门编程入门课程。然而,它也不是一门特别高级的课程——具备良好的编程基础就能够学习本课程。学生应该掌握变量、条件句、数组、链表、堆栈及递归(本课程中将对递归进行回顾及扩展),接口与实现之间的差异。对于一种全新的语言,学生应该是急切着想要用它来编写程序。对于稍后课程里提到的分析面向对象基本概念,我们将把它与学生们以往熟悉的Java或与其相关的语言(比如C#)做对比,将有利于对本课程的学习,但这不是完成课后作业的必需要求。

推荐阅读
课程的大部分内容为视频教程和编程练习,同时,老师的笔记也是不容错过的学习资源。

课程形式
视频短片里有简短问答环节,主要包括七项编写小程序的课后作业。编程作业会被自动评分由学生们彼此互评。评论别人的作业并接受别人对自己的评价,是一种十分宝贵的学习经验。这门课程设有期中考试和期末考试。

课程点评 写点评

综合评分:8.9难度:一般

  • 知识量:9.9
  • 教师参与:9.8
  • 趣味性:9.7
  • 课程设计:9.8
  • 干货 3
  • 讲解清楚 2
  • 作业难 1
  • 偏理论 1

精彩点评

  • tonylx86
    tonylx86 已完成

    印象最深的东西:问题的FP分解 vs OOP分解、memoziation、ML的模式匹配、Lisp宏、不变性与可变性、用thunk模拟stream、解释器的实现原理、闭包、duck typing、double dispatch模式、类型推导。。。PL背后的原理尽收眼底,总是是序员绝对不能错过的CS课。

    晒证书 Programming Languages Programming Languages
  • sonnywang
    sonnywang 已完成

    這門課開宗明義的目標就是「讓你學過之後能寫出更好的程式,而且學新的程式語言更容易」。要達到這個目標,就必須在短短的十週內學會程式語言光譜中的三種,包括極端FP的SML,中間偏FP的Racket,以及極端OOP的Ruby,等於三個禮拜就要學一個新語言,並且得有足夠的熟練程度來完成每周的作業。學習新語言的過程本身是蠻熬人的,因為每次都要從最基本的語法開始學起,然後慢慢擴展到該語言的一些特性和資料結構。每週的影片長度大概2~4個小時,負荷不能說不大。 作業則是這門課的精華,也是智力上的大挑戰。除了期中考的那個禮拜之外,每個禮拜都有作業,平均「可能」需要花5~10個小時以上才能解決,不過老實說,有時候光是了解題意就要花不少時間了,因為題目描述通常高達5~7頁密密麻麻的文字,要是不幸遇到很忙的一周,看到這樣的作業題目真的會讓人頭皮發麻啊。作業除了電腦自動批改之外,也有10%的分數是來自peer grading,目的是讓你了解別人用什麼方法和思維在解決問題,MOOCs的海量學生數目的確很容易出現神人等級的解法。不過到後來我是懶得做peer grading了,因為看別人寫的code真的很累!(錯誤的示範)

    晒证书 Programming Languages Programming Languages
  • plrthink
    plrthink 已完成

    从ml开始,到ruby结束,涉及很多编程的基本概念。课程以函数式编程为主,着重讲解了这种编程范式,最后用ruby展示了面向对象编程的主要方面。内容数量较长,难度适中。适合编程中级及中级以下的同学。 老师风格非常好,十分主动负责,经常会在论坛里回答学生的疑问。在这举一例,有一个学生在论坛里发帖说自己很努力,但还是不会做题,想放弃,老师写了满满两屏的话进行安慰,引导,以及鼓励。非常感动。 再说说学校,之前并不了解华盛顿大学,但上了couresra后才发现他们的计算机系的课都很好,真的是质量,数量都属上承。 总结来讲,课程,老师,学校都很不错,值得推荐。

    晒证书 Programming Languages Programming Languages

最新点评

  • 萌萌的卡罗
    萌萌的卡罗 在上课

    假期没有多少事情做再加上自己是个业余的码农,想提高一下自己程序语言方面的姿势水平,就跟了这门课,目前看到week3。我是个半吊子码农,各种语言都接触过,都不精通,但是我觉得这么课难度属于入门级的,上课的内容讲解清楚,作业也很好做。 不知道有没有同学也在跟这个session,如果有的话我们不妨建立一个QQ群,方便有些同学讨论问题。当然discussion forums上问问题是最好的,但是有了QQ群大家可以没事的时候闲聊嘛,哈哈哈。

    2016-08-15 17:59 0
  • dreaming_hz
    dreaming_hz 在上课

    门外码农来mark课程的,进入课程界面发现推荐emacs写东西就感觉气氛不对,完全不是自己动手写编程语言或是七天七语言那种style。。又发现一块难啃的骨头但是营养丰富~ 选课应谨慎,推荐找人带着飞,单挑估计难度会很高。

    2015-12-23 10:42 2
  • 芦苇丛
    芦苇丛 已完成

    这门课被有的人誉为coursera上的神课,确实很不错。这门课一共讲了三门语言:ML、Racket和Ruby,前两种是函数式编程语言,后一种是面向对象的编程语言。这门课的重点不是这三门语言本身,而是通过介绍它们来讲编程语言中的各种特性,很开阔眼界也非常有意思。每一周都会有很有趣的上机作业,量比较大但是除了附加题之外都不难,期中期末还有考察概念的选择题考试。这门课应该是没有优秀证书的,我得了96.7分还是普通证书……总之是一门很赞的课。

    晒证书 Programming Languages Programming Languages
    2015-07-20 23:23 0
  • vancexu
    vancexu 已完成

    鼎力推荐的好课,瞬间对华大好感爆棚。 课程内容涵盖了编程语言的方方面面;作业方面设计精巧,是那种需要努力一下才能完成的,但每次完成都感觉收获很多。 老师演示+自己动手,你学完后会: 1. 加深了你对已知概念的理解 2. 全面了解编程语言的方方面面 3. 加速新语言的学习速度和能力 4. 对编程更感兴趣

    晒证书 Programming Languages Programming Languages
    2015-01-30 17:53 0
  • Li.Jin
    Li.Jin 已完成

    只看了函数式编程的部分,对后面Ruby的部分实在无爱。

    晒证书 Programming Languages Programming Languages
    2015-01-08 17:04 0
  • _崔鹏飞_
    _崔鹏飞_ 已完成

    极好的课程,我想再上一次。 对oop和fp的同时涉及和对比是最大亮点。

    晒证书 Programming Languages Programming Languages
    2014-12-27 17:39 0
  • julyluo
    julyluo 已完成

    课程的视频量比较大,每周要花大量的时间去看视频,后面的练习题不错。 学习之后对FP,OOP有很好的理解

    晒证书 Programming Languages Programming Languages
    2014-12-23 09:38 0
  • nasdaq
    nasdaq 已完成

    相当有含金量的课程, 强烈建议希望对于编程语言编程范式有系统性了解的同学学习.

    晒证书 Programming Languages Programming Languages
    2014-12-22 13:45 0

课程笔记

写笔记
查看全部笔记 >

相关课程

京ICP证100430号    京网文[2015] 0609-239号    新出发京零字东150005号     京公网安备11010502007133号 ©2017果壳网

关于我们 新手指南