ECE438
ECE438/CS438 (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 CS341 beforehand is a good idea because the class discusses networking, which is typically implemented at the OS level. The MPs in this class are also in C/C++, so having experience from ECE391 will help.
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.
When taught by Professor Vasisht in Spring 2024, the majority of the work in this class came from the amount of content covered in lecture and on the exams. There were 4 homework assignments which could be completed with a partner. There were also 4 MPs: HTTP server/client, reliable file transfer (TCP), link-state/distance vector routing, and a 4th MP that was canceled (with all students given full credit). These MPs are also partner-based. The late work policy was quite generous, with late work rounding down to the nearest day; ie. turning in an assignment 23 hours and 59 minutes after the deadline was considered "on time". There were also 4 1-week extensions given for the student to choose what assignments to work on. For the midterm and final, an unlimited amount of printed note sheets could be used, as well as a calculator.
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 Romit Roy Choudhury and Deepak Vasisht. It has also been previously taught by Steve Lumetta, Philip Godfrey, Haitham-Al Hassanieh, Robin Kravets, and Constantine Polychronopoulos. In Fall 2024, it is currently taught by Professor Yu-Lin Wei, a research assistant for Professor Choudhury.
Course Tips
Overall, this class has not been as difficult in recent semesters as in the past. Expect 5-10 hours of work for each MP and 3-6 hours of work for each homework assignment. Since they are partner based, you can also split up the work quite evenly. However, there is a lot of content in this class, and much of it is pure memorization based. To stop yourself from having to cram for the exams, make sure to stay up-to-date with lecture materials.
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).