50.012 Networks

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
Pillar/Cluster ISTD
Next Offering Fall 2017
Term Offered Term 6
Elective or Core Elective
Grading Method Letter grade
Maximum Class Size 50
Workload 3-2-7 Teaching-Lab-Homework
Subject Credits 12

Subject Description:

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.

Learning Objectives

  1. Explain fundamental network protocols
  2. Describe the organisation of computer networks, and classify factors influencing computer network development and the reasons for having variety of different types of networks
  3. Solve standard problems in interconnections between autonomous networks
  4. Model the Internet structure and derive operational parameters
  5. Design optimized network topology for given problem settings
  6. Analyze and evaluate a provided network setup
  7. Design and implement a server-client architecture based on sockets

Measurable Outcomes

  1. Description of the essential features of different networking protocols, such as TCP, IP, DNS, and ARP.
  2. Conceptual design of a computer network based on a set of provided operational requirements.
  3. Application of routing algorithms to determine the shortest path in a network, modeled as a weighted graph.
  4. Model and analysis of a network of autonomous systems
  5. Analysis of a real network setup and critique of the design decisions.
  6. Design and implementation of a client-server application program using sockets.


50.005 Computer System Engineering (and, indirectly, 50.001 Computation Structures).

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.