课程概述
版权声明
本项目为 2022-2023 年夏季学期清华大学计算机系开设的《程序设计训练(Rust)》课程的文档。 所有内容(包括文档、代码等)未经作者授权,禁止用作任何其他用途,包括且不限于在其他课程或者其他学校中使用。
如需使用授权,可通过 hanwentao at tsinghua dot edu dot cn 联系作者。作者保留一切追究侵权责任的权利。
基本信息¶
- 课程名:程序设计训练
- 课程号:30240522-3
- 学期:2022—2023 学年度夏季学期
- 主讲教师:韩文弢
- 助教团队:陈晟祺、陈嘉杰、蔡严正
- 课程介绍:Rust 是一种通用、编译型编程语言,其设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的程序设计风格。Rust 的主要设计目标是使设计大型的互联网客户端和服务器的任务变得更容易,因此更加强调安全性、存储器配置、以及并发处理等方面的特性,能高效、便捷、安全地开发系统软件,对本专业后续课程及工程实践具有重要作用。本课堂将详细讲解 Rust 语言,着重讲解 Rust 设计中比较有特色的所有权、生命周期、模式匹配、函数式编程、泛型与特型等方面,使学生理解设计原因,掌握正确的使用方法,并通过实验进行实践。
课程大纲¶
教学日历¶
周次 | 周一 | 周二 | 周三 | 周四 | 周五 |
---|---|---|---|---|---|
1 | 06-26 教学:课程介绍与基本语法 |
06-28 教学:所有权与结构化数据 任务发布:Wordle 游戏 |
06-29 教学:标准库 |
||
2 | 07-03 教学:泛型、特型与生命周期 |
07-05 教学:项目管理与常用库 |
07-06 教学:并发编程 |
07-07 任务检查:Wordle 游戏 |
|
3 | 07-10 交流:习题课 任务发布:评测系统 |
07-12 教学:I/O 与异步编程 |
07-13 教学:高级特性与编程语言综述 |
||
4 | 07-17 交流:习题课 |
07-21 任务检查:评测系统 |
作业与评分¶
本课程的分数构成为:小作业 20 分 + 大作业 80 分 + 课堂参与 5 分,总分不超过 100 分。
小作业¶
小作业在 OJ 平台 提交,共有 20 个,每个 1 分。作业的内容多为代码填空,与课程讲授内容相对应,在每次课程结束时布置,截止时间为布置时间后三天的 23:59:59。
大作业¶
大作业共有两个,每个 40 分,内容为完整项目,是对课程讲授的内容的综合应用。
课堂参与¶
包括但不限于课堂互动交流、参加课堂展示、和课程相关的额外工作。课程结束前在网络学堂按要求提交贡献记录,由教学团队酌情加分。
迟交处理¶
所有迟交作业的得分 \(S'\) 按照如下公式计算:
\[ S' = S \times \min(0.8, 0.95^D) \]
其中 \(S\) 是作业原始得分, \(D\) 是向上取整的迟交天数(即 deadline 后即记为迟交一天)。
例如,作业的 deadline 是 8/13,则 8/20 补交的作业总分将被折合为原始作业评分的 \(69.8\%\)。
参考资料¶
- 网络资源
- RUNOOB.COM 的 Rust 教程:简明的入门教程,可作为第一份学习资料
- The Rust Programming Language:Rust 官方学习文档,适合进一步入门,有中文翻译版
- The Rust Reference:Rust 官方参考手册,刨根究底时的参考资料
- The Rustlings Course:动手学习 Rust 语法的课程,动手加深印象
- CIS 198: Rust Programming:宾夕法尼亚大学的 Rust 课程,本课程的参考资料
- 参考书(电子版均可在清华大学教参服务平台上阅览)