Module Title: dgt_net02 – Write Server / Client programs with C
Overview:
This module, “dgt_net02 – Write Server / Client programs with C,” is intended for students and developers who want to learn the fundamentals of network programming in the C language. The module covers the principles behind robust client-server applications: how sockets work, how the TCP/IP stack carries data between processes, and what can go wrong along the way. In the practical part, the C code is written by the machine, not by you: you specify in natural language what the server and the client must do, and then read, test and challenge the code it produces.
Module Objectives:
– To understand the basics of TCP/IP protocols and how they enable communication between computers.
– To understand how server and client programs are implemented in C with sockets, well enough to describe them precisely to the machine and to review the code it generates.
– To explore real-world examples and scenarios where these skills are applied, including ethical hacking considerations.
– To understand network security principles and to verify that they are actually applied in the machine’s code.
Key Topics:
1. Introduction to Networking:
– Overview of networking concepts
– Understanding TCP/IP model and protocols
– Basics of sockets and socket programming
- C Programming for Network Applications:
- Preparing the development environment with the help of the machine
-
Detailed study of the C language features relevant to network programming
-
Building Client-Server Applications:
- Designing a simple client-server architecture
- Implementing TCP and UDP protocols in C
-
Handling multiple clients using multi-threading or the fork system call
-
Advanced Networking Concepts:
- Introduction to non-blocking sockets and select/poll mechanisms
-
Exploring secure socket layers SSL and transport layer security TLS
-
Ethical Hacking Considerations:
- Understanding vulnerabilities in network applications
- Techniques for securing client-server communications
-
Ethical hacking practices and their importance in network programming
-
Practical Examples in Natural Language:
- Describing to the machine a basic chat client and server, then reading the generated code step by step
- Real-world application scenarios e.g., file transfer, remote command execution, specified in plain language and checked for security flaws
- Diagnosing common networking issues in C programs by guiding the machine through the debugging
Module Format:
The module is delivered through a combination of lectures, natural-language labs and group discussions. Students have access to environments where an AI agent writes, compiles and runs the client-server applications they describe; their job is to state the requirements clearly (protocol, port, how many clients, error handling), read every line the machine produces, spot missing checks or unsafe buffer handling, and ask for corrections. Regular assignments reinforce the theoretical concepts covered in class.
Assessment Methods:
– Participation in lab exercises
– Weekly assignments: specifying programs to the machine and reviewing the code it writes
– Mid-term project involving a client-server application design
– Final exam covering module content
Prerequisites:
A basic understanding of C, enough to read code, and familiarity with fundamental computer networking concepts is recommended. Previous experience with systems programming will be beneficial but not mandatory.
Target Audience:
This module is intended for computer science students, software developers, IT professionals and people working in cybersecurity who wish to deepen their knowledge of network programming in C. It is particularly suited to those interested in ethical hacking and in improving the security of network applications.
Expected Outcomes:
Upon completion of this module, students will be able to:
– Direct the machine to develop secure and efficient client-server programs in C, and judge whether the result is correct.
– Apply networking principles effectively in various software solutions.
– Recognize potential vulnerabilities in networked systems, including in machine-generated code, and get them fixed.
– Communicate complex technical concepts clearly, to people and to machines, and collaborate on network programming projects.
The module combines theoretical knowledge with the practical judgment required for work in networking and cybersecurity.
The students can push their exercises to the Academy DevOps & SRE Git project. For this module, create a folder with your username as its name in the following subfolder: https://github.com/Garanti-Del-Talento/gdt_academy
