Module also offered within study programmes:
General information:
Name:
Programming in Linux
Course of study:
2015/2016
Code:
BIT-1-507-s
Faculty of:
Geology, Geophysics and Environmental Protection
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
5
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr Oleksik Paweł (oleksik@agh.edu.pl)
Academic teachers:
dr Oleksik Paweł (oleksik@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 Student ma świadomość odpowiedzialności za własną pracę IT1A_K03 Execution of a project
Skills
M_U001 potrafi korzystać z podstawowych narzędzi programistycznych oraz przynajmniej jednego systemu zarządzania wersjami. IT1A_U01, IT1A_U12, IT1A_U06 Activity during classes
M_U002 potrafi tworzyć biblioteki dynamiczne oraz programowo je obsługiwać IT1A_U16, IT1A_U13 Execution of a project
M_U003 potrafi stworzyć zespół współbieżnych programów w oparciu o mechanizm fork-wait-exec oraz IPC IT1A_U16, IT1A_U13 Execution of a project
M_U004 potrafi zastosować funkcje select i epoll IT1A_U16, IT1A_U13 Execution of a project
M_U005 potrafi zbudować prosty interfejs użytkownika IT1A_U16, IT1A_U13 Execution of a project
M_U006 Potrafi zastosować informacje zawarte w dostarczanej dokumentacji technicznej. IT1A_U05, IT1A_U06 Activity during classes,
Execution of a project
Knowledge
M_W001 Ma praktyczną wiedzę z zakresu wybranych aspektów programowania w systemie Linux. IT1A_W04, IT1A_W16, IT1A_W11 Activity during 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 Student ma świadomość odpowiedzialności za własną pracę - - + - - - - - - - -
Skills
M_U001 potrafi korzystać z podstawowych narzędzi programistycznych oraz przynajmniej jednego systemu zarządzania wersjami. + - + - - - - - - - -
M_U002 potrafi tworzyć biblioteki dynamiczne oraz programowo je obsługiwać + - + - - - - - - - -
M_U003 potrafi stworzyć zespół współbieżnych programów w oparciu o mechanizm fork-wait-exec oraz IPC + - + - - - - - - - -
M_U004 potrafi zastosować funkcje select i epoll + - + - - - - - - - -
M_U005 potrafi zbudować prosty interfejs użytkownika - - + - - - - - - - -
M_U006 Potrafi zastosować informacje zawarte w dostarczanej dokumentacji technicznej. - - + - - - - - - - -
Knowledge
M_W001 Ma praktyczną wiedzę z zakresu wybranych aspektów programowania w systemie Linux. + - + - - - - - - - -
Module content
Lectures:
  1. Standardowe narzędzia zarządzania projektami.

    • Automatyzacja kompilacji.
    • Repozytoria i systemy kontroli wersji.
    • Wykorzystywanie zmian przyrostowych.

  2. Używanie debuggerów.

    • Podstawy obsługi GDB; analiza bezpośrednia i post-mortem.
    • Podłączanie do działającego procesu (analiza in situ).
    • Lokalizowanie wycieków pamięci.

  3. Uniksowe wzorce programistyczne.
  4. Porównanie mechanizmów realizacji współbieżności.

    • Procesy i IPC.
    • Wątki systemowe.
    • Wątki w modelu kooperacyjnym.

  5. Biblioteki statyczne i dynamiczne.

    • Budowa i zasady działania.
    • Kontrolowanie wyboru wersji biblioteki.
    • Dynamiczne ładowanie i rozładowywanie (technika plug-in).
    • Reguły prawidłowego tworzenia bibliotek dynamicznych.

  6. Zaawansowane operacje w systemie plików.

    • Specjalne właściwości wybranych systemów plików.
    • Mapowanie plików do pamięci.
    • Śledzenie zmian w systemie plików.

  7. Usługi sieciowe.

    • Gniazda domeny UNIX.
    • Serwer usług w modelu asynchronicznym.

  8. Interfejs użytkownika.

    • Parsowanie opcji wywołania programu.
    • Proste interfejsy oparte na dostępnych narzędziach.
    • Biblioteka ncurses.
    • Programowanie zdarzeniowe.
    • Wybrane biblioteki GUI.

Laboratory classes:
  1. Użytkowanie podstawowych narzędzi.

    • Programy: make, diff, patch oraz wybrany system kontroli wersji.
    • Mechanizmy edytora vim, wspomagające pracę programistów.

  2. Techniki debugowania.

    • Używanie raportów.
    • Program GDB.
    • Wyszukiwanie wycieków pamięci.

  3. Biblioteki dynamiczne.

    • Tworzenie bibliotek i ich użytkowanie.
    • Podmiana biblioteki przy uruchamianiu programu.
    • Dynamiczne ładowanie i rozładowywanie.

  4. Przydatne techniki związane z systemem plików.

    • Pliki tymczasowe.
    • Blokady.
    • Mapowanie plików do pamięci.

  5. Śledzenie zmian w systemie plików.
  6. Podstawowe techniki programowania współbieżnego.

    • Mechanizm fork-wait-exec.
    • Komunikacja między procesami niespokrewnionymi.
    • Wątki w modelu kooperacyjnym.
    • Wątki systemowe.

  7. Serwer usług w modelu asynchronicznym.

    • Funkcje select/poll/epoll.
    • Biblioteka event.

  8. Podstawowy interfejs użytkownika.

    • Analiza parametrów wywołania.
    • Narzędzia do tworzenia prostego interfejsu.

  9. Biblioteka ncurses.
  10. Wybrane środowisko GUI.

    • Zasady programowania zdarzeniowego.
    • Podstawowe elementy wybranego środowiska.
    • Programowanie RAD.

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

Ocena końcowa odpowiada ocenie z zaliczenia.

Prerequisites and additional requirements:

Umiejętność programowania proceduralnego.
Umiejętności użytkowania systemem Unix/Linux.
Wiedza z zakresu budowy systemów operacyjnych.

Recommended literature and teaching resources:

„Advanced Linux Programming”, Mark Mitchell, Jeffrey Oldham, Alex Samuel
„Linux. Programowanie systemowe”, Robert Love

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

Additional scientific publications not specified

Additional information:

Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Student może dwukrotnie przystąpić do poprawkowego zaliczania.

udział „praktycznych” punktów ECTS: 3
udział „teoretycznych” punktów ECTS: 1