Course title: Network Programming
Number of credits (ECTS): 6
Weekly number of classes: 2+2+1+0
Prerequisite for enrollment of the subject: Taken course: Data Structures and Algorithm Analysis
Course Goals (acquired competencies): Introduction to network and communication protocols. TCP and UDP programming. Upon completion, the student will have basic knowledge of the communication protocols and working with them in Python.
Total available number of classes: 180
Course Syllabus: Introduction to Communication Networks. Architecture of the Internet. TCP/IP protocol stack. Introduction to Python network programming. Introduction to Socket Concepts. Types of sockets. Block diagram of TCP and UDP socket calls. Python Socket Module. Client/server programming. TCP and UDP client and server. Using the DNS system in network programming. Multiplexing of Socket I/O. Routines for event processing. Twisted framework for Python. Working with network interfaces. IPv4. IPv6. IPv4 collaboration with IPv6. Using application level libraries to work with the Web, e-mail, ftp. Working with HTTP protocol: httplib () and urllib (). Working with e-mail protocols and FTP. Using ftplib (); Working with SMTP, POP, and IMAP protocols. Using smtplib, Poplib. IMAPClient. Programming with CGI and CGI applications. Security issues with CGI applications. Using the API from a web site. Screen scraping versus the offered API; Security and network programming. Security with SSL and TLS; Working with custom certificates and OpenSSL. Network monitoring and security. Undefined (raw) sockets and sniffing network packets.
|R. Stevens, B. Fenner, A. Rudoff||UNIX Network Programming, Volume 1, The Sockets Networking API, 3rd ed.||Addison Wesley||2004|
|B. Rhodes, J. Goerzen||Foundations of Python Network Programming, 3rd Еd.||Apress||2014|
|Dr. M.O.F. Sarker, S. Washington||Learning Python Network Programming||Packt Publishing||2015|
|N. Yocom, J. Turner, K. Davis||The Definitive Guide to Linux Network Programming||Apress||2004|