Network Programming

Course Description

Basic concepts of network and distributed programming. TCP and UDP socket interface. Client and server design. Network applications based on UDP and TCP. Design and implementation using threading and concurrency. Broadcast and multicast applications. SCTP socket interface. Security issues. Practical examples of network applications in Unix environment using C. Practical examples of network programming in Java and script languages.

General Competencies

Students will learn about network programming which will enable them to fully understand the abilities and uses of network applications. Students will gain practical skills in creation of network applications in Unix environment using C with some examples in Java and scripting languages.

Learning Outcomes

  1. Define types socket interfaces and specify their properties.
  2. Distinguish between connection and connectionless oriented applications.
  3. Distinguish the design process of iterative and concurrent servers.
  4. Write simple UDP network applications using C in Unix environments.
  5. Analyze simple network applications and debug errors in own applications.
  6. Use the basic tools for design and testing of network programs in Unix environment.

Forms of Teaching

Lectures

Lectures, with lecture notes and presentations available in advance on the web. Lectures will be held in two cycles (7 + 6 weeks), 2 hours a week.

Exams

Midterm exam will be held after the first lecture cycle, the final exam after the second lecture cycle. The students can also take regular exams.

Laboratory Work

Design of UDP and TCP clients and servers (using C-programming language) and verification in IMUNES network simulator environment. Laboratory exercises will be held in 3 cycles, each in extent of 5 hours.

Consultations

Regular weekly consultations.

Acquisition of Skills

Literature search on communication networks. Building software in C-programming language, debugging.

Programming Exercises

in homework and laboratory

Other Forms of Group and Self Study

Students independently solve program problems as a preparation for laboratory exercises.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Comment: Percent of Grade
Laboratory Exercises 0 % 15 % 0 % 15 %
Homeworks 0 % 15 % 0 % 0 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 0 % 45 %
Exam: Written 0 % 85 %

Week by Week Schedule

  1. Introduction. OSI and TCP/IP reference model. Client-server and peer-to-peer models.
  2. Port and socket. Socket API. Name and address.
  3. UDP server and client. Command line arguments parsing. Program testing.
  4. TCP server and client. Concurrency.
  5. Socket options.
  6. Raw socket.
  7. Daemons and super-server "inetd".
  8. Midterm examination.
  9. I/O multiplexing. Threading.
  10. Broadcast and multicast addressing and applications.
  11. Application protocols based on UDP. TFTP.
  12. Application protocols based on TCP. HTTP and FTP. Simple HTTP server.
  13. Security issues and programming guidelines.
  14. Java network programming.
  15. Final examination.

Study Programmes

Software Engineering and Information Systems -> Computing (Module)

Computer Engineering -> Computing (Module)

Computer Science -> Computing (Module)

Telecommunication and Informatics -> Computing (Module)

Literature

W. Richard Stevens, Bill Fenner, Andrew M. Rudoff Addison (2003.), Unix Network Programming, Vol. 1: The Sockets Networking API, Addison-Wesley Professional
Gary R. Wright, W. Richard Stevens (1995.), TCP/IP Illustrated: The Implementation, Vol. 2, Addison-Wesley Professional

Grading System

4 ECTS
L1 English Level
L1 e-Learning
30 Lecturers
0 Exercises
15 Laboratory exercises

Grading

90 Excellent
78 Very Good
65 Good
50 Acceptable