Programming Languages普通证书 签名认证

编程语言

关注 (2308) 学过 (45) 晒证书

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#)做对比,将有利于对本课程的学习,但这不是完成课后作业的必需要求。

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

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

相关课程

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

关于我们 新手指南