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

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

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

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

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

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

AI 总结 AI 总结为根据点评内容自动生成,仅供参考

教学内容与质量

张昱老师的《程序语言设计与程序分析》课程分为两部分:程序语言理论和程序分析理论。课程内容复杂多样,涵盖形式化定义和推断等内容。然而,多数学生反映课程缺乏系统性,知识点零散,授课节奏较快,且缺乏具体例子,使理解变得困难。一名学生提到“对程序语言和程序分析感兴趣不如自己看书或者看其他学校的课程”。

作业与考试

作业以书面分析和少量实验为主,来自两本参考教材《PFPL》和《SPA》。5次书面作业和两个实验,难度不高,但布置时间不合理,临近期末任务量大。考试为开卷,但题量大,较难完成。主要考查对概念的理解,尤其是程序分析部分。缺少习题参考,难以高效复习。

教师授课水平

虽然点评中不少学生提到张昱老师是“水平非常高的老师”,但整体反馈显示老师对课程的关注和投入度不高,上课时的讲解也未能有效帮助学生解决理解难题。一些学生提到“整体感觉就是张老师并不是非常在乎这门课的样子”。

给分与收获

张昱老师的课程给分严格,不调分。虽然及格不难,但高分较难获得。有学生表示工作量与收获不成正比,是花费大量精力却学习有限的课程。对于非专业方向的学生和单纯为凑学分的学生来说,课程价值较低。

综合建议

整体而言,对于对程序语言和程序分析有浓厚兴趣的学生,或者已经具备代数结构、数理逻辑与函数式语言基础的学生,该课程可以尝试。但对于希望轻松完成学分以及非相关专业的学生,建议慎重考虑选课。此课程需要自学能力极强的学生积极参与,且对该方向未必产生实质性帮助。

排序 学期

评分 评分 9条点评

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

别选!!   

别选!!!

别选!!!

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

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

update: fix typo

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

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

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

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

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

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

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

最后丢一段 SICP 的前言。

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

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

2023年6月7日 07:06 (最后修改于 2023年6月7日 14:33 4 2 复制链接
UTF-8_Everywhere蓝蓝鱼不许匿名 2023年6月8日 00:06
南山南蓝蓝鱼不许匿名 2023年6月8日 02:22
立即登录,说说你的看法
匿名用户 2024秋
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:没有
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:没有

傻孩子们,快跑啊!!!

当时以为是C语言程序设计,想选这门课水学分,结果复习的时候一看课程内容,给我恶心到了。这门课知识点非常分散,PPT复习起来极不友好,对于自学简直是折磨。

建议只有那些从事相关专业的学生来选这门课,对于我这种想凑个学分的人,千万别来。

只恨当时学期初没有去上课,不然我一定会开学就把这门课退掉,一定。

2025年2月25日 07:02 2 0 复制链接
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!)

2022年3月11日 13:59 (最后修改于 2022年8月24日 13:28 2 5 复制链接
南山南学长想问几个问题,实验任务量多少?文档是不是大量英文不容易阅读……谢谢学长 2023年1月9日 09:31
farmerzhang1回复 @南山南: 没有实验;参考资料应该都是英文的,感觉看个人的英语水平,我觉得不是很难 2023年1月9日 13:07
南山南回复 @farmerzhang1: 谢谢学长 2023年1月9日 14:13
ppppp学长,请问这个课考试难度如何?给分如何?还有想问下给分的组成? 2023年3月4日 16:24
undefined_bakaoneAPI 相关的实验今年有了,但是感觉不是很 PL,链接:http://staff.ustc.edu.cn/~yuzhang/pldpa/notes/zhao-HW.pdf 2023年6月9日 13:40
立即登录,说说你的看法
匿名用户 2024秋
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:没有
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:没有

发现这课出分了,来写个评论避雷:千万别选,千万别选这课的尿性就和它的出分速度一样!!!!!

出分很慢,寒假没出,最近开学才发现出分了。

课程:前半学期为程序语言理论,后半学期为程序分析理论。内容很杂,多为形式化定义和推断,尤其是程序语言的内容,缺乏例子,理解困难。老师讲解也一般,建议还是自己看书,把程序分析的内容和例子弄懂就行。

作业

  • 5次书面作业,基本都来源于参考的两本教材,PFPLSPA,PFPL的作业官网上有答案,SPA的作业没有但不难可以自己做。
  • 两个lab,对应学期前后两部分的内容。一个是cs242 fa17 ass4,一个是tipc passes。两个lab都不难,花了一个周末做,但临近期末布置纯逆天,第一个显然可以在前半学期就布置。

考试:程序分析的内容为主,比较友好,重在理解。程序语言的题很少。

给分:平时分占比比较大,及格还是很容易,但高分可能会比较难。

收获:聊胜于无,对大部分专业的同学也没有什么帮助,对程序语言和程序分析感兴趣不如自己看书或者看其他学校的课程。

 

根据前面同学的评论这门课貌似以后都不开了,挺好的,谁喜欢吃shi呢= v =

2025年3月6日 02:28 (最后修改于 2025年3月6日 02:41 1 0 复制链接
匿名用户 2024秋
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:杀手
  • 收获大小:一般
  • 难度:困难
  • 作业:中等
  • 给分:杀手
  • 收获:一般

非专业方向别选!!!!!!!!!

叠个甲:张老师本人是一位水平非常高的老师,如果仅从教学的角度来说这门课应该是无可挑剔的。之所以给5分也是因为出于对张老师对尊重

但是这门课对需要水学分的研究生,尤其是非专业方向的我认为可以说是一点帮助也没有。

课程内容的角度来说:课程内容课程简介里面已经很详尽了,作为一门“学科基础课”,我认为不能说它对你的专业没有帮助,但是我只能说这个方向并不会像编程,计网,OS等成为你计算机方向的必备技能。至少我认为这门课对我当前的发展的作用是微乎其微的。在这个基础上,一门课里面加入如此庞杂的知识点和多种体系我认为是不太合理的。关键是很多东西并没有配套的实验,导致学习的时候知识都是浮于表面,看起来就像是在用一套套及其难懂的理论去分析程序,尽管结果大眼观察法就可以显然得出。(本质上是为了让分析过程程序化,但是实际上写代码的环节又是放在考试之后的)

学习考试的角度来说:不听课就是寄中之寄!!知识点非常庞杂,ppt和天书没有区别。想要看懂必须去啃晦涩难懂的两本外国教材。ppt也并没有和教材有一个非常显式的对应关系,而且不论是教材还是ppt,例题的详细解答都非常非常少。考试唯一的优点是全开卷,可以查电脑的那种,不过没有理解基本上也不可能会做。然后关键的点是,没有往年题,没有划考点,没有往年作业题(作业题全部是两本教材里面的原题),问助教助教也只能给出看看作业题的建议,问老师老师说下学期这门课不开了?????(不知道她想表达的是因为不再开课所以不会挂人还是不再开课所以你得好好复习不然重修的机会都没有)。关键是ppt里面部分内容甚至两本大教材里面都没有,两本大教材其中一本习题还没有答案,内容也是大几百页,完全不知道咋复习。而且这个方向网络上,至少是国内,没有任何完全对应的替代课程。真就是花最多的时间复习挨最毒的打。

总之选下来就是非常后悔。本来冲着张老师高超的教学水平和科研能力,觉得课程虽然难度很高但是蛮有趣,没想到是这样子一种情况。整体感觉就是张老师并不是非常在乎这门课的样子,还是相对有些失望的。

 

2025年2月25日 07:31 0 0 复制链接
秋裤 2021春
  • 课程难度:困难
  • 作业多少:很多
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:困难
  • 作业:很多
  • 给分:超好
  • 收获:很多

 可以试试

2021年8月28日 03:12 0 0 复制链接

张昱

教师主页: 戳这里

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

张昱老师的其他课

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