# MIT6.1600: Foundations of Computer Security

## Descriptions

- Offered by: MIT
- Prerequisites: discrete mathematics, basic programming, basic knowledge of computer systems
- Programming Languages: Python3
- Difficulty: 🌟🌟🌟
- Class Hour: 50 hours

MIT6.1600 is the undergraduate course on computer system security at MIT. The course is divided into five modules: authentication, transport security, platform security, software security, and human/end-user security. The organization of the course is quite clear: the authentication module focuses on authentication security, that is, how to prove that the "you" in the computer world is indeed "you". It then moves to the topic on communication security, such as data encryption and decryption, key exchange, etc. However, transport is only one aspect; the code ultimately needs to run on a device, which involves the security of the platform on which the code runs and even the software code itself. The course will also cover some content about privacy security, discussing group information security from a sociological perspective. 

After completing this course, you will master many important fundamental concepts of computer security, such as public and private key encryption algorithms, hash algorithms, digital signatures, key exchange algorithms, and more. Besides the mathematics and theorem proofs, the course also uses the theoretical knowledge to explain many real-world security vulnerabilities, giving you a more concrete understanding of these security concepts. Additionally, there are six interesting labs that allow you to exploit many vulnerabilities through programming, deepening your understanding of the knowledge in practice, which I personally find quite interesting.

## Course Resources

- Course Website: [fall23](https://61600.csail.mit.edu/2023/), [fall22](https://61600.csail.mit.edu/2022/)
- Recordings: Refer to the course website.
- Textbooks: There is no required textbook, but the lecture notes are good reading materials.
- Assignments: 6 labs in total.

## Personal Resources

All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/MIT6.1600 - GitHub](https://github.com/PKUFlyingPig/MIT6.1600).
