Skip to content

ECE438

ECE438 (Communication Networks) is a 3/4-credit-hour course that satisfies the Technical Elective requirements for ECE majors and counts as an Advanced Computing elective for CEs. It is offered in both fall and spring semesters.

Content Covered

This class covers a lot of material. Essentially, the class is a programming-centric view of networks that covers the 5-layer model, starting either at the top layer and moving down or vice versa, depending on the professor. The class starts with an overview of networking topics such as layering, bitrate, and encapsulation with the internet as a case example. Then starting with a layered model we begin with the application layer which covers web and HTTP, FTP, E-Mail protocols, DNS, P2P file sharing, and socket programming. Next comes the transport layer which deals with multiplexing/demultiplexing, UDP, reliable data transfer, TCP and TCP properties, and congestion control. Next is the network layer which deals with virtual circuits and datagram networks, router hardware, internet protocols such as IPv4, NAT, ICMP, and IPv6, routing algorithms such as link-state routing, distance vector routing, and hierarchical routing, RIP, OSPF, BGP, and multicast routing. Next is the link-layer which deals services, error detection, and correction, multiple access protocols, link-layer addressing, ethernet, hubs and switches, and PPP. Lastly is the physical layer, briefly talking about encoding information onto signals and modulation. The physical layer is very brief in this class.

Prerequisites

The class requires one of CS241, CS341 or ECE391 and also strongly recommends one of ECE313, MATH 461, or MATH 463.

When to Take It

Most students who take this class do so as juniors or seniors; it is offered every semester. Taking ECE391 or CS 341 beforehand is a good idea because the class discusses a lot of algorithms that involve some element of parallelism, some of which are typically implemented at the OS level; moreover, the class is taught in C, so having the extra C programming experience from ECE391 or CS341 is helpful. Besides the class listed other useful classes could be ECE/CS374 as a lot of algorithms are taught in this class and ECE448/CS440 since some different types of search algorithms are used and having information from ECE448 could help understand the information easier.

Course Structure

The workload for this class may vary depending on the professor; when taught by Professor Romit in Fall 2021, this class had a very substantial workload for a technical elective. The class has both homework assignments and MPs. In recent semesters, there have been 4 homeworks - approximately one a month. Each assignment is fairly long, covering a lot of material and often taking 10+ hours each to complete, mainly because of their length and breadth. Additionally, there are typically a few MPs in this class; in Spring 2021, there were 4: the first MP was implementing a socket program and file-sharing; the second MP was the most complicated, in which students had to implement reliable file transfer, which essentially involved implementing a TCP-like protocol. The 3rd MP was implementing distance vector routing. The 4th MP was simulating a SMA protocol. All MPs can be done with a partner.

In terms of material, 438 covers a VERY hefty amount of material; lectures typically span 2-3 times the content a lecture from another class would cover. It's easy to get lost under the sheer amount of material, but it's not difficult to pick out relevant information for homeworks and MPs.

The class has a midterm and a final. The difficulty of the exams will depend on the instructor, but given the sheer amount of material covered, it is easy to spend a lot of time studying for the exams, especially for the final. The book for the class covers everything found in lecture and more, but it is advisable to use lecture slides & homeworks for review since the book is not a quick read.

Instructors

In recent semesters, this class has been taught by Robin Kravets and Constantine Polychronopoulos. It has also been previously taught by Steve Lumetta, Philip Godfrey, and Haitham-Al Hassanieh. The latest professor is Romit Roy Choudhury. In Fall 2024, it is currently taught by Professor Yu-Lin Wei, a research assistant for Professor Choudhury.

Life After

Students who enjoy this class might also like CS425 (Distributed Systems)/ ECE428, which discusses applications that can be built on top of networks. For those interested in Wireless Networks, ECE439 (CS439) is the logical next step. Additionally, one could choose to continue studying networking at the graduate level, with classes such as CS538 (Advanced Computer Networks), CS525 (Advanced Distributed Systems), and ECE567 (Communication Network Analysis). Students interested in security should consider ECE422 (Computer Security I) and ECE424 (Computer Security II).