程序语言设计与程序分析(张昱) 2024春 2023春 2022春 2021春  课程号:COMP5001P01
2024春 2023春 2022春 2021春  课程号:COMP5001P01
6.0(4人评价)
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
选课类别:基础 教学类型:理论实验课
课程类别:研究生课程 开课单位:计算机科学与技术系
课程层次:本研贯通   学分:3.5
简介 最后更新:

在当今“大智物移云”(大数据、智能化、物联网、移动互联网、云计算)的时代,计算无处不在,软件定义一切。程序语言作为人机间的桥梁在不断发展,以解决层出不穷的新问题;业界需要更多理解程序语言原理及实现技术的人才来为复杂系统提供可靠和高效的解决方案。

本课程作为计算机科学与技术的学科基础课,主要讲授程序语言设计和程序分析两大部分的内容。

在程序语言设计部分,通过系统介绍面向对象语言、脚本语言、函数式语言、逻辑语言、系统编程语言等不同范型程序语言的通用概念(如变量及作用域、函数、闭包、类型、内存管理、并发等)及其理论(静态语义和操作语义)和实现技术,让学生不仅知道如何编程,还能理解概念的思想本质,即建立“计算素养”,为计算提供清晰的概念思维模型。

在程序分析部分,系统介绍主流程序分析的方法论和技术,包括类型分析、格理论与不动点、数据流与控制流、程序切片、抽象解释等;结合程序结构特征,讲解区间分析、扩展和缩小(widening和narrowing) 、路径敏感性分析、过程间分析等方法。

通过本课程的学习,帮助学生构建较完整的程序语言与程序分析的知识体系,建立计算概念思维模型,为进一步开展程序语言、软件工程、软件安全、新型计算系统等领域的学术研究打下基础,在实践上培养开发大型软件工程工具的开发能力。

排序 学期

评分 评分 4条点评

woooooo 2021春
  • 课程难度:困难
  • 作业多少:很多
  • 给分好坏:杀手
  • 收获大小:没有
  • 难度:困难
  • 作业:很多
  • 给分:杀手
  • 收获:没有

别选!!   

别选!!!

别选!!!

这门课真的太烂了, 为了凑基础课学分选这门课真是大错特错了, 完全可以选算法, 县长的计算机应用数学或者计算机系统来凑. 这门课没有个什么大纲架构, 完全是老师拼凑的各种内容在一起. 课程主页上直接给你甩一脸的链接, 一点开就是又臭又长的文档. 抱着深入理解语言的底层, 探索各种编程语言共通的本质的目的来选的这门课, 结果是完全学不到东西, 课时又长, 作业实验巨多, 而且实验要求什么的也讲不清楚. 这门课要不是学这个方向的, 没必要接触, 要想学好这门课投入的精力和收获完全不成正比, 性价比极低. 选这门课的人一共不到 20 , 是有原因的. 当然这门课给分杀手, 要不是没有其他两门基础课的高分拉一下, 基础课均分就完了. 后悔, 后悔当事人现在就是很后悔.

6 0 复制链接
匿名用户 2023春
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:一般
  • 收获:一般

update: fix typo

为了凑学分选的,虽然看评课有点哈人但最后上完也没这么不堪,作业确实不多,凑学分大胆选,所以稍微往上拉一点。

上课在高新区,老师经常忘记开网课,但是课程主页上 PPT 和参考教材的 pdf 都有,其实听课也就是刷个脸。

今年先上的程序语言部分(参考教材 PFPL),再上的程序分析。程序语言部分主要是一些函数式和类型系统相关的内容,讲了几种语言系统的静态语义(类型如何确定)和动态语义(求值规则)。主要收获大概就是如何用一堆希腊文表达一个用自然语言描述起来很简单的道理。

程序分析部分(参考教材 SPA)重点是基于格(代数结构中的那个 lattice)的约束建立和求解(即,刻画每个变量执行过程中满足什么约束),和基于程序流图的过程间分析,也有一些指针分析等内容。学期初似乎还讲了 Hoare 逻辑(即分析循环不变式)这种比较形式化的内容。

考试全开卷,且基本完全不用复习,理解了概念就行,但是题量有点大,正常写应该写不完,算是延续了老师编译的风格了。

总而言之,前置要求学过代数结构、数理逻辑和一点函数式语言应该就够了。学过编译会让程序分析部分轻松不少(尤其是如果你写过一些类似常量传播优化的东西),但应该也不是必须的。

给分按照老师的惯例应该是不调分的,不过大三同学应该也没这么在意 GPA 了,所以有兴趣的可以试试。

最后丢一段 SICP 的前言。

我认为在计算机科学中保持计算的趣味是至关重要的, 这门学科在刚开始的时候是十分有趣的。 当然, 那些为此付账的客户常常感觉自己受了欺骗, 以至于我们在一段时间之后开始严肃地看待他们的抱怨, 觉得自己似乎真的有责任完美无缺地使用这些机器。 然而我并不认为我们能够做到这一点—— 我认为我们的责任是扩展这一领域, 将它引领至新的方向, 并在业余时间保持它的趣味性。 我希望计算机科学领域永远不要失去趣味性, 更重要的是, 我希望我们不要变成传教士, 不要把自己看作是圣经的推销员, 这种人在世界上已经有太多太多了。 你所知晓的计算机知识别人也能够学会, 不要以为成功实施计算的钥匙只掌握在你手上。1 你所拥有的, 也是我所期望的, 就是智慧: 只有掌握了超越机器本身的能力, 你才能够将它向前推进。

Alan J. Perlis (1922 年 4 月 1 日 - 1990 年 2 月 7 日)

(最后修改于 3 2 复制链接
UTF-8_Everywhere蓝蓝鱼不许匿名
南山南蓝蓝鱼不许匿名
立即登录,说说你的看法
farmerzhang1 2022春
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:一般
  • 收获:一般

这门课本科生和研究生都可以选,本科生在西区上网课,研究生则是在高新区。

课程分两部分,第一部分是静态程序分析,第二部分是编程语言理论。

考试开卷,我那个时候PL的部分没怎么复习,到最后没做完。

程序分析部分的参考教材是这个https://users-cs.au.dk/amoeller/spa/,老师的ppt基本都是从这里复制的。然后这个教材的配套实验一个也没做,作业基本是手动分析一些程序。考试时考了别名分析的一个算法,作业没出。

PL部分应该是参考harper的http://www.cs.cmu.edu/~rwh/pfpl/, 考试好像考了一些static和dynamic,还有lambda演算的reduction,以及lexical scope和dynamic scope。PL部分作业一点没出,实验也完全没有。

学期初被张昱老师找过去聊天,她说会有oneAPI相关的实验,不知道为什么后面也没有。感觉老师并不是很在意这门课,老师翻译的PFPL也刚出版,希望老本行PL能更重视点啊。

从学习知识的角度看,这门课并没有学到太多东西;如果是为了水学分,我认为还是可以的,这门课基本不占用太多时间(就三次作业,在本部的话可以听网课,而且还有3.5学分),给分似乎还行(我是本科生,不知道研究生的情况)

(吐槽一下,PL 明明是 theory 张老师却在课上讲了好多次 system!)

(最后修改于 2 5 复制链接
南山南学长想问几个问题,实验任务量多少?文档是不是大量英文不容易阅读……谢谢学长
farmerzhang1回复 @南山南: 没有实验;参考资料应该都是英文的,感觉看个人的英语水平,我觉得不是很难
南山南回复 @farmerzhang1: 谢谢学长
ppppp学长,请问这个课考试难度如何?给分如何?还有想问下给分的组成?
undefined_bakaoneAPI 相关的实验今年有了,但是感觉不是很 PL,链接:http://staff.ustc.edu.cn/~yuzhang/pldpa/notes/zhao-HW.pdf
立即登录,说说你的看法
秋裤 2021春
  • 课程难度:困难
  • 作业多少:很多
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:困难
  • 作业:很多
  • 给分:超好
  • 收获:很多

 可以试试

0 0 复制链接

张昱

教师主页: 戳这里

其他老师的「程序语言设计与程序分析」课

张昱老师的其他课

程序设计语言基础 10.0 (1) 2013春
量子软件前沿 10.0 (1) 2023秋 2022秋...
编译原理和技术(H) 8.0 (36) 2023秋 2022秋...
量子软件前沿 9.0 (1) 2019秋
程序设计语言理论 8.0 (1) 2020春 2018秋...
程序设计语言基础 7.0 (2) 2019春 2018春
编译原理(H) 6.7 (3) 2023秋
编译原理和技术 6.5 (11) 2021秋 2012春
量子软件前沿 2020秋 2019秋
编译原理和技术 2010春 2009春...
数据结构 2009秋 2008秋...
数据结构与数据库 2007春 2005春...
编译原理 2017秋 2016秋...
“科学与社会”研讨课 2022春 2021秋...