231
社区成员
Introduction to compilers and interpreters
基础软件理论与实践公开课
张宏波(关注张老师🫱:https://blog.csdn.net/bobzhang1988 )
这门课的主要目的还是为了帮助国内的同学培养基础软件相关的兴趣,偏向于实践,但是为了学生将来继续深造,会讲解下背后的理论以及形式化相关的东西。难度会比哈佛,耶鲁,宾大的本科编译器课程略难一点,但不是研究生的研讨课那种形式。
课程信息官方地址:https://bobzhang.github.io/courses/
程序语言理论是计算机科学中历史最悠久的学科之一,50多年来,ACM图灵奖获奖者中大概1/3从事程序语言与编译系统的相关研究。程序语言与编译器的设计与实现体现了计算机科学中的最核心的思想和技术,并且和业界新兴的技术领域,如人工智能加速芯片、云计算、物联网都有非常重要的联系。
本课程主要讲授程序语言设计与实现中的理论和实践,相较传统编译原理课程花费比较多的篇幅在词法分析、语法分析、语法树构造等章节,这门课程会直接从 Lambda演算 切入介绍编程语言最核心的部分,但和国外的同类课程不同的是,更多的注重把理论和实践相结合。
课程内容包括Lambda演算、parital evaluation、 debruin index、 模式匹配、 类型检查、类型推导、虚拟机技术等。课程的后半段会根据需要邀请其他嘉宾来进行一些分享。
该课程主要面向对基础软件感兴趣的学生、及从事软件研发的业界同行等,该课程尽量不设前置条件,希望能培养更多学生对基础软件相关领域的兴趣,后续可能会推出一些更专业的课程。
授课的示例代码使用ReScript语言,起源于授课老师的个人作品,也是迄今国内第一个在国际范围内有一定影响力的通用编程语言。
授课的内容大部分属于作者原创,未经授权,不得转载。
Date | Topic | Slides | Example code | Recommend Reading |
---|---|---|---|---|
Week 0 | Introduction to language design and implementation | * Lec0.pdf * Lec0.pdf-站内镜像 * Lec0-中文版, by @guenchi * Lec0-中文版-站内镜像 | 代码:lec0-code.zip | * Rescript配置文档 * 课程视频(01) * 课程视频(02) * 课程适配(03) * 预习答疑 * 第一节作业提交 |
Week 1 | ReScript crash course | * Lec1.pdf * Lec1.pdf-站内镜像 | 入门教程 | ReScript配置文档 * 课程视频(01) * 第二节作业提交 |
Week 2 | λ calculus | * Lec2.pdf * Lec2.pdf-站内镜像 | 代码:lec2-code.zip | * 课程适配(01) * 课程视频(02) * 课程视频(03) * 课程视频(04) * 第三节作业提交 |
Week 3 | Names,binders, De Bruijn index | * lec3.pdf | 代码:lec3-code.zip | * 课程视频(01) * 课程视频(02) * 第四节作业提交 |
Week 4 | Closure calculus | TBD | TBD | |
Week 5 | Pattern matching | TBD | TBD | |
Week 6 | Stack machine and compilation | TBD | TBD | |
Week 7 | WebAssembly | TBD | TBD | |
Week 8 | Garbage collection and memory management | TBD | TBD | |
Week 9 | Type checking | TBD | TBD | |
Week 10 | Unification, type inference, bidirectional type checking | TBD | TBD | |
Week 11 | Formal verification, Guest lectures | TBD | TBD |
这个实际的课程在哪里呢?