Merge branch 'PKUFlyingPig:master' into master

This commit is contained in:
Vertin 2024-06-13 06:28:39 +08:00 committed by GitHub
commit f9be63ba85
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 159 additions and 13 deletions

View file

@ -146,6 +146,10 @@ As a computer science student, I often hear arguments about the uselessness of m
- [MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md)
- [Harvard CS50: This is CS50x](编程入门/C/CS50.md)
#### Java
- [MIT 6.092: Introduction To Programming In Java](编程入门/Java/MIT%206.092.md)
#### Python
- [CS50P: CS50's Introduction to Programming with Python](编程入门/Python/CS50P.md)

View file

@ -146,6 +146,10 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
- [MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md)
- [Harvard CS50: This is CS50x](编程入门/C/CS50.md)
#### Java
- [MIT 6.092: Introduction To Programming In Java](编程入门/Java/MIT%206.092.md)
#### Python
- [CS50P: CS50's Introduction to Programming with Python](编程入门/Python/CS50P.md)

View file

@ -50,7 +50,7 @@ In my last college year, when I opened up my curriculum book, I realized that it
If you can build up the whole CS foundation in less than three years, have relatively solid mathematical skills and coding ability, experience dozens of projects with thousands of lines of code, master at least C/C++/Java/JS/Python/Go/Rust and other mainstream programming languages, have a good understanding of algorithms, circuits, architectures, networks, operating systems, compilers, artificial intelligence, machine learning, computer vision, natural language processing, reinforcement learning, cryptography, information theory, game theory, numerical analysis, statistics, distributed systems, parallel computing, database systems, computer graphics, web development, cloud computing, supercomputing etc. I think you will be confident enough to choose the area you are interested in, and you will be quite competitive in both industry and academia.
I firmly believe that if you have read to this line, you do not lack the ability and committment to learn CS well, you just need a good teacher to teach you a good course. And I will try my best to pick such courses for you, based on my three years of experience.
I firmly believe that if you have read to this line, you do not lack the ability and commitment to learn CS well, you just need a good teacher to teach you a good course. And I will try my best to pick such courses for you, based on my three years of experience.
## **Pros**

View file

@ -23,10 +23,19 @@ Inspired by the course, I developed a [simple deep learning framework](https://g
- Course Website[Official Website](https://novel.ict.ac.cn/aics/)
- Course Videos[bilibili](https://space.bilibili.com/494117284)
- Course Textbook"Intelligent Computing Systems" by Chen Yunji
- Course Assignments6 experiments (including writing a convolutional operator, adding operators to TensorFlow, writing operators in BCL and integrating them into TensorFlow, etc.) (specific content can be found on the official website)
- Experiment Manual[Experiment 2.0 Guide Manual](https://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=155&id=708)
- Study Notes<https://sanzo.top/categories/AI-Computing-Systems/>, notes summarized based on the experiment manual
## Resource Compilation
## Personal Resources
All resources and homework implementations used by @ysj1173886760 in this course are consolidated in [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system)
### New Edition Experiments for 2024
- The 2024 edition of the Intelligent Computing Systems lab has undergone extensive adjustments in the knowledge structure, experimental topics, and lab manuals, including comprehensive use of PyTorch instead of TensorFlow, and the addition of experiments related to large models.
- As the new lab topics and manuals have not been updated on the Cambricon Forum, the following repository is provided to store the new versions of the Intelligent Computing Systems lab topics, manuals, and individual experiment answers:
- The resources for the new edition will be updated following the course schedule of the UCAS Spring Semester 2024, with completion expected by June 2024.
- 2024 New labs, manuals, and answers created by @Yuichi: https://github.com/Yuichi1001/2024-AICS-EXP
### Old Edition Experiments
- Old edition coursework: 6 experiments (including writing convolution operators, adding operators to TensorFlow, writing operators with BCL and integrating them into TensorFlow, etc.) (details can be found on the official website)
- Old edition lab manuals: [Experiment 2.0 Instruction Manual](https://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=155&id=708)
- Learning notes: https://sanzo.top/categories/AI-Computing-Systems/, notes summarized from the lab manuals (link is no longer active)
- @ysj1173886760 has compiled all resources and homework implementations used in this course at [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system).

View file

@ -25,10 +25,21 @@
- 课程网站:[官网](https://novel.ict.ac.cn/aics/)
- 课程视频:[bilibili](https://space.bilibili.com/494117284)
- 课程教材:智能计算系统(陈云霁)
- 课程作业6 个实验(包括编写卷积算子,为 TensorFlow 添加算子,用 BCL 编写算子并集成到 TensorFlow 中等)(具体内容在官网可以找到)
- 实验手册:[实验 2.0 指导手册](https://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=155&id=708)
- 学习笔记:<https://sanzo.top/categories/AI-Computing-Systems/>,参考实验手册总结的笔记
## 资源汇总
@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。
### 2024年新版实验
- 2024 年的智能计算系统实验内容对知识体系、实验题目及实验手册进行了大范围的调整,调整内容包括全面使用 PyTorch ,不再使用 TensorFlow 以及添加大模型相关实验等。
- 由于新版实验题目及实验手册未在寒武纪论坛进行更新,因此提供以下存储仓库,用于存储新版智能计算系统的实验题目、实验手册以及个人的实验答案
- 新版实验的资源跟随国科大 2024 年春季学期的课程进度进行更新,预计 2024 年 6 月更新完毕
- @Yuichi 编写的 2024 新版实验题目、手册及答案https://github.com/Yuichi1001/2024-AICS-EXP
### 旧版实验
- 旧版课程作业6 个实验(包括编写卷积算子,为 TensorFlow 添加算子,用 BCL 编写算子并集成到 TensorFlow 中等)(具体内容在官网可以找到)
- 旧版实验手册:[实验 2.0 指导手册](https://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=155&id=708)
- 学习笔记:<https://sanzo.top/categories/AI-Computing-Systems/>,参考实验手册总结的笔记(已失效)
- @ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。

View file

@ -0,0 +1,33 @@
# MIT 6.092: Introduction To Programming In Java
## Descriptions
- Offered by: MIT
- Prerequisites: None
- Programming Languages: Java
- Difficulty: 🌟🌟
- Class Hour: less than 15 hours
MIT's Java introductory course is suitable for beginners with no programming background. Each session consists of one hour of lecture (knowledge explanation) and one hour of lab (code practice), with a total of seven sessions. Although it's a fourteen-hour course, the learning process is fast, and you can complete it in about a day. It feels quite manageable for beginners.
The course content includes:
1. Rapid introduction to fundamental concepts needed for Java: the Java compilation principle, the classic "Hello world" code, and the eight primitive types in the first session.
2. How to maintain good code style: emphasizing naming conventions, indentation, and proper use of spaces in the third session.
3. Debugging techniques: Using Eclipse warnings, assertions in the sixth session, and handling exceptions in the seventh session.
The assignments in the lab are not very difficult, and many of them are discussed in the following lecture after each lab session. The key point to note is that coding is a skill that requires practical experience. For beginners, the most important aspect of learning to code is to practice and write code regularly, whether in lectures or lab sessions.
For those who want to advance after completing this course, you can consider studying [MIT 6.005/6.031](../../软件工程/6031.en.md).
## Course Resources
- Course Website: [Winter 2010](https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/syllabus/)
- Textbooks: [How to Think Like a Computer Scientist](https://greenteapress.com/wp/think-java/)
- Assignments: <https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/assignments/>
## Personal Resources
All the resources and assignments used by @SinanTang are maintained in [SinanTang/MIT6092-Introduction-to-Programming-in-Java_problem-sets - GitHub](https://github.com/SinanTang/MIT6092-Introduction-to-Programming-in-Java_problem-sets).
All the resources and assignments used by @sirrice are maintained in [sirrice/6092 - GitHub](https://github.com/sirrice/6092).

View file

@ -0,0 +1,33 @@
# MIT 6.092: Introduction To Programming In Java
## 课程简介
- 所属大学MIT
- 先修要求:无
- 编程语言Java
- 课程难度:🌟🌟
- 预计学时:少于 15 小时
MIT 的 Java 入门课程,不需要有任何编程基础也可以开始学习。一节课是一小时 Lec (知识点讲解)+一小时 Lab (代码训练),整个课程是七节课。虽说是十四个小时的课时,真正学起来却很快,一天其实差不多就能结束。感觉是比较适合新手上手的强度。
课程内容包括了:
1. 快速入门 Java 所需的基础知识概念,如第一节课的 Java 编译原理、经典代码 "Hello world" 、八大基础类型等。
2. 如何拥有良好的代码风格,如第三节课强调的命名规范、缩进、空格使用等。
3. 如何 Debug :第六节课的使用 Eclipse warning, Assertion 和第七节课的 Exception 等。
Lab 的 Assignment 倒不是很难,很多前一节课的 Assignment 后一节课 Lec 上就会讲到。唯一需要注意的就是代码是一个很注重实践的技能,新手入门写代码最重要的就是多写多练,无论是 Lec 还是 Lab 上的代码都不要偷懒不写。
学完这门课想要进阶的可以学习 [MIT 6.005/6.031](../../软件工程/6031.md) 。
## 课程资源
- 课程网站:[Winter 2010](https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/syllabus/)
- 课程教材:[How to Think Like a Computer Scientist - 如何像计算机科学家一样思考](https://greenteapress.com/wp/think-java/)
- 课程作业:<https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/assignments/>
## 资源汇总
@SinanTang 在学习这门课中用到的所有资源和作业实现都汇总在 [SinanTang/MIT6092-Introduction-to-Programming-in-Java_problem-sets - GitHub](https://github.com/SinanTang/MIT6092-Introduction-to-Programming-in-Java_problem-sets) 中。
@sirrice 在学习这门课中用到的所有资源和作业实现都汇总在 [sirrice/6092 - GitHub](https://github.com/sirrice/6092) 中。

View file

@ -0,0 +1,24 @@
# Cambridge: Semantics of Programming Languages
## Descriptions
- Offered by: University of Cambridge
- Prerequisites: elementary Discrete Mathematics, including logic and proof methodology, basic functional programming
- Programming Languages: OCaml (ML)
- Difficulty: 🌟🌟🌟
- Class Hour: 20 to 30 hours (12 hours of lecture)
This course offers a structural, operational approach to programming language semantics. It provides a very beginner-friendly but mathematically rigorous introduction to the constructs and specification declaration of programming languages, in the context of actually defining and designing a language. It is also one of the few PLT courses that offers publicly available videos.
The course covers semantics topics ranging from operational and denotational semantics. The course starts with introducing the basic operational semantics of a simple imperative language defined by BNF, and gradually coming to introducing formal type systems, using mathematical induction (especially structural induction) to build rule-based induction proofs. It then comes to how we manipulate data under a functional programming perspective and introduces subtyping and handling of functions. Finally it comes to the discussion of semantics equivalence, congruence property and semantics under concurrency.
This course was taught to 2nd year undergraduate students, however building up some very important concepts. It would be a pivotal capstone for further studies on type theory, category theory, hoare logic and model checking.
## Course Resources
- Course Website: [Latest](https://www.cl.cam.ac.uk/teaching/2324/Semantics/)
- Recordings: [YouTube](https://www.youtube.com/playlist?list=PL-2hPK7m5S3hVagseKDPxCBZEqg0PqZhs)
- Textbooks:
- Pierce, B.C. (2002). _Types and programming languages_. MIT Press.
- Winskel, G. (1993). _The formal semantics of programming languages_. MIT Press.
- Assignments: Related Past Paper Questions are listed [here](https://www.cl.cam.ac.uk/teaching/exams/pastpapers/t-SemanticsofProgrammingLanguages.html), however solutions and tutorial sheets are visible to internal students only.

View file

@ -0,0 +1,24 @@
# Cambridge: Semantics of Programming Languages
## 课程简介
- 所属大学University of Cambridge
- 先修要求:基础离散数学
- 编程语言OCaml/ML
- 课程难度:🌟🌟🌟
- 预计学时20 至 30 小时
这门课程系统性地讲述了编程语言中的语义学 (Semantics)。它在定义和设计语言的背景下,为编程语言的构造和规范声明提供了一个非常适合初学者,但同样严谨且形式化的介绍。这也是为数不多的提供公开视频的编程语言理论课程之一。
课程内容涵盖了从操作语义 (Operational Semantics) 到指称语义 (Denotational Semantics) 的各个主题。课程开始会先介绍一个使用 BNF 约束的简单命令式语言的基本操作语义,然后逐步引入形式类型系统,使用归纳法,特别是结构归纳法 (Structural Induction) 来构建基于规则的归纳证明,介绍了程序语言语义学中的许多基本性质及其证明。然后讨论在函数式编程视角下如何操作数据,并介绍着重子类型和函数处理。最后讨论语义等价性、一致性性质以及在并发环境下的语义学。
这门课在校内面向二年级本科生,难度不高,但同时引入了一些非常重要的概念。它将是进一步研究类型理论、范畴理论、霍尔逻辑和模型检测的关键要素。
## 课程资源
- 课程网站:[Latest](https://www.cl.cam.ac.uk/teaching/2324/Semantics/)
- 课程视频:[YouTube](https://www.youtube.com/playlist?list=PL-2hPK7m5S3hVagseKDPxCBZEqg0PqZhs)
- 课程教材:
- Pierce, B.C. (2002). _Types and programming languages_. MIT Press.
- Winskel, G. (1993). _The formal semantics of programming languages_. MIT Press.
- 课程作业:考试真题中的相关题目汇总在 [这里](https://www.cl.cam.ac.uk/teaching/exams/pastpapers/t-SemanticsofProgrammingLanguages.html),但是相关作业题 (Cambridge 内部的 supervision) 以及所有题目的答案均不公开。

View file

@ -22,7 +22,7 @@ In the 2016 spring, the course open-sourced all of its programming assignments,
## Course Resources
- Course Website: [2021spring](http://web.mit.edu/6.031/www/sp21/), [2016spring](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/)
- Course Website: [latest](https://web.mit.edu/6.031/), [Spring 2022](https://web.mit.edu/6.031/www/sp22/), [Spring 2021](https://web.mit.edu/6.031/www/sp21/), [Spring 2016](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/)
- Recordings: None
- Assignments: 4 Problem Sets + 1 Project

View file

@ -22,7 +22,7 @@
## 课程资源
- 课程网站:[2021spring](http://web.mit.edu/6.031/www/sp21/), [2016spring](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/)
- 课程网站:[latest](https://web.mit.edu/6.031/), [Spring 2022](https://web.mit.edu/6.031/www/sp22/), [Spring 2021](https://web.mit.edu/6.031/www/sp21/), [Spring 2016](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/)
- 课程视频:无
- 课程教材:参见课程网站的课程 notes
- 课程作业4 个编程作业 + 1 个 Project

View file

@ -83,6 +83,7 @@ plugins:
数学进阶: Advanced Mathematics
编程入门: Fundamental Programming
Python 语言: Python Language
Java 语言: Java Language
C 语言: C Language
C++ 语言: C++ Language
Rust 语言: Rust Language
@ -174,6 +175,8 @@ nav:
- "AmirKabir University of Technology AP1400-2: Advanced Programming": "编程入门/cpp/AUT1400.md"
- "Stanford CS106L: Standard C++ Programming": "编程入门/cpp/CS106L.md"
- "Stanford CS106B/X": "编程入门/cpp/CS106B_CS106X.md"
- Java 语言:
- "MIT 6.092: Introduction To Programming In Java": "编程入门/Java/MIT 6.092.md"
- Rust 语言:
- "Stanford CS110L: Safety in Systems Programming": "编程入门/Rust/CS110L.md"
- "KAIST CS431: Concurrent Programming": "编程入门/Rust/cs431.md"
@ -235,6 +238,7 @@ nav:
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"
- "PKU 软件分析": "编程语言设计与分析/PKU-SoftwareAnalysis.md"
- "Cambridge: Semantics of Programming Languages": "编程语言设计与分析/Cambridge-Semantics.md"
- 计算机图形学:
- "GAMES101": "计算机图形学/GAMES101.md"
- "GAMES202": "计算机图形学/GAMES202.md"