Computer Networks (ELEC 3120) / Fall 2024


Course Description

Foggy is the pronunciation of HKUST in Cantonese. It was also my feeling when I was learning computer networks.

ELEC 3120 is an introductory course in computer networks. The emphasis will be on the basic performance and engineering tradeoffs in the design and implementation of computer networks. To make the issues more concrete, the class includes one project requiring significant design and implementation and spanning the whole semester.

The goal is for students to learn not only what computer networks are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. We will draw examples primarily from the Internet. Topics to be covered include: congestion/flow/error control, routing, addressing, naming, multi-casting, switching, internetworking, and network security. Evaluation is based on homework assignments, the project, one midterm exam, and one final exam.

For potential students, please read the announcement below and think twice before you decide to add this course.

I’ve heard that ELEC 3120 is very challenging. Is that true?

Here is a way to see if you are suitable for ELEC 3120. Forget about the exams in COMP 2011 – ELEC 3120 is not going to test your programming skills on papers. Just think about the programming assignments: do you like it? do you enjoy writing code? If you quite enjoy it (and probably even taking COMP 2012), then ELEC 3120 will be easy for you. If you don’t, then you may need to think twice.

What project am I going to do?

You will implement a TCP socket yourself in C++. Don’t be scared. You will only required to implement the core part of TCP with the minimum engineering efforts. This is a semester-long project with four checkpoints, and we will guide you through the whole process.

Why so? Because we want you to understand how the most important protocol on the Internet, TCP, works, and the best way to understand it is to implement it yourself. And also, for many ELEC students, this will be the only programming project in your undergraduate study. For future engineers, it is important to know how to make plans for a project.


  • COMP 1021 (Python Programming)
  • COMP 2011 (C++ Programming) – This is not a hard requirement, but it is strongly recommended.

If you believe you are capable of the knowledge of C++ programming, send me an email and I will waive your prerequisites.


  • Piazza.
    For all course-related questions, you are not encouraged to email the instructor directly unless privacy concerns are involved. Instead, post your question on Piazza. This way, other students can benefit from the answer as well. You can also post anonymously if you wish.
  • Gradescope.
    For submitting homework assignments and projects.

Previous Offerings


Teaching Assistants