跳转至

版权声明

本项目为 2023-2024 年夏季学期清华大学计算机系开设的《程序设计训练(Rust)》课程的文档。 所有内容(包括文档、代码等)未经作者授权,禁止用作任何其他用途,包括且不限于在其他课程或者其他学校中使用。

如需使用授权,可通过 hanwentao at tsinghua dot edu dot cn 联系作者。作者保留一切追究侵权责任的权利。

基本信息

  • 课程名:程序设计训练
  • 课程号:30240522-3
  • 学期:2023—2024 学年度夏季学期
  • 主讲教师:韩文弢
  • 助教团队:陈晟祺陈嘉杰、张铭哲
  • 课程介绍:Rust 是一种通用、编译型编程语言,其设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的程序设计风格。Rust 的主要设计目标是使设计大型的互联网客户端和服务器的任务变得更容易,因此更加强调安全性、存储器配置、以及并发处理等方面的特性,能高效、便捷、安全地开发系统软件,对本专业后续课程及工程实践具有重要作用。本课堂将详细讲解 Rust 语言,着重讲解 Rust 设计中比较有特色的所有权、生命周期、模式匹配、函数式编程、泛型与特型等方面,使学生理解设计原因,掌握正确的使用方法,并通过实验进行实践。

课程大纲

  1. 课程介绍基本语法
  2. 所有权与结构化数据
  3. 标准库
  4. 泛型、特型与生命周期
  5. 项目管理与常用库
  6. 并发编程
  7. 输入输出与异步编程
  8. 高级特性与编程语言综述

  9. 第一次习题课

  10. Effective Rust
  11. 第二次习题课

教学日历

周次 周一 周二 周三 周四 周五
1 07-01
教学:课程介绍与基本语法
07-03
教学:所有权与结构化数据
任务发布:Wordle 游戏
07-04
教学:标准库
2 07-08
教学:泛型、特型与生命周期
07-09
特邀报告:MoonBit 编程语言
07-10
教学:项目管理与常用库
07-11
教学:并发编程
07-12
任务检查:Wordle 游戏
3 07-15
教学:输入输出与异步编程
任务发布:评测系统
07-16
交流:习题课
任务检查:Wordle 游戏(MoonBit 版本)
07-17
扩展教学:Effective Rust
4 07-22
交流:习题课
07-24
教学:高级特性与编程语言综述
07-26
任务检查:评测系统

作业与评分

本课程的分数构成为:小作业 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\%\)

参考资料