Module also offered within study programmes:
General information:
Name:
Programming in UNIX system
Course of study:
2017/2018
Code:
EEL-2-216-PT-s
Faculty of:
Faculty of Electrical Engineering, Automatics, Computer Science and Biomedical Engineering
Study level:
Second-cycle studies
Specialty:
Pomiary technologiczne i biomedyczne
Field of study:
Electrotechnics
Semester:
2
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
Turcza Paweł (turcza@agh.edu.pl)
Academic teachers:
Turcza Paweł (turcza@agh.edu.pl)
Module summary

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Rozumie potrzebę ciągłego dokształcania się i podnoszenia kwalifikacji zawodowych. EL2A_K01 Execution of laboratory classes
Skills
M_U001 Potrafi przeprowadzić kompilację i instalację programu w systemie UNIX. EL2A_U06 Execution of laboratory classes,
Completion of laboratory classes
M_U002 Potrafi wykorzystywać polecenia systemu UNIX do realizacji określonych zadań w swojej pracy. EL2A_U06 Execution of laboratory classes,
Completion of laboratory classes
M_U003 Potrafi wykorzystywać funkcje systemu UNIX w programach języka C/C++ do uzyskiwania podstawowych informacji o systemie. EL2A_U06 Execution of laboratory classes,
Completion of laboratory classes
M_U004 Potrafi wykorzystywać funkcje systemu UNIX w programach języka C/C++ realizujących obliczenia w sposób równoległy (wielowątkowy). EL2A_U06 Execution of laboratory classes,
Completion of laboratory classes
Knowledge
M_W001 Zna i rozumie działanie podstawowych poleceń systemu i funkcji systemowych omawianych w ramach modułu „Programowanie w systemie UNIX”. EL2A_W05 Execution of laboratory classes,
Completion of laboratory classes
M_W002 Zna i rozumie podstawowe pojęcia związane z problematyką programowania w języku C/C++ w systemie UNIX/Linux. EL2A_W09, EL2A_W05 Execution of laboratory classes,
Completion of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
M_K001 Rozumie potrzebę ciągłego dokształcania się i podnoszenia kwalifikacji zawodowych. - - + - - - - - - - -
Skills
M_U001 Potrafi przeprowadzić kompilację i instalację programu w systemie UNIX. - - + - - - - - - - -
M_U002 Potrafi wykorzystywać polecenia systemu UNIX do realizacji określonych zadań w swojej pracy. - - + - - - - - - - -
M_U003 Potrafi wykorzystywać funkcje systemu UNIX w programach języka C/C++ do uzyskiwania podstawowych informacji o systemie. - - + - - - - - - - -
M_U004 Potrafi wykorzystywać funkcje systemu UNIX w programach języka C/C++ realizujących obliczenia w sposób równoległy (wielowątkowy). - - + - - - - - - - -
Knowledge
M_W001 Zna i rozumie działanie podstawowych poleceń systemu i funkcji systemowych omawianych w ramach modułu „Programowanie w systemie UNIX”. + - - - - - - - - - -
M_W002 Zna i rozumie podstawowe pojęcia związane z problematyką programowania w języku C/C++ w systemie UNIX/Linux. + - - - - - - - - - -
Module content
Lectures:

  • Historia systemów UNIX’owych, zadania systemu operacyjnego, struktura plików w systemie UNIX. Deskryptor pliku i podstawowe operacje na plikach: open(), read(), write(), close() i ioctl(). Pliki specjalne w systemie UNIX. Wykorzystanie funkcje fstat, stat, lstat do uzyskiwania informacji o plikach. Wykorzystanie funkcji opendir, readdir, chdir w programach języka C do przeglądania katalogu plików. Informacja o systemie i procesach – system plików procfs.
  • Urządzenia w systemie plików UNIX. Sterowniki urządzeń USB w przestrzeni jądra i użytkownika. Protokół komunikacyjny magistrali USB. Omówienie struktur reprezentujących deskryptor urządzenia USB, jego konfiguracji, interfejsów oraz punktów końcowych (endpoints). Przykład pozyskiwania informacji o istniejących urządzeniach USB z wykorzystaniem funkcji systemu plików: opendir, readdir i stat.
  • Interpreter poleceń (BASH), deklaracje zmiennych i odwoływanie się do nich, zmienne środowiskowe, argumenty wywołania skryptu. Znaki specjalne. Wyrażenia warunkowe i instrukcje wyboru (case), pętle: for i while, listy i funkcje.
  • Pojęcie procesu i programu. Obraz pamięci procesu w systemie UNIX, pamięć virtualna. Tworzenie procesów za pomocą funkcji: fork, execl, execlp, system i popen. Wyświetlanie list istniejących procesów. Podstawy komunikacji między procesami. Wprowadzenie do obsługi sygnałów w UNIX’ie.
  • Standard POSIX obsługi sygnałów w UNIX’ie. Komunikacja międzyprocesowa z wykorzystaniem potoków. Wykorzystanie mechanizmu obsługi sygnałów do uzyskiwania informacji o sytuacji wyjątkowej w trakcie komunikacji poprzez potok (SIGPIPE).
  • Wykorzystanie potoków do synchronizacji procesów w systemie UNIX. Rozszerzenie wiadomości o wewnętrznej reprezentacji tablic plików i możliwościach jej modyfikacji (dup, dup2). Komunikacja międzyprocesowa w architekturze klient-serwer z wykorzystaniem kolejek FIFO – program serwera, program klientów w wersji blokującej i nieblokującej. Wprowadzenie do programu sterującego procesem kompilacji – make.
  • Kompilacja projektu przy pomocy make – reguły i zależności, pliki nagłówkowe, zmienne, makra i reguły wbudowane i użytkownika.
  • Wątki w systemie UNIX, obraz wątku w pamięci systemu, zalety przetwarzania wielowątkowego nad wieloprocesowym. Tworzenie i kończenie wątku. Synchronizacja wątków, sekcja krytyczna, zmienna typu mutex i zmienna warunkowa.
  • Podstawy języka C++: zmienne, typy, instrukcje. Klasa i obiekt w języku C++ (klasa, składowe klasy, widoczność składowych, definicja klasy, klasa i instancja klasy). Metody i ich wywołanie, konstruktor, destruktor, czas życia obiektu.
  • Dziedziczenie, polimorfizm, klasa abstrakcyjna, konstruktor i destruktor w klasie pochodnej. Polimorfizm (metody wirtualne, wczesne i późne wiązanie, wirtualne destruktory). Funkcje i klasy zaprzyjaźnione, przeładowanie operatorów, kopiowanie obiektów, konstruktor kopiujący. Szablony klas.

Laboratory classes:

  • Podstawowe operacje na plikach: open(), read(), write(), close() i ioctl(). Wykorzystanie funkcje fstat, stat, lstat do uzyskiwania informacji o plikach. Wykorzystanie funkcji opendir, readdir, chdir w programach języka C do przeglądania katalogu plików.
  • Wykorzystaniem funkcji systemu plików: opendir, readdir i stat do uzyskania podstawowych informacji o urządzeniach USB podłączonych do komputera.
  • Tworzenie procesów za pomocą funkcji: fork, execl, execlp, system i popen. Wyświetlanie list istniejących procesów.
  • Obsługa sygnałów w systemie UNIX’ie. Wykorzystanie sygnałów do komunikacji między procesami.
  • Komunikacja międzyprocesowa z wykorzystaniem potoków. Wykorzystanie mechanizmu obsługi sygnałów do uzyskiwania informacji o sytuacji wyjątkowej w trakcie komunikacji wykorzystującej mechanizm potoku (np. SIGPIPE)
  • Wykorzystanie potoków do synchronizacji procesów w systemie UNIX. Modyfikacja tablic plików (dup, dup2).
  • Kolejki FIFO i ich wykorzystanie do komunikacji międzyprocesowej programów w architekturze klient-serwer.
  • Kompilacja projektu przy pomocy polecenia make, budowa pliku makefile.
  • Programowanie wielowątkowe, problem synchronizacji wątków, sekcja krytyczna
  • Interpreter poleceń BASH
  • Podstawy języka C++, definiowanie klas i tworzenie obiektów.
  • Programowanie z wykorzystaniem biblioteki STL
  • Obsługa wyjątków w języku C++

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 78 h
Module ECTS credits 3 ECTS
Participation in lectures 28 h
Realization of independently performed tasks 15 h
Participation in laboratory classes 20 h
Preparation for classes 15 h
Additional information
Method of calculating the final grade:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z laboratorium.
2. Ocena końcowa jest oceną z laboratorium.
3. Ocena końcowa wystawiana jest zgodnie z regulaminem studiów.

Prerequisites and additional requirements:

brak

Recommended literature and teaching resources:

1 M. Rochkind, Programowanie w systemie UNIX dla zaawansowanych
2. M. Kerrisk, The Linux Programming interface (A Linux and UNIX System Programming Handbook)
3. N. Matthew, R. Stones, Beginning Linux Programming, 3ed
4. B Eckel, Thinking in C++, 2nd ed. Volume 1 & 2

Scientific publications of module course instructors related to the topic of the module:

Additional scientific publications not specified

Additional information:

None