# CS 168: Introduction to the Internet: Architecture and Protocols

## Course Overview

* **University**: UC Berkeley  
* **Prerequisites**: CS 61B; CS 61C recommended; basic experience with Python programming and Unix systems  
* **Programming Languages**: Python, Unix shell  
* **Course Difficulty**: 🌟🌟🌟  
* **Estimated Hours**: Approximately 140 hours (14 weeks × 10 hours/week)

This course, offered by UC Berkeley, focuses on the design principles and core protocols of the Internet. Topics include network layering, addressing, intra- and inter-domain routing, reliable transport, congestion control, and essential protocols such as TCP, UDP, IP, DNS, and HTTP. It also introduces Ethernet, wireless networks, and related technologies.  

CS 168 combines theory with hands-on experience through three programming projects (Traceroute, Routing, and TCP Transport), allowing students to learn how to build and debug network protocols in a deep and comprehensive way.

The accompanying [textbook](https://textbook.cs168.io/) is particularly well-written—comprehensive yet concise and engaging. It's highly recommended for thorough reading and can also serve as a handy reference.

## Course Materials

* **Course Website**: [SP2025](https://sp25.cs168.io/)  
* **Lecture Videos**: See course homepage  
* **Textbook**: [https://textbook.cs168.io/](https://textbook.cs168.io/)  
* **Assignments**: Three Python projects, relatively straightforward

## Resource Summary

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