Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie w systemie Linux
Tok studiów:
2015/2016
Kod:
BIT-1-507-s
Wydział:
Geologii, Geofizyki i Ochrony Środowiska
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
5
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
dr Oleksik Paweł (oleksik@agh.edu.pl)
Osoby prowadzące:
dr Oleksik Paweł (oleksik@agh.edu.pl)
Krótka charakterystyka modułu

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Ma praktyczną wiedzę z zakresu wybranych aspektów programowania w systemie Linux. IT1A_W04, IT1A_W16, IT1A_W11 Aktywność na zajęciach
Umiejętności
M_U001 potrafi korzystać z podstawowych narzędzi programistycznych oraz przynajmniej jednego systemu zarządzania wersjami. IT1A_U01, IT1A_U12, IT1A_U06 Aktywność na zajęciach
M_U002 potrafi tworzyć biblioteki dynamiczne oraz programowo je obsługiwać IT1A_U16, IT1A_U13 Wykonanie projektu
M_U003 potrafi stworzyć zespół współbieżnych programów w oparciu o mechanizm fork-wait-exec oraz IPC IT1A_U16, IT1A_U13 Wykonanie projektu
M_U004 potrafi zastosować funkcje select i epoll IT1A_U16, IT1A_U13 Wykonanie projektu
M_U005 potrafi zbudować prosty interfejs użytkownika IT1A_U16, IT1A_U13 Wykonanie projektu
M_U006 Potrafi zastosować informacje zawarte w dostarczanej dokumentacji technicznej. IT1A_U05, IT1A_U06 Aktywność na zajęciach,
Wykonanie projektu
Kompetencje społeczne
M_K001 Student ma świadomość odpowiedzialności za własną pracę IT1A_K03 Wykonanie projektu
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Ma praktyczną wiedzę z zakresu wybranych aspektów programowania w systemie Linux. + - + - - - - - - - -
Umiejętności
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. - - + - - - - - - - -
Kompetencje społeczne
M_K001 Student ma świadomość odpowiedzialności za własną pracę - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  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.

Ćwiczenia laboratoryjne:
  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.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 113 godz
Punkty ECTS za moduł 4 ECTS
Udział w wykładach 15 godz
Samodzielne studiowanie tematyki zajęć 28 godz
Udział w ćwiczeniach laboratoryjnych 30 godz
Przygotowanie do zajęć 40 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Ocena końcowa odpowiada ocenie z zaliczenia.

Wymagania wstępne i dodatkowe:

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

Zalecana literatura i pomoce naukowe:

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

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

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