This is the main repo for the course RES, taught at HEIG-VD in 2021.
This is where you will find lecture notes, slides and some of the examples presented in the class. We will also keep links to the different repos used throughout the semester (for assignments).
- Thursday April 1st: first written test.
- Will take place at school.
- RES-A students will be in room C23, RES-B students will be in room B23.
- Bring your laptop, fully equipped with wireshark, netcat, code samples and what you will have done in the next 2 lab sessions.
- Friday, March 26th: you will work on an exercise to design, then to implement a simple application-level protocol. You will not get a grade for this lab. However, you need to do the work and to understand the content in order to have a smooth experience during the first test.
Week | Course | Lab |
---|---|---|
1 | Introduction, process & tools | Chill Protocol (no grade) |
2 | Java IO - part 1 | Java IO |
3 | Java IO - part 2 | Java IO (grade, weight 1) |
4 | TCP programming | Protocol design exercise (no grade) |
5 | TCP programming | Protocol implementation exercise (no grade) |
6 | Test 1 | SMTP lab |
Eastern break | ||
7 | SMTP | SMTP lab (grade, weight 1) |
8 | HTTP Protocol + intro to Docker | Implement a minimal HTTP client |
9 | HTTP Protocol + intro to Docker | implement a minimal HTTP server |
10 | HTTP infrastructure | HTTP infra lab |
11 | HTTP infra lab (grade) | HTTP infra lab |
12 | Test 2 | HTTP infra lab |
13 | HTTP infra lab (grade) | HTTP infra lab (grade, weight 3) |
14 | UDP programming | UDP Lab (orchestra) |
15 | UDP Lab (orchestra) | UDP Lab (orchestra) |
16 | Semester review & exam prep | UDP Lab (orchestra) (grade, weight 1) |
Title | Repo (new repos need to be created for 2021) | Webcasts | Graded |
---|---|---|---|
Chill Protocol | https://github.com/SoftEng-HEIGVD/Teaching-HEIGVD-RES-2021-Chill | https://www.youtube.com/playlist?list=PLfKkysTy70QaN-uez0K4UpSpVUbt8ETpk (12 webcasts, ~2 hours). We need to update this, in order to use GitHub Actions instead of TravisCI. Also see this article on Medium. | no |
Labo Java IO | https://github.com/SoftEng-HEIGVD/https-github.com-SoftEng-HEIGVD-Teaching-HEIGVD-RES-2021-Labo-Java-IO | 3 webcasts have been added to the RES 2021 playlist | yes |
Protocol design exercise | https://github.com/SoftEng-HEIGVD/Teaching-HEIGVD-RES-2021-Exercise-Protocol-Design | 1 webcast has been added to the RES 2021 playlist. | no |
- YouTube playlist
- Course introduction: objectives, semester planning, intro to first lab
- The "Chill Protocol" lab
- Get familiar with the GitHub workflow
- Get familiar with toolset and practices that will be used during the semester (maven, lombok, JUnit)
- See a first example of a "communication" protocol
- Slides
- Java IO, part 1
- The Java IO Lab (file operations)
- Slides
- Java IO, part 2
- The Java IO Lab (file operations)
- Slides
- Webcast for the lab: https://www.youtube.com/watch?v=95GwsyiSMXI (added to the RES 2021 playlist)
- TCP programming, part 1
- Slides and extra slides.
- Recommended activities for the lab:
- Start by reading the guidelines in the lab repo (https://github.com/SoftEng-HEIGVD/Teaching-HEIGVD-RES-2021-Exercise-Protocol-Design)
- Do the exercise in a pair
- Watch my solution
- Redo the exercise (make sure that you are able to reapply the process for another protocol)
- Read and run the TCP examples
- TCP programming, part 2
- Slides and extra slides.
- Recommended activities for the lab:
- Work in pairs
- One student implements the client
- One student implement the server
- Try to make the client and the server work together, troubleshoot and review each other code
- This is the URL for an old lab (Roulette Protocol) that I talked about during the lecture. Once again, you do not have to do this lab, but it is interesting for you to read the code to understand the structure of a multi-threaded TCP server implementing a custom application-level protocol.
- Test 2