选课类别:基础 | 教学类型:理论实验课 |
课程类别:研究生课程 | 开课单位:计算机科学与技术系 |
课程层次:本研贯通 | 学分:3.5 |
|
张昱老师的《程序语言设计与程序分析》课程分为两部分:程序语言理论和程序分析理论。课程内容复杂多样,涵盖形式化定义和推断等内容。然而,多数学生反映课程缺乏系统性,知识点零散,授课节奏较快,且缺乏具体例子,使理解变得困难。一名学生提到“对程序语言和程序分析感兴趣不如自己看书或者看其他学校的课程”。
作业以书面分析和少量实验为主,来自两本参考教材《PFPL》和《SPA》。5次书面作业和两个实验,难度不高,但布置时间不合理,临近期末任务量大。考试为开卷,但题量大,较难完成。主要考查对概念的理解,尤其是程序分析部分。缺少习题参考,难以高效复习。
虽然点评中不少学生提到张昱老师是“水平非常高的老师”,但整体反馈显示老师对课程的关注和投入度不高,上课时的讲解也未能有效帮助学生解决理解难题。一些学生提到“整体感觉就是张老师并不是非常在乎这门课的样子”。
张昱老师的课程给分严格,不调分。虽然及格不难,但高分较难获得。有学生表示工作量与收获不成正比,是花费大量精力却学习有限的课程。对于非专业方向的学生和单纯为凑学分的学生来说,课程价值较低。
整体而言,对于对程序语言和程序分析有浓厚兴趣的学生,或者已经具备代数结构、数理逻辑与函数式语言基础的学生,该课程可以尝试。但对于希望轻松完成学分以及非相关专业的学生,建议慎重考虑选课。此课程需要自学能力极强的学生积极参与,且对该方向未必产生实质性帮助。
别选!!
别选!!!
别选!!!
这门课真的太烂了, 为了凑基础课学分选这门课真是大错特错了, 完全可以选算法, 县长的计算机应用数学或者计算机系统来凑. 这门课没有个什么大纲架构, 完全是老师拼凑的各种内容在一起. 课程主页上直接给你甩一脸的链接, 一点开就是又臭又长的文档. 抱着深入理解语言的底层, 探索各种编程语言共通的本质的目的来选的这门课, 结果是完全学不到东西, 课时又长, 作业实验巨多, 而且实验要求什么的也讲不清楚. 这门课要不是学这个方向的, 没必要接触, 要想学好这门课投入的精力和收获完全不成正比, 性价比极低. 选这门课的人一共不到 20 , 是有原因的. 当然这门课给分杀手, 要不是没有其他两门基础课的高分拉一下, 基础课均分就完了. 后悔, 后悔当事人现在就是很后悔.
update: fix typo
为了凑学分选的,虽然看评课有点哈人但最后上完也没这么不堪,作业确实不多,凑学分大胆选,所以稍微往上拉一点。
上课在高新区,老师经常忘记开网课,但是课程主页上 PPT 和参考教材的 pdf 都有,其实听课也就是刷个脸。
今年先上的程序语言部分(参考教材 PFPL),再上的程序分析。程序语言部分主要是一些函数式和类型系统相关的内容,讲了几种语言系统的静态语义(类型如何确定)和动态语义(求值规则)。主要收获大概就是如何用一堆希腊文表达一个用自然语言描述起来很简单的道理。
程序分析部分(参考教材 SPA)重点是基于格(代数结构中的那个 lattice)的约束建立和求解(即,刻画每个变量执行过程中满足什么约束),和基于程序流图的过程间分析,也有一些指针分析等内容。学期初似乎还讲了 Hoare 逻辑(即分析循环不变式)这种比较形式化的内容。
考试全开卷,且基本完全不用复习,理解了概念就行,但是题量有点大,正常写应该写不完,算是延续了老师编译的风格了。
总而言之,前置要求学过代数结构、数理逻辑和一点函数式语言应该就够了。学过编译会让程序分析部分轻松不少(尤其是如果你写过一些类似常量传播优化的东西),但应该也不是必须的。
给分按照老师的惯例应该是不调分的,不过大三同学应该也没这么在意 GPA 了,所以有兴趣的可以试试。
最后丢一段 SICP 的前言。
我认为在计算机科学中保持计算的趣味是至关重要的, 这门学科在刚开始的时候是十分有趣的。 当然, 那些为此付账的客户常常感觉自己受了欺骗, 以至于我们在一段时间之后开始严肃地看待他们的抱怨, 觉得自己似乎真的有责任完美无缺地使用这些机器。 然而我并不认为我们能够做到这一点—— 我认为我们的责任是扩展这一领域, 将它引领至新的方向, 并在业余时间保持它的趣味性。 我希望计算机科学领域永远不要失去趣味性, 更重要的是, 我希望我们不要变成传教士, 不要把自己看作是圣经的推销员, 这种人在世界上已经有太多太多了。 你所知晓的计算机知识别人也能够学会, 不要以为成功实施计算的钥匙只掌握在你手上。1 你所拥有的, 也是我所期望的, 就是智慧: 只有掌握了超越机器本身的能力, 你才能够将它向前推进。
Alan J. Perlis (1922 年 4 月 1 日 - 1990 年 2 月 7 日)
傻孩子们,快跑啊!!!
当时以为是C语言程序设计,想选这门课水学分,结果复习的时候一看课程内容,给我恶心到了。这门课知识点非常分散,PPT复习起来极不友好,对于自学简直是折磨。
建议只有那些从事相关专业的学生来选这门课,对于我这种想凑个学分的人,千万别来。
只恨当时学期初没有去上课,不然我一定会开学就把这门课退掉,一定。
这门课本科生和研究生都可以选,本科生在西区上网课,研究生则是在高新区。
课程分两部分,第一部分是静态程序分析,第二部分是编程语言理论。
考试开卷,我那个时候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!)
发现这课出分了,来写个评论避雷:千万别选,千万别选。这课的尿性就和它的出分速度一样!!!!!
出分很慢,寒假没出,最近开学才发现出分了。
课程:前半学期为程序语言理论,后半学期为程序分析理论。内容很杂,多为形式化定义和推断,尤其是程序语言的内容,缺乏例子,理解困难。老师讲解也一般,建议还是自己看书,把程序分析的内容和例子弄懂就行。
作业:
考试:程序分析的内容为主,比较友好,重在理解。程序语言的题很少。
给分:平时分占比比较大,及格还是很容易,但高分可能会比较难。
收获:聊胜于无,对大部分专业的同学也没有什么帮助,对程序语言和程序分析感兴趣不如自己看书或者看其他学校的课程。
根据前面同学的评论这门课貌似以后都不开了,挺好的,谁喜欢吃shi呢= v =
非专业方向别选!!!!!!!!!
叠个甲:张老师本人是一位水平非常高的老师,如果仅从教学的角度来说这门课应该是无可挑剔的。之所以给5分也是因为出于对张老师对尊重
但是这门课对需要水学分的研究生,尤其是非专业方向的我认为可以说是一点帮助也没有。
课程内容的角度来说:课程内容课程简介里面已经很详尽了,作为一门“学科基础课”,我认为不能说它对你的专业没有帮助,但是我只能说这个方向并不会像编程,计网,OS等成为你计算机方向的必备技能。至少我认为这门课对我当前的发展的作用是微乎其微的。在这个基础上,一门课里面加入如此庞杂的知识点和多种体系我认为是不太合理的。关键是很多东西并没有配套的实验,导致学习的时候知识都是浮于表面,看起来就像是在用一套套及其难懂的理论去分析程序,尽管结果大眼观察法就可以显然得出。(本质上是为了让分析过程程序化,但是实际上写代码的环节又是放在考试之后的)
学习考试的角度来说:不听课就是寄中之寄!!知识点非常庞杂,ppt和天书没有区别。想要看懂必须去啃晦涩难懂的两本外国教材。ppt也并没有和教材有一个非常显式的对应关系,而且不论是教材还是ppt,例题的详细解答都非常非常少。考试唯一的优点是全开卷,可以查电脑的那种,不过没有理解基本上也不可能会做。然后关键的点是,没有往年题,没有划考点,没有往年作业题(作业题全部是两本教材里面的原题),问助教助教也只能给出看看作业题的建议,问老师老师说下学期这门课不开了?????(不知道她想表达的是因为不再开课所以不会挂人还是不再开课所以你得好好复习不然重修的机会都没有)。关键是ppt里面部分内容甚至两本大教材里面都没有,两本大教材其中一本习题还没有答案,内容也是大几百页,完全不知道咋复习。而且这个方向网络上,至少是国内,没有任何完全对应的替代课程。真就是花最多的时间复习挨最毒的打。
总之选下来就是非常后悔。本来冲着张老师高超的教学水平和科研能力,觉得课程虽然难度很高但是蛮有趣,没想到是这样子一种情况。整体感觉就是张老师并不是非常在乎这门课的样子,还是相对有些失望的。