Network Programming

Објавено: October 12, 2018
  1.    Course Title Network Programming
  2.    Code 3ФЕИТ12З011
  3.    Study program KTI, TKII
  4.    Organizer of the study program (unit, institute, department) Faculty of Electrical Engineering and Information Technologies
  5.    Degree (first, second, third cycle) First cycle
  6.    Academic year/semester III/5, IV/7   7.    Number of ECTS credits 6.00
  8.    Lecturer Dr Marija Kalendar, Dr Marko Porjazoski
  9.    Course Prerequisites Taken course: Data Structures and Algorithm Analysis

10.    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

11.    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.

12.    Learning methods:  Lectures, tasks and exercises and laboratory practice
13.    Total number of course hours 2 + 2 + 1 + 0
14.    Distribution of course hours 180
15.    Forms of teaching 15.1. Lectures-theoretical teaching 30
15.2. Exercises (laboratory, practice classes), seminars, teamwork 45
16.    Other course activities 16.1. Projects, seminar papers 25
16.2. Individual tasks 20
16.3. Homework and self-learning 60
17.    Grading 17.1. Exams 10
17.2. Seminar work/project (presentation: written and oral) 10
17.3. Activity and participation 0
17.4. Final exam 80
18.    Grading criteria (points) up to 50 points     5 (five) (F)
from 51 to 60 points     6 (six) (E)
from 61 to 70 points     7 (seven) (D)
from 71 to 80 points     8 (eight) (C)
from 81 to 90 points     9 (nine) (B)
from 91 to 100 points   10 (ten) (A)
19.    Conditions for acquiring teacher’s signature and for taking final exam Finishing laboratory exercises and a Project
20.  Forms of assessment Two partial exams during the semester lasting 120 minutes each or one written exam in an appropriate exam session lasting 120 minutes and preparation of a practical project task.
The final grade includes exam points, project assignment points, homework points and laboratory exercise points.
It is not allowed to use books, scripts, manuscripts or notes of any kind during the exam, as well as a calculator, mobile phone, tablet or any other electronic device
21.  Language Macedonian and English
22.  Method of monitoring of teaching quality Internal evaluation and surveys
23.  Literature
23.1. Required Literature
No. Author Title Publisher Year
1 R. Stevens, B. Fenner, A. Rudoff UNIX Network Programming, Volume 1, The Sockets Networking API, 3rd ed. Addison Wesley 2004
2 B. Rhodes, J. Goerzen Foundations of Python Network Programming, 3rd Еd. Apress 2014
3 Dr. M.O.F. Sarker, S. Washington Learning Python Network Programming Packt Publishing 2015
23.2. Additional Literature
No. Author Title Publisher Year
1 N. Yocom, J. Turner, K. Davis  The Definitive Guide to Linux Network Programming  Apress  2004