Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (N1)

Sylabus przedmiotu Zaawansowane programowanie w systemie Linux - przedmiot obieralny I:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia niestacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów nauk technicznych, studiów inżynierskich
Profil ogólnoakademicki
Moduł
Przedmiot Zaawansowane programowanie w systemie Linux - przedmiot obieralny I
Specjalność systemy komputerowe i oprogramowanie
Jednostka prowadząca Katedra Inżynierii Systemów Informacyjnych
Nauczyciel odpowiedzialny Bożena Śmiałkowska <Bozena.Smialkowska@zut.edu.pl>
Inni nauczyciele
ECTS (planowane) 2,0 ECTS (formy) 2,0
Forma zaliczenia zaliczenie Język polski
Blok obieralny 4 Grupa obieralna 5

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
wykładyW5 10 1,00,50zaliczenie
laboratoriaL5 10 1,00,50zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Płynne poruszanie się w systemie Linux
W-2Znajomość języka C na poziomie średnio-zaawansowanym, podstawowa znajomość języka C++ oraz podstawowa wiedza na temat paradygmatu programowania zorientowanego obiektowo
W-3Biegłe posługiwanie się kompilatorem (Gcc lub Clang) i debuggerem

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Zapoznanie studentów z wdrażaniem jądra systemu Linux na platformach dedykowanych
C-2Zapoznanie studentów z programowaniem w systemie Linux w warstwie użytkownika i na poziomie jądra systemu
C-3Zapoznanie studentów z procesem rozwoju oprogramowania w trybie korporacyjnym

Treści programowe z podziałem na formy zajęć

KODTreść programowaGodziny
laboratoria
T-L-1Własne jądro systemu: budowa i instalacja na własnej platformie2
T-L-2Aplikacja, program, proces, wątek, synchronizacja, komunikacja międzyprocesowa/między komputerowa2
T-L-3Demultipleksacja i podejście "Event Oriented"2
T-L-4Budowa kanonicznego modułu jądra systemu1
T-L-5Komunikacja moduł jądra – warstwa użytkownika (netlink)1
T-L-6Budowa kanonicznego sterownika1
T-L-7Sterowniki sieciowe1
10
wykłady
T-W-1Budowa systemu Linux z punktu widzenia użytkownika1
T-W-2Podstawowa nomenklatura1
T-W-3Podejście "Event Oriented" i wzorce silników obsługi zdarzeń1
T-W-4Testowanie1
T-W-5Moduły jądra systemu i ich kontekst1
T-W-6Pliki character device i jego sterowniki, system plików /proc1
T-W-7Komunikacja: kernel space-user space, z plikami urządzeń1
T-W-8Wywołania systemowe, blokowanie procesów, obsługa przerwań1
T-W-9Budowa kanonicznego sterownika1
T-W-10Sterowniki sieciowe1
10

Obciążenie pracą studenta - formy aktywności

KODForma aktywnościGodziny
laboratoria
A-L-1Udział w laboratoriach10
A-L-2Udział w konsultacjach i zaliczeniu1
A-L-3Przygotowanie sprawozdań i aplikacji - praca własna studenta.20
31
wykłady
A-W-1Udział w zajęciach10
A-W-2Konsultacje i zaliczenie1
A-W-3Studiowanie literatury przedmiotu - przygotowanie się do zaliczenia wykładu20
31

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1Wykład informacyjny
M-2Metoda projektów

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: Ocena rozwiązań z poszczególnych etapów realizacji projektu
S-2Ocena podsumowująca: Zaliczenie części teoretycznej

Zamierzone efekty kształcenia - wiedza

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_O/1/05_W01
Student zna podstawową architekturę systemu Linux, pojęcie jądra systemu, zna zależności w warstwie użytkownika i jej odniesienie do warstwy jądra systemu a także zna metody komunikacji pomiędzy jądrem systemu i warstwą użytkownika. Zna budowę kanonicznego sterownika.
I_1A_W04, I_1A_W10T1A_W03, T1A_W04, T1A_W05, T1A_W06, T1A_W07InzA_W01, InzA_W02, InzA_W05C-1, C-2, C-3T-W-1, T-W-2, T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10M-1S-2

Zamierzone efekty kształcenia - umiejętności

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_O/1/05_U01
Student potrafi zaprojektować architekturę i wykonać oprogramowanie z wykorzystananiem elementów systemu Linux
I_1A_U03T1A_U01, T1A_U08, T1A_U09, T1A_U10, T1A_U13, T1A_U14, T1A_U15InzA_U01, InzA_U02, InzA_U03, InzA_U05, InzA_U06, InzA_U07C-1, C-2, C-3T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7M-2S-1

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
I_1A_O/1/05_W01
Student zna podstawową architekturę systemu Linux, pojęcie jądra systemu, zna zależności w warstwie użytkownika i jej odniesienie do warstwy jądra systemu a także zna metody komunikacji pomiędzy jądrem systemu i warstwą użytkownika. Zna budowę kanonicznego sterownika.
2,0Student nie zna podstawowej architektury systemu Linux
3,0Student zna podstawową architekturę systemu Linux. Rozumie i zna zależności w warstwie użytkownika i jej odniesienie do warstwy jądra systemu
3,5
4,0
4,5
5,0

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
I_1A_O/1/05_U01
Student potrafi zaprojektować architekturę i wykonać oprogramowanie z wykorzystananiem elementów systemu Linux
2,0Student nie wykona wszystkich etapów projektu
3,0Student wykonał każdy etap projektu lecz rozwiązanie posiada wady wpływające na stabilność rozwiązania
3,5
4,0
4,5
5,0

Literatura podstawowa

  1. Mark Mitchell, Jeffrey Oldham, Alex Samuel, Advanced Linux Programming, http://www.advancedlinuxprogramming.com
  2. Jonathan Corbet, Alessandro Rubini, Grek Kroah-Hartman, Linux Device Drivers, https://lwn.net/Kernel/LDD3/

Literatura dodatkowa

  1. Peter Jay Salzman, Michael Burian, Ori Pomeranz, The Linux Kernel Module Programming Guide, http://www.tldp.org/LDP/lkmpg/
  2. Kevin Kaichuan He, Why and How to Use Netlink Socket, http://www.linuxjournal.com/article/7356
  3. Roman Ulan, Wzorce silników zdarzeń, http://bottega.com.pl/artykuly-i-prezentacje#cpp

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Własne jądro systemu: budowa i instalacja na własnej platformie2
T-L-2Aplikacja, program, proces, wątek, synchronizacja, komunikacja międzyprocesowa/między komputerowa2
T-L-3Demultipleksacja i podejście "Event Oriented"2
T-L-4Budowa kanonicznego modułu jądra systemu1
T-L-5Komunikacja moduł jądra – warstwa użytkownika (netlink)1
T-L-6Budowa kanonicznego sterownika1
T-L-7Sterowniki sieciowe1
10

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Budowa systemu Linux z punktu widzenia użytkownika1
T-W-2Podstawowa nomenklatura1
T-W-3Podejście "Event Oriented" i wzorce silników obsługi zdarzeń1
T-W-4Testowanie1
T-W-5Moduły jądra systemu i ich kontekst1
T-W-6Pliki character device i jego sterowniki, system plików /proc1
T-W-7Komunikacja: kernel space-user space, z plikami urządzeń1
T-W-8Wywołania systemowe, blokowanie procesów, obsługa przerwań1
T-W-9Budowa kanonicznego sterownika1
T-W-10Sterowniki sieciowe1
10

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1Udział w laboratoriach10
A-L-2Udział w konsultacjach i zaliczeniu1
A-L-3Przygotowanie sprawozdań i aplikacji - praca własna studenta.20
31
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1Udział w zajęciach10
A-W-2Konsultacje i zaliczenie1
A-W-3Studiowanie literatury przedmiotu - przygotowanie się do zaliczenia wykładu20
31
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/1/05_W01Student zna podstawową architekturę systemu Linux, pojęcie jądra systemu, zna zależności w warstwie użytkownika i jej odniesienie do warstwy jądra systemu a także zna metody komunikacji pomiędzy jądrem systemu i warstwą użytkownika. Zna budowę kanonicznego sterownika.
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W04ma podstawową wiedzę dotyczącą systemów operacyjnych
I_1A_W10zna podstawowe architektury systemów komputerowych, w tym systemów wbudowanych
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_W03ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną obejmującą kluczowe zagadnienia z zakresu studiowanego kierunku studiów
T1A_W04ma szczegółową wiedzę związaną z wybranymi zagadnieniami z zakresu studiowanego kierunku studiów
T1A_W05ma podstawową wiedzę o trendach rozwojowych z zakresu dziedzin nauki i dyscyplin naukowych, właściwych dla studiowanego kierunku studiów
T1A_W06ma podstawową wiedzę o cyklu życia urządzeń, obiektów i systemów technicznych
T1A_W07zna podstawowe metody, techniki, narzędzia i materiały stosowane przy rozwiązywaniu prostych zadań inżynierskich z zakresu studiowanego kierunku studiów
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_W01ma podstawową wiedzę o cyklu życia urządzeń, obiektów i systemów technicznych
InzA_W02zna podstawowe metody, techniki, narzędzia i materiały stosowane przy rozwiązywaniu prostych zadań inżynierskich z zakresu studiowanego kierunku studiów
InzA_W05zna typowe technologie inżynierskie w zakresie studiowanego kierunku studiów
Cel przedmiotuC-1Zapoznanie studentów z wdrażaniem jądra systemu Linux na platformach dedykowanych
C-2Zapoznanie studentów z programowaniem w systemie Linux w warstwie użytkownika i na poziomie jądra systemu
C-3Zapoznanie studentów z procesem rozwoju oprogramowania w trybie korporacyjnym
Treści programoweT-W-1Budowa systemu Linux z punktu widzenia użytkownika
T-W-2Podstawowa nomenklatura
T-W-3Podejście "Event Oriented" i wzorce silników obsługi zdarzeń
T-W-4Testowanie
T-W-5Moduły jądra systemu i ich kontekst
T-W-6Pliki character device i jego sterowniki, system plików /proc
T-W-7Komunikacja: kernel space-user space, z plikami urządzeń
T-W-8Wywołania systemowe, blokowanie procesów, obsługa przerwań
T-W-9Budowa kanonicznego sterownika
T-W-10Sterowniki sieciowe
Metody nauczaniaM-1Wykład informacyjny
Sposób ocenyS-2Ocena podsumowująca: Zaliczenie części teoretycznej
Kryteria ocenyOcenaKryterium oceny
2,0Student nie zna podstawowej architektury systemu Linux
3,0Student zna podstawową architekturę systemu Linux. Rozumie i zna zależności w warstwie użytkownika i jej odniesienie do warstwy jądra systemu
3,5
4,0
4,5
5,0
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/1/05_U01Student potrafi zaprojektować architekturę i wykonać oprogramowanie z wykorzystananiem elementów systemu Linux
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U03umie oceniać przydatność i stosować różne paradygmaty programowania, języki i środowiska programistyczne do rozwiązywania problemów dziedzinowych
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_U01potrafi pozyskiwać informacje z literatury, baz danych oraz innych właściwie dobranych źródeł, także w języku angielskim lub innym języku obcym uznawanym za język komunikacji międzynarodowej w zakresie studiowanego kierunku studiów; potrafi integrować uzyskane informacje, dokonywać ich interpretacji, a także wyciągać wnioski oraz formułować i uzasadniać opinie
T1A_U08potrafi planować i przeprowadzać eksperymenty, w tym pomiary i symulacje komputerowe, interpretować uzyskane wyniki i wyciągać wnioski
T1A_U09potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
T1A_U10potrafi - przy formułowaniu i rozwiązywaniu zadań inżynierskich - dostrzegać ich aspekty systemowe i pozatechniczne
T1A_U13potrafi dokonać krytycznej analizy sposobu funkcjonowania i ocenić - zwłaszcza w powiązaniu ze studiowanym kierunkiem studiów - istniejące rozwiązania techniczne, w szczególności urządzenia, obiekty, systemy, procesy, usługi
T1A_U14potrafi dokonać identyfikacji i sformułować specyfikację prostych zadań inżynierskich o charakterze praktycznym, charakterystycznych dla studiowanego kierunku studiów
T1A_U15potrafi ocenić przydatność rutynowych metod i narzędzi służących do rozwiązania prostego zadania inżynierskiego o charakterze praktycznym, charakterystycznego dla studiowanego kierunku studiów oraz wybrać i zastosować właściwą metodę i narzędzia
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_U01potrafi planować i przeprowadzać eksperymenty, w tym pomiary i symulacje komputerowe, interpretować uzyskane wyniki i wyciągać wnioski
InzA_U02potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
InzA_U03potrafi - przy formułowaniu i rozwiązywaniu zadań inżynierskich - dostrzegać ich aspekty systemowe i pozatechniczne
InzA_U05potrafi dokonać krytycznej analizy sposobu funkcjonowania i ocenić - zwłaszcza w powiązaniu ze studiowanym kierunkiem studiów - istniejące rozwiązania techniczne, w szczególności urządzenia, obiekty, systemy, procesy, usługi
InzA_U06potrafi dokonać identyfikacji i sformułować specyfikację prostych zadań inżynierskich o charakterze praktycznym, charakterystycznych dla studiowanego kierunku studiów
InzA_U07potrafi ocenić przydatność rutynowych metod i narzędzi służących do rozwiązania prostego zadania inżynierskiego o charakterze praktycznym, charakterystycznego dla studiowanego kierunku studiów oraz wybrać i zastosować właściwą metodę i narzędzia
Cel przedmiotuC-1Zapoznanie studentów z wdrażaniem jądra systemu Linux na platformach dedykowanych
C-2Zapoznanie studentów z programowaniem w systemie Linux w warstwie użytkownika i na poziomie jądra systemu
C-3Zapoznanie studentów z procesem rozwoju oprogramowania w trybie korporacyjnym
Treści programoweT-L-1Własne jądro systemu: budowa i instalacja na własnej platformie
T-L-2Aplikacja, program, proces, wątek, synchronizacja, komunikacja międzyprocesowa/między komputerowa
T-L-3Demultipleksacja i podejście "Event Oriented"
T-L-4Budowa kanonicznego modułu jądra systemu
T-L-5Komunikacja moduł jądra – warstwa użytkownika (netlink)
T-L-6Budowa kanonicznego sterownika
T-L-7Sterowniki sieciowe
Metody nauczaniaM-2Metoda projektów
Sposób ocenyS-1Ocena formująca: Ocena rozwiązań z poszczególnych etapów realizacji projektu
Kryteria ocenyOcenaKryterium oceny
2,0Student nie wykona wszystkich etapów projektu
3,0Student wykonał każdy etap projektu lecz rozwiązanie posiada wady wpływające na stabilność rozwiązania
3,5
4,0
4,5
5,0