Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
Overview of computer networks, TCP/IP protocol suite, computer-networking applications and protocols, transport-layer protocols, network architectures, Internet Protocol (IP), routing, link-layer protocols, local area and wireless networks, medium access control, physical aspects of data transmission, and network-performance analysis.

Prerequisite: (ECS 060 or ECS 032B or ECS 036C); (ECS 132 or EEC 161 or MAT 135A or STA 131A or STA 120 or STA 032)

Credit restrictions/cross listings: Cross listed as Electrical and Computer Engineering 173A. Only 2 units of credit for students who have taken course 157.

Cross-listing justification: This course is integral to undergraduate programs in both departments. It is a required course for the Computer Science and Engineering (CSE) major in the Department of Computer Science and for the Computer Engineering (CE) major in the Department of Electrical and Computer Engineering. The department teaching the course will be responsible for staffing and for all the normal resources required for the course.

Summary of course contents

  1. Introduction
    1. Terminology
    2. TCP/IP protocol suite
    3. Layered architecture , protocols, and standards
  2. Networking Applications and Protocols
    1. Distributed applications
    2. Application layer protocols
    3. Introduction to network programming
  3. Transport Layer Protocols
    1. Transport layer services
    2. Reliable transport protocols
    3. Introduction to TCP and UDP
  4. Network Layer Protocols
    1. Packet switching
    2. Circuit switching
    3. Virtual circuit vs. datagram
    4. Statistical multiplexing
    5. Routing
  5. Link Layer Protocols
    1. Flow control
    2. Error detection and control
  6. Broadcast Communication Networks
    1. Local Area Networks (LANs)
    2. Medium Access Control (MAC) protocols
      1. Channel Partitioning: FDMA, TDMA, CDMA
      2. Random Access: ALOHA, CSMA/CD
      3. Controlled Access: Token ring/bus
    3. LAN technologies and topologies
    4. Wireless networks
  7. Physical Layer Aspects of Data Transmission
    1. Signals, spectral analysis, bandwidth
    2. Transmission impairments
    3. Data encoding/decoding
    4. Communication Techniques
  8. Network Performance Analysis
    1. Simple queuing models and simulation analysis
    2. Network measurement tools
    3. Analysis of protocols

The course contains a series of design projects with 2-3 students per team. The projects are designed to reinforce certain concepts and to familiarize the students with network measurement tools and simulators and their use in protocol analysis. Example projects include: (1) designing a simulation model to compare performance of different medium access control protocols; (2) monitoring and analyzing network data collected using active/passive network measurement tools or a LAN analyzer; (3) design measurement experiments to analyze a particular performance metric or network anomaly; (4) introductory assignment to configure PC-based or commercial routers; (5) implement a simple client-server application.

Goals: Students will (1) learn the fundamental principles in communication networks; (2) understand the architecture and underlying protocols along with scalability, complexity and robustness issues of communication networks and systems; (3) be prepared to undertake an in-depth study of local area networks and wide area networks dealing with their access mechanisms, routing algorithms, and  performance evaluation methodologies; (4) gain experience in the design and analysis of network protocols through experiments on a Ethernet LAN, network measurements,  or through simulation models. Computer Usage:

Typically, students do their projects in the campus computer laboratories containing networked SUN, HP, and SGI workstations and Personal Computers (PCs) running LINUX. The simulation project can be done on other computers as well, such as PCs at home. The projects are typically done in the C, C++ or Java programming languages, although the simulation project can be done in any other high-level language as well.

Illustrative reading

  • J. Kurose and K. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, 6th Edition, Pearson/Addison Wesley, 2012.
  • W. Stallings, Data and Computer Communications, 9th Edition, NJ: Prentice-Hall, 2010.
  • A. Tanenbaum and D. Weatherall, Computer Networks, 5th edition, Prentice Hall, 2010.

Engineering Design Statement:
The course emphasizes techniques for designing and analyzing network protocols, from the application to the link layers. There will be both written and programming assignments in the class. In written assignments, students are presented with open-ended problems that require them to explore various approaches to network design, to choose between alternatives, and to justify solutions based on performance and cost/complexity considerations. The laboratory projects are design-oriented. Sample projects include: (1) design of elementary file transfer protocol, (2) design tools to collect and analyze network measurements, and (3) design of a simulation model to study the characteristics of various error control strategies or the effect of window size on delay and throughput, or to analyze medium access protocols.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

GE3: Science & Engineering

Overlap: There is some overlap with course 157, but the audience is different. Course 157 is for non-majors and this course is designed for majors. There is some overlap with the introductory material of ECS 252A and EEC 273, Computer Networks, taught at the graduate level.

Instructors: C. Chuah, D. Ghosal, X. Liu, N. Matloff, P. Mohapatra, and B. Mukherjee

History: Reviewed 2018.9.7 (CSUGA): prerequisites updated to include new lower division ECS series courses. Reviewed by D. Ghosal (24.10.2012): corrected typos in catalog description; simplified statement of prerequisites;reorganized and updated course contents; simplified the cross listing statement; updated the illustrative reading list. Prior version by C. Chuah and D. Ghosal (October 2006).


1 X an ability to apply knowledge of mathematics, science, computing, and engineering
2 X an ability to design and conduct experiments, as well as to analyze and interpret data
3 an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 X an ability to function on multi-disciplinary teams
5 an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 X a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11 an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 X an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity