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 |