# CS220: Programming Principles

## 课程简介

- 所属大学：KAIST
- 先修要求：其他任何一门编程语言
- 编程语言：Rust
- 课程难度：🌟🌟🌟
- 预计学时：40 小时

来自 KAIST 的 [Jeehoon Kang](https://cp.kaist.ac.kr/jeehoon.kang) 以及他所领导的 [Concurrency and Parallelism Laboratory](https://cp.kaist.ac.kr/) 实验室似乎是 Rust 语言的忠实拥趸，csidy 之中的 [CS431](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/cs431/) 和 [CS420](https://csdiy.wiki/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS420/) 都是他们的杰作。自然，他们肯定会开发一款针对 Rust 的入门课程，也就是本课程。课程涵盖了 Rust 入门所需的绝大多数知识点。

本课没有指定官方教材，课程主页推荐采用 [Rust book](https://doc.rust-lang.org/book/) 学习，并在 [slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p) 之中规划了大致的学习线路。虽然没有公开课程教学视频，不过完善的测试系统仍然可以使这门课作为 Rust 习题课来练手，部分习题可以作为 [CS110L](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/CS110L/) 的良好补充。如果在学习完 CS110L 之后仍然觉得需要更多练习，可以选择本课程。部分习题具有一定难度，Jeehoon Kang 对使用 AI 辅助编程持有鼓励态度，但是 AI 并不完美，核心工作仍需自己完成。

## 课程资源

- 课程网站：[Github 主页](https://github.com/kaist-cp/cs220)
- 课程视频：无
- 课程教材：[slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p)
- 课程作业：[Github](https://github.com/kaist-cp/cs220/tree/main/src/assignments)

## 资源汇总

互联网上并没有公开的参考答案，也并不确定本课程主讲人是否赞同这种公开答案的行为。如果遇到困难，课程的 [ISSUE](https://github.com/kaist-cp/cs220/issues) 之中可以找到关于作业的讨论。
