This repository is a complete teaching kit for an undergraduate computer networks module. It is organised as a sequence of lectures and evidence producing seminars, supported by projects, tooling and reproducible diagrams.
You should treat the kit as a laboratory manual, not only as a slide collection. The pedagogical intent is to move from declarative claims to defensible explanations supported by observable artefacts such as packet captures, logs and deterministic runs.
Language policy: the core materials are in English (British). Some files are intentionally bilingual (EN + RO) and Romanian instructor materials remain in Romanian.
- Read
current-outline.mdto understand the weekly sequence. - Complete the environment setup in
00_TOOLS/Prerequisites/Prerequisites.md(or agree an alternative with your instructor). - Start with S01 and keep evidence as you work.
- Use the week-by-week map below to plan the lecture–seminar pairing.
- Standardise the environment early. The default Windows stack is WSL2 + Ubuntu + Docker Engine + Portainer.
- Mark on evidence not on screenshots. Require submissions framed as claim → evidence → interpretation → limitation.
- What is inside
- Learning design
- Tooling you will use
- Quick start pathways
- Clone the repository
- Verify your lab environment
- How to run a seminar
- Week-by-week map
- Diagrams and rendering
- With and without Portainer
- With and without Mininet-SDN
- Quality checks and formatting
- Safety and scope
- Licence and permitted use
- Repository structure
| Area | What it contains | What you use it for |
|---|---|---|
00_APPENDIX/ |
Week 0 onboarding, optional bridge material, quizzes, troubleshooting notes | reduce toolchain friction and standardise baseline skills |
00_TOOLS/ |
PlantUML tooling, offline formatting, QA scripts | keep the kit deterministic and maintainable |
01_GHID_MININET-SDN/ |
Mininet-SDN setup guide (VM based) | controlled topologies for SDN and routing demonstrations |
02_PROJECTS/ |
project briefs, marking evidence expectations, diagrams and helper tools | assessment by reproducible artefacts |
03_LECTURES/ |
lecture Markdown with scenarios and diagrams | conceptual model building plus short demonstrations |
04_SEMINARS/ |
seminar explanations, tasks, scenarios, code and Docker configs | practical work with evidence capture |
The kit uses a repeated loop:
- Model: you introduce a concept and the constraints under which it is valid.
- Observation: you run a controlled scenario and observe behaviour.
- Explanation: you justify observations with protocol level reasoning.
- Transfer: you reuse the same reasoning in a different context.
@startuml
skinparam backgroundColor white
skinparam shadowing false
skinparam defaultFontName Arial
skinparam ArrowColor #1f2937
skinparam ComponentBorderColor #111827
skinparam ComponentBackgroundColor #f9fafb
title Teaching loop: model → evidence → explanation → transfer
actor "Instructor" as I
actor "Student" as S
component "Lecture (model)" as L
component "Seminar (evidence)" as E
component "Project (transfer)" as P
component "QA scripts" as Q
I --> L : deliver
S --> L : pre-read
L --> E : frame tasks
S --> E : run and observe
E --> P : integrate
Q --> L : consistency
Q --> E : consistency
@endumlYou do not need to install everything on day one. You should expand your toolchain as the seminars demand it.
| Tool | Why it matters | Where you will use it |
|---|---|---|
| 🧭 Git | versioned distribution and updates | cloning, updating and optional contributions |
| 🐍 Python 3.10+ | runnable scripts and protocol exercises | seminars, scenarios and project tooling |
| 🔎 Wireshark and tshark | packet capture and protocol inspection | S01 and most later labs |
| 🐳 Docker Engine and Docker Compose | isolated services and reproducible stacks | many seminars and several lecture scenarios |
| 🏁 COMPNET lab runner (optional) | consistent start/stop commands for Compose scenarios | selected lecture scenarios (Phase C pilot) |
| 🎛️ Portainer CE (optional) | visual inspection of containers and networks | convenient debugging and classroom demos |
| ☕ Java 8+ | PlantUML rendering | diagrams in lectures, seminars and projects |
| 🧩 Node.js (optional) | formatting checks (Prettier) | if you edit Markdown or HTML |
| 🌐 Mininet-SDN (optional) | controlled virtual topologies | SDN and routing related activities |
The default Windows student stack is WSL2 + Ubuntu + Docker Engine + Portainer.
The full installation is documented in 00_TOOLS/Prerequisites/Prerequisites.md.
Choose the pathway that matches your context. The kit remains usable even if you do not have Mininet-SDN or Portainer.
- Use GitHub to read the materials.
- Start with
current-outline.mdthen follow into03_LECTURES/and04_SEMINARS/.
This supports early seminars and many lecture scenarios.
git clone https://github.com/antonioclim/COMPNET-EN.git
cd COMPNET-EN
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pipWhere additional Python packages are needed, the relevant seminar directory will specify them.
Docker is the default execution substrate for multi service labs. Portainer is a convenience layer. If you do not install it, you can still complete the labs using the Docker CLI.
Minimum checks:
docker version
docker compose versionOptional Portainer (Linux, WSL2 or any host running Docker Engine):
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
# open http://localhost:9000Mininet-SDN is used when you need a controlled topology that behaves like a network rather than a set of containers. It is primarily relevant for SDN style exercises and selected routing demonstrations.
- See
01_GHID_MININET-SDN/SETUP-GUIDE-COMPNET-EN.md. - On Windows, this is typically used via a VM.
git clone https://github.com/antonioclim/COMPNET-EN.git
cd COMPNET-ENgit pullSparse checkout is useful when you want only a single lecture, a single seminar or a small subset for a given week. It reduces local clutter and supports a week-by-week workflow.
These commands require Git 2.25+.
git clone --depth 1 --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 03_LECTURES 00_TOOLSgit clone --depth 1 --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 04_SEMINARS 00_TOOLSgit clone --depth 1 --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 03_LECTURES/C08 00_TOOLSgit clone --depth 1 --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 04_SEMINARS/S12 00_TOOLSgit clone --depth 1 --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 03_LECTURES/C05 04_SEMINARS/S05 00_TOOLSIf you already have a sparse checkout, you can switch what is present in your working tree.
# example: switch from Week 05 to Week 06
git sparse-checkout set 03_LECTURES/C06 04_SEMINARS/S06 00_TOOLSAdvanced: reduce download size (partial clone)
If your Git version and network support it, you can combine sparse checkout with a partial clone. This can reduce the initial download because file contents are fetched on demand.
git clone --depth 1 --filter=blob:none --sparse https://github.com/antonioclim/COMPNET-EN.git COMPNET-EN
cd COMPNET-EN
git sparse-checkout set 03_LECTURES/C01 04_SEMINARS/S01 00_TOOLSBefore S01 you should validate that the baseline tools are working.
bash 00_TOOLS/Prerequisites/verify_lab_environment.shThe script checks for core commands and expected versions.
If it reports missing components, follow 00_TOOLS/Prerequisites/Prerequisites.md.
Seminar directories are written as a sequence of short parts. You should follow the order because later tasks assume earlier artefacts.
A pragmatic workflow is:
- Open the seminar README for the context and evidence expectations.
- Read each part file in order. Scenario files frame the experiment. Task files state what you must produce.
- Run commands from inside the seminar directory so relative paths work.
- Capture evidence as you go:
- terminal outputs
.pcapngpacket captures- Docker logs
- Clean up between attempts.
If a seminar uses Docker Compose, prefer
docker compose down -v.
This is both a navigation tool and a dependency map.
Course coverage: lecture and seminar indices
Lecture index is maintained in 03_LECTURES/README.md.
Seminar index is maintained in 04_SEMINARS/README.md.
- Lectures:
03_LECTURES/C01/…03_LECTURES/C13/ - Seminars:
04_SEMINARS/S01/…04_SEMINARS/S13/
Diagrams are authored in PlantUML so you can regenerate them and avoid diagram drift.
- Download
plantuml.jar(kept out of Git)
bash 00_TOOLS/plantuml/get_plantuml_jar.sh- Render diagrams for one lecture or one seminar
cd 03_LECTURES/C01/assets
bash render.sh- Render all diagram sets (lectures, seminars and projects)
bash 00_TOOLS/plantuml/get_plantuml_jar.sh
find . -path "*/assets/render.sh" -print0 | while IFS= read -r -d '' f; do
(cd "$(dirname "$f")" && bash ./render.sh)
donePortainer is a management interface. Docker Engine is what actually runs the containers.
You can deliver and complete the course without Portainer. The value of Portainer is observability for beginners and rapid inspection during seminars.
| Common action | Portainer approach | CLI equivalent |
|---|---|---|
| list containers | Containers view | docker ps |
| view logs | container logs panel | docker logs -f <container> |
| inspect networks | Networks view | docker network ls and docker network inspect <net> |
| bring up a stack | Stacks feature (if enabled) | docker compose up -d |
| stop and clean | container stop and remove | docker compose down -v |
Mininet-SDN is not a prerequisite for the whole module. It is a specialised environment for controlled topology work.
| Capability | Without Mininet-SDN | With Mininet-SDN |
|---|---|---|
| service composition | Docker networks | virtual switches and hosts |
| routing demonstrations | limited, container centric | native routing style topologies |
| SDN flow experimentation | not available | available |
| required for | most weeks | selected tasks, mainly S06 |
If you do not have Mininet-SDN, you can still complete the majority of seminars. Where Mininet-SDN is expected, the seminar will state it explicitly and provide alternatives where feasible.
If you change the repository you should keep it deterministic. The following checks are safe to run locally from the repository root.
python 00_TOOLS/qa/check_markdown_links.py
python 00_TOOLS/qa/check_integrity.pyIf you edit Markdown or HTML, run formatting:
npm install
npm run format:check
# or offline
node format-offline.js --writeSeveral seminars include scanning and security related activities. You must restrict all scanning and testing to controlled laboratory networks and approved targets. Do not point these exercises at public infrastructure.
This repository is distributed under a Restrictive Educational Licence.
You should read LICENCE.md before reuse.
In practical terms:
| Allowed without additional permission | Not allowed without explicit written permission |
|---|---|
| personal study, local execution and local modification | redistribution, mirroring and organised teaching outside ASE-CSIE |
| personal notes for private reference | commercial use and paid training |
| citation as required by the licence | publishing derivative works without meeting the licence conditions |
Clim, A. (2025). Computer Networks — Course Kit (EN). Bucharest University of Economic Studies (ASE), Faculty of Economic Cybernetics, Statistics and Informatics (CSIE). https://github.com/antonioclim/COMPNET-EN
.
├── 00_APPENDIX
├── 00_TOOLS
├── 01_GHID_MININET-SDN
├── 02_PROJECTS
├── 03_LECTURES
├── 04_SEMINARS
├── CHANGELOG.md
├── LICENCE.md
├── current-outline.md
└── requirements-optional.txt