CS3103 Computer Networks Practice

Module: CS3103 Computer Networks Practice

Semester taken: AY 2021/22 Semester 1

Lecturer: Dr Chan Mun Choon

Tutor: Mr Khooi Xin Zhe

Textbook: Computer Networking: A Top-Down Approach, Global Edition, 7th ed., James Kurose & Keith Ross, 2016. Pearson

What it is about

This module is a continuation of the introductory module to computer networks by diving deeper into certain concepts used in the Internet, such as DHCP, DNS, routing and TCP. Students are expected to keep in mind the knowledge learnt from CS2105, and this module seeks to expand that knowledge. This module also includes a laboratory component, for students to explore networking concepts in an isolated environment.

Assessment components

  • Pre-lab quizzes: 10%

  • Lab sheet/Questionnaire: 30%

  • Group project (part 1): 15%

  • Group project (part 2): 25%

  • Written/Programming assignment: 15%

  • Participation (feedback/Q&A): 5%


According to the professor, this module was previously part of two separate modules, one that focused more on the theory aspect of networks and the other being the more practical aspect. The two modules were eventually merged to form this module, while taking away some content and putting them into a few of the level 4000 modules. This move makes sense, as it is very helpful to be able to learn some of the concepts in the lecture and subsequently see it in action in the laboratory.

This was also the first time that this professor has taught this module for many years, as it has always been under the charge of Dr Anand. I was quite disappointed at this last-minute change, as I heard many good stories of Dr Anand and was looking forward to taking a course taught by him. The disappointment was valid, as the style of teaching adopted by Dr Chan was not to my liking. However, the lab sessions were very interesting, as they allow you to tinker with actual enterprise-grade devices such as routers, switches and wireless access points.

There are no final exams for this module, so most of the content taught in this module are tested in the lab sessions and quizzes.


There is a 2-hour lecture every week and each week covers a certain topic related to computer networks. The topics here do not overlap with the ones taught in CS2105, and will go into greater detail on those that were briefly mentioned in the earlier module. Unfortunately, the way Dr Chan conducted his lectures made me lose interest in the module rather quickly, as he will keep talking about the theoretical aspects in a somewhat monotonous voice. There were also a couple of instances where he rushed through the content, only to have quite some time remaining at the end of the lecture, which he then chose to end the lecture then.

As there were no final exams for this module and the content are only mainly used in the lab sessions, there is little need to listen to the lectures completely. However, if you are intending to take up certifications such as the Cisco CCNA in the future, the lectures will be a good starting point to prepare for the certification exams. Otherwise, it is possible to get by with reading the lecture notes and using Google to supplement the information.

For the participation component, it was not announced by the professor, but there is a midterm and end-of-semester feedback form to be filled in on LumiNUS, which will count towards the final grade. I believe many students missed out on this (including myself), and this is definitely something you would not want to miss, given the steep bell curve of this module.


The lab sessions are held every week for 2 hours, and will cover the topic taught in lectures 2 weeks prior. There will be a pre-lab quiz that will open 24 hours before your designated session, and has to be completed before the lesson starts. Each quiz has around 4 questions and are usually open-ended, which may ask you some theory questions on the content taught in lecture, or some questions pertaining to the lab itself. Hence, always look through the lab sheet before attempting the pre-lab quiz, and understand the setup of the lab. The answers for the theory questions can be easily found either in the lecture notes, or from some simple Google search.

The lab sessions are done in pairs, and I recommend taking the lab session with a friend so that you both can work on the pre-lab quiz together and do some preparation work beforehand. My partner and I would always meet up the day before to run through the lab sheet, take note of the terminal commands that we will need to type, and answer the pre-lab quiz together.

I was lucky to get a really good lab TA who is very knowledgeable with computer networks, and often guide us along the way while we are doing the lab. Some of the lab sessions can be confusing and time-consuming, and it makes the pre-lab preparation work all the more important, so that you do not overrun the time.

Group Project and Written Assignment

The group project has two parts which are unrelated and are done in pairs. By default, your group member will be your lab partner, but you are free to choose another person or even go solo.

The first part of the project was to develop a simple proxy server, which you can use with Mozilla Firefox to browse websites. This was a tough assignment, as not only do you need to make the proxy server work according to the specifications, your marks are dependent on how fast the page loads using the proxy. You are free to use either C/C++ or Python, but my group chose to use C++ as it runs faster than Python, which affects how fast the proxy operates. Unfortunately, we were both unfamiliar with the syntax and it caused quite a few problems along the way.

The second part of the project is to create a job scheduler for a certain set of requests and a cluster of mock servers. This was also quite tough, as the requests come randomly and are of different sizes. The challenge is to come up with a suitable scheduling algorithm so that the overall waiting time for requests is reduced. I have no idea how this is related to computer networking.

Finally, there is a written assignment to be done individually, which asks a bunch of theory questions regarding computer networking. The questions are mostly simple, but some can be tricky and if you make the wrong assumption, will give you a completely different answer.

Other information

Assignment workload: Light. There is a written assignment for the semester and a short pre-lab quiz to be done every week there is a lab session.

Project workload: Heavy. The projects are tough and will take some time to debug, especially if you are unfamiliar with the programming language you are using.

Readings: None

Recommended if: You are interested in learning some of the advanced topics in computer networks, especially so if you are interested in taking network-related certifications in the future.

Rating: 4.0/5. Content is interesting but the professor made it a little boring. Bell curve is steep.

Expected grade: A

Actual grade: A-

Last updated