Dev Resources
Tài nguyên cho lập trình viên phát triển giao thức
Computer Science Resources
Introduction / fundamentals
- 🎥 Map of Computer Science
- 🎥 A Crash Course in Computer Science
- 🎥 Exploring How Computers Work
- Building a Modern Computer from First Principles, By Noam Nisan and Shimon Schocken
- 📘 Code: The Hidden Language of Computer Hardware and Software
- 📘 Computer Science Distilled
- 🎥 Information theory | Khan Academy
Mathematics
- 🎥 Introduction to Mathematical Thinking | Stanford
- 🎥 Essence of linear algebra
- 📄 Set Theory
- 📄 Basic number theory
- 🎥 Mathematics for Computer Science | MIT
- 📘 Discrete Mathematics with Applications
Cryptography
Algorithms
- 🎥 Computer Science: Algorithms, Theory, and Machines | Princeton University
- 📘 Grokking Algorithms
- 📘 Introduction to Algorithms | CLRS
- 🎥 Introduction to Algorithms | Course with assignments + solutions
- 📘 Data Structures and Algorithms in C++, 2nd Edition
Programming
- 🎥 CS50x: Introduction to Computer Science | Harvard University
- 🎥 Berkeley CS 61A: Structure and Interpretation of Computer Programs
- 🎥 Parallel Programming
- 🎥 Compilers
- Mastering programming
- 📄 Awesome c++ (or C)
- 📄 Awesome go
- 📄 Awesome rust
- 📄 Awesome javascript
- 📄 Awesome python
- 🎥 George Hotz | Programming | rewriting linearizer (tinygrad) | Day In The Life Of A Software Engineer
Networking
This section covers a brief overview of the differences and similarities between the OSI (Open Systems Interconnection) and TCP/IP (Transmission Control Protocol/Internet Protocol) models, as well as the protocols involved in the transport layer used in DevP2P: TCP and UDP.
In terms of networking, both models refer to the same process of communication between layers. Just as Kurose and Ross explain (2020), the computer networks are divided into different layers, and each one of them has a specific responsibility. The OSI model has seven layers, while the TCP/IP model has four layers. The OSI model is more theoretical and the TCP/IP model is more practical. The OSI model is a reference model created by the International Organization for Standardization (ISO) to provide a framework for understanding networks. The TCP/IP model was created by the Department of Defense (DoD) to ensure that messages could be transmitted between computers regardless of the types of computers involved. The TCP/IP model is a concise version of the OSI model:

In summary, the OSI model layers are:
- Physical layer: responsible for the transmission and reception of raw data between devices.
- Data link layer: responsible for the node-to-node delivery of the message.
- Network layer: responsible for the delivery of packets from the source to the destination.
- Transport layer: responsible for the delivery of data between the source and the destination.
- Session layer: responsible for the establishment, management, and termination of connections between applications.
- Presentation layer: responsible for the translation, compression, and encryption of data.
- Application layer: responsible for providing network services directly to the end-user.
Assuming the communication schema proposed by Claude Shannon (1948), every communication implies both a sender and a receiver, a message to be exchanged between them, a transmission medium, and a protocol to be followed. This is important to mention because regardless of the computer architecture, it could be part of a network if it follows the communication and protocol specifications of the models mentioned above.
- 🎥 Introduction to Computer Networking
- 🎥 Computers and the Internet | Khan Academy
- 🎥 Computer Networking: a Top-Down Approach
- Clause E. Shannon (1948). "A Mathematical Theory of Communication". Bell System Technical Journal. Vol. 27.
- Jim Kurose and Keith Ross (2020). Computer Networking: A Top-Down Approach. 8th edition. Pearson.
Distributed systems and blockchain
- 🎥 Distributed Systems | MIT
- 📄 Times, Clocks and Ordering of Events in Distributed Systems - Lamport's paper, the Quintessential distributed systems primer
- 📄 The Byzantine Generals Problem
- 📄 Practical Byzantine Fault Tolerance
- 📄 Bitcoin Whitepaper
- 📄 Ethereum Whitepaper
- 📄 Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood
- 📄 Building Blockchain in Go
Security
- 🎥 Security Engineering
- 🎥 Computer Systems Security
- 🎥 CS 161: Computer Security
- 🎥 Secure Software Development: Requirements, Design, and Reuse
- 🎥 Secure Software Development: Implementation
Terminals, shell scripting, and version control
- 🎥 The Missing Semester of Your CS Education | MIT
- 🎥 The Unix Workbench | Johns Hopkins
- 📄 Git tips and tricks
- 📄 Popular Git config options
Misc
- 📄 Things Every Programmer Should Know
- 📄 What Every Programmer Should Know About Memory
- 📄 What Every Computer Scientist Should Know About Floating-Point Arithmetic
- 🗣️ Big and Little Endian inside / out
- 🎥 The Perfect Dependency - SQLite Case Study