Table of Contents
Module information #
CS3103 Computer Networks Practice at the National University of Singapore (NUS) is a module that teaches us hands on experience with the daily routines of a network administrator.
For AY22/23 Sem 1, the module is taught by Prof. Chan Mun Choon.
This is only offered in Semester 1
Venue: LT19 Lecture time: Tuesday, 1400-1600 Lab Session: COM1-B1-02 (Week 4 to 13)
Module breakdown #
- Practice-Lab 40%
- Pre-lab Quiz 15%
- Lab sheet / Questionnaire 25%
- Mini-Internet Assignment (Groups of up to 3) 30%
- Programming Assignment 20%
- Understanding Concepts 10%
- Online Assignment 5%
- Participation 5%
- CS2105 or EE3204/E or EE4204
Module Details: #
The module involves:
- Configuring and connecting LANs using networking devices / technologies (Routers, Switches, etc)
- Networking protocols and how to set them up (DHCP, BGP, etc)
- Network security (Firewalls, VPNs, etc)
- Developing a network proxy server
These are the topics that were covered.
- ARP + DHCP
- Routing OSPF
- Network Security
- Border Gateway Protocol (BGP)
- Socket Programming / HTTP
- Wireless LAN
- Software Defined Networking (SDN)
The lectures were very enjoyable and the Prof Chan was very knowledgeable about the topics that he were teaching us. Prof Chan also makes use of visualizations to show us the concepts instead of just explaining it it theory which works really well in the context of this module.
Lectures also feel more like going there to learn instead of trying to remember them for an exam (As the module has no exams). Honestly a very enjoyable experience personally.
There is also webcast for every lecture for this semester.
Pre-lab quiz #
The pre-lab quiz is released almost every week (8 / 13 weeks) immediately after lectures. We will have around 24 hours to complete it before the commencement of the lab exams
The content of the pre-lecture quiz is usually about what is tested in the lecture as well as information about the upcoming lab. There are usually 5 - 6 questions in each quiz usually consisting of multiple choices or multiple response questions.
For the lab sessions, we find a partner pair up for each lab session. The lab includes actually configuring real networking equipment and answering questions based on observations in the lab sheet. They are usually quite long and will take up most of the 2 hour time slot. For this semester, as the time slots are back to back, we usually try to finish the lab within the 2 hours.
There were also no makeup labs available. If you are unable to make it for any of the lab, you will have to email the professors and teaching assistants before hand and attend another lab instead.
Assignment 1: Mini-Internet' #
For this assignment, each team is allocated an autonomous system (AS) within the mini-internet and is required to configure them to complete this assignment.
This assignment was released incrementally with 2 weeks in between each release. The previous part is due around the same time the next part is released. This was from week 3 to week 11.
The network is fully hosted within the SoC server so there is no need for installing any special software on our personal devices. A simple SSH is all that is needed to access the network.
The assignment is split into 3 different parts.
- Fill up a configuration table for each device in the network based on the architecture of the network.
- It is simply an excel sheet that we have to fill up based on the instructions which were given to us.
- Configure the various devices in each individual Autonomous System (AS)
- Actually configure the devices in the network to make them connect with each other.
- Configure BGP and its associated settings to route traffic to other Autonomous Systems
- We actually get to see our configuration propagating in the network.
There were also multiple tools provided:
- Assignment Wikipedia
- A Looking glass
- To see the current advertisements for each of the ASes in the network
- A monitoring tool
- A visualization consisting of many boxes to show the connectivity of each of the ASes in the network
This is honestly the most enjoyable part of the module for me. It is an assignment which requires us to apply what we have learnt in labs and use it in an actual autonomous system.
This was the first semester that this particular assignment was implemented. I hope they implement this in future semesters to come for other students to enjoy.
Assignment 2: Making a Proxy #
This is the second assignment for the module.
This assignment was release around week 12 to 13 and is due at the end of reading week.
For this assignment, each individual have to create a network proxy which can do the following:
- Proxy HTTP traffic between a browser and a server
- Have an image substitution mode where each image in the webpage is substituted with a different image
- Have an attack mode where any request sent to the server is replied with
You are under attack.
- Telemetry to see the size of each of the packets
The assignment itself was enjoyable, however, the requirements of the assignment were not very clear. The assignment was also very vague and we had to figure out what we were supposed to do on our own.
There were many contradictory replies in piazza which resulted in confusion during the actual programming of the assignment.
This was the main gripe for this module as a whole for me personally.
Unluckily for me, I implemented an alternate implementation which was not what was required by the teaching assistant. With looming finals and other deadlines, I decided to just submitted the assignment as is and forgo the telemetry marks.
- Lectures: 3/10 (Light)
- Labs: 6/10 (Moderate)
- Some labs are rushed but most of them are doable within the allocated time slot
- Assignment 1: 8/10 (Heavy)
- This is slightly on the heavier side as there is some reading up required before attempting the assignment, especially for part 2 and 3
- Assignment 2: 10/10 (Very heavy)
- This is very high workload due to the lack of clarity in the assignment for the requirements which require us to have frequent changes
- There were finals in week 13 and other assignments due reading week as well
- Overall: 6.75 (Moderate)
- Lectures: 9/10
- Labs: 9/10
- Assignment 1: 10/10
- Assignment 2: 2/10
- Mainly due to the unclear requirements of the assignment
- Contradictory replies in piazza
- Overall: 7.5/10
- Lectures: 7/10
- Learnt a lot about the protocols but there are some overlap with CS4226
- Labs: 8/10
- Learnt a lot about network configurations and how to use networking equipment
- Assignment 1: 8/10
- Learnt a lot about how to configure an autonomous system and how each of the routing protocols used are deploy
- Learnt about how to configure the protocols and see it work in real time
- Assignment 2: 5/10
- Learnt about socket programming
- Learnt about the HTTP protocol
- Slight overlap with CS2105
- Overall: 7/10
Overall I enjoyed the module a lot.
- Lecture: 7/10
- Labs: 8/10
- Assignment 1: 10/10
- Assignment 2: 2/10
- Overall: 6.75
- Lectures: 6/10
- Good to know about the information but not too sure about immediate applicability
- Lab: 10/10
- The labs actually involve what network admins do on a daily basis
- Assignment 1: 10/10
- Similar to the labs, it involves what network admins do on a daily basis
- Assignment 2: 1/10
- Usually we do not need to implement a proxy from scratch
- Overall: 6.75/10
Overall, I will say that this module is good for anyone who wants to learn how to configure the network and how each protocol that we use daily works.
It also allows us to have a hands on experience with the networking equipment which are used in enterprise networks.
Generally speaking, the module is quite interesting and I enjoyed it a lot.
I will recommend this module to anyone who is:
- Interested in networks
- Enjoys more hands on learning rather than just reading about it
- Interested in becoming a network administrator
Expected Grade: B+ / B
- I missed a pre-lab quiz and didn’t do too well for the proxy assignment
Actual Grade: B+
PS. To that random meme lord who posts memes about every lecture content. I love what you do and please do it more.