This is the official webpage for 50.012 Networks, elective of the ISTD pillar. The tentative schedule for Fall 2017 can be seen here.
This tentative course description supersedes the description in our catalogue here. For reference, we archived the 2015 Spring, 2015 Fall, and Fall 2016 schedule.
|Subject Title||50.012 Networks|
|Next Offering||Fall 2017|
|Term Offered||Term 6|
|Elective or Core||Elective|
|Grading Method||Letter grade|
|Maximum Class Size||50|
This course will introduce the principles and practice of computer networking, with emphasis on the Internet. Students will learn concepts, principles, protocols, and applications of computer networks, including packet switching, layered architectures, TCP/IP, error control, window flow control, local area networks (Ethernet, Wi-Fi), network layer, congestion control, quality of service, multicast, network programming interfaces, networked applications.
- Explain fundamental network protocols
- Describe the organisation of computer networks, and classify factors influencing computer network development and the reasons for having variety of different types of networks
- Solve standard problems in interconnections between autonomous networks
- Model the Internet structure and derive operational parameters
- Design optimized network topology for given problem settings
- Analyze and evaluate a provided network setup
- Design and implement a server-client architecture based on sockets
- Description of the essential features of different networking protocols, such as TCP, IP, DNS, and ARP.
- Conceptual design of a computer network based on a set of provided operational requirements.
- Application of routing algorithms to determine the shortest path in a network, modeled as a weighted graph.
- Model and analysis of a network of autonomous systems
- Analysis of a real network setup and critique of the design decisions.
- Design and implementation of a client-server application program using sockets.
The exercises for this class are mostly based on Python. Our lab provides a live Linux environment to perform experiments and exercises. No prior experience with Linux is required.