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 Threshold Percent of Grade
Laboratory Exercises 0 % 15 % 0 % 15 %
Homeworks 0 % 10 % 0 % 0 %
Class participation 0 % 5 % 0 % 0 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 0 % 40 %
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

University undergraduate
Computer Engineering (module)
Elective Courses (6. semester)
Computer Science (module)
Elective Courses (6. semester)
Software Engineering and Information Systems (module)
Elective Courses (6. semester)
Telecommunication and Informatics (module)
Elective Courses (6. semester)

Prerequisites

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

Laboratory exercises

Grading System

ID 34335
  Summer semester
4 ECTS
L1 English Level
L1 e-Learning
30 Lecturers
0 Exercises
15 Laboratory exercises

General

90 Excellent
78 Very Good
65 Good
50 Acceptable