Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (S1)
specjalność: systemy komputerowe i oprogramowanie

Sylabus przedmiotu Systemy operacyjne II:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia stacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów nauk technicznych, studiów inżynierskich
Profil ogólnoakademicki
Moduł
Przedmiot Systemy operacyjne II
Specjalność przedmiot wspólny
Jednostka prowadząca Katedra Inżynierii Oprogramowania
Nauczyciel odpowiedzialny Witold Maćków <Witold.Mackow@zut.edu.pl>
Inni nauczyciele
ECTS (planowane) 3,0 ECTS (formy) 3,0
Forma zaliczenia egzamin Język polski
Blok obieralny Grupa obieralna

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
laboratoriaL4 30 2,00,38zaliczenie
wykładyW4 15 1,00,62egzamin

Wymagania wstępne

KODWymaganie wstępne
W-1podstawowe umiejętności programowania w języku C (ukończony kurs Podstawy programowania)
W-2znajomość ogólnej architektury i podstawowych mechanizmów systemu operacyjnego (ukończony kurs Systemy operacyjne I)

Cele przedmiotu

KODCel modułu/przedmiotu
C-1zapoznanie studentów z wybranymi elementami składowymi architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
C-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).

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

KODTreść programowaGodziny
laboratoria
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)2
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)2
T-L-3Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid).2
T-L-4Obsługa sygnałów (kill, sigprocmask, sigaction).2
T-L-5Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat).2
T-L-6Zarządzanie procesami cz.2 (fork, exec).2
T-L-7Programowanie wątków z wykorzystaniem bibliotek pthread.2
T-L-8Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO.2
T-L-9Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów.2
T-L-10Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej.2
T-L-11Komunikacja międzyprocesowa z wykorzystaniem gniazd.2
T-L-12Analiza struktury systemu plików EXT2.2
T-L-13Programowanie ładowalnych modułów jądra LKM.2
T-L-14Sterowniki urządzeń znakowych.4
30
wykłady
T-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)2
T-W-2Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki).4
T-W-3Architektura jądra Linux. Zarządzanie pamięcią i procesami.3
T-W-4Architektura jądra Linux. Wirtualny system plików VFS.1
T-W-5Budowa systemu plików z rodziny EXT.2
T-W-6Architektura jądra Linux. Ładowalne moduły jadra LKM.1
T-W-7Architektura jądra Linux. Urządzenia i sterowniki.2
15

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

KODForma aktywnościGodziny
laboratoria
A-L-1Udział w zajęciach laboratoryjnych30
A-L-2Przygotowanie do zajęć laboratoryjnych28
A-L-3Udział w konsultajach i zaliczeniu formy zajęć3
61
wykłady
A-W-1Udział w wykładzie15
A-W-2Przygotowanie do egzaminu i udział w egzaminie (2 godz.)13
A-W-3Udział w konsultacjach2
30

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1wykład informacyjny
M-2ćwiczenia laboratoryjne

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: wejściówka (ocena przygotowania do zajęć)
S-2Ocena formująca: ocena wykonywanego zadania programistycznego (ocena pracy wykonywanej na zajęciach)
S-3Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych)
S-4Ocena podsumowująca: semestralne sprawozdanie dotyczące używanych podczas rozwiązywania zadań programistycznych środowisk, bibliotek i narzędzi

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_C/08_W01
potrafi zidentyfikować i wytłumaczyć działanie elementów składowych bibliotek pozwalających na użycie wybranych mechanizmów systemu operacyjnego Linux
I_1A_W06T1A_W03, T1A_W05, T1A_W06, T1A_W07, T1A_W09InzA_W01, InzA_W02, InzA_W04, InzA_W05C-2T-W-1, T-W-2, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14M-1, M-2S-1, S-3
I_1A_C/08_W02
potrafi zidentyfikować i wytłumaczyć działanie wybranych elementów składowych architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
I_1A_W04T1A_W04, T1A_W07InzA_W02C-1, C-3T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-L-12M-1, M-2S-1, S-3

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_C/08_U01
potrafi napisać poprawny kod w języku C przy użyciu niskopoziomowych funkcji systemu Linux, który wykorzystuje wybrane mechanizmy systemu operacyjnego i/lub rozszerza funkcjonalność systemu (moduły ładowalne)
I_1A_U01T1A_U01, T1A_U02, T1A_U04, T1A_U07, T1A_U08, T1A_U09, T1A_U14, T1A_U15, T1A_U16InzA_U01, InzA_U02, InzA_U06, InzA_U07, InzA_U08C-1, C-2, C-3T-W-1, T-W-2, T-W-6, T-W-7, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14M-1, M-2S-1, S-2, S-3
I_1A_C/08_U02
potrafi w sposób efektywny wykorzystać do rozwiazywania zadań programistycznych dokumentację opisującą działanie wybranych elementów systemu operacyjnego Linux na poziomie jądra, odwołań systemowych i funkcji bibliotecznych
I_1A_U05T1A_U01, T1A_U02, T1A_U06, T1A_U07, T1A_U13InzA_U05C-2, C-3T-W-1, T-W-2, T-W-6, T-W-7, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14M-1, M-2S-2
I_1A_C/08_U03
potrafi skonfigurować środowisko programistyczne i posłużyć się dostępnymi narzędziami programistycznymi (kompilator, makefile, debuger, programy kontrolujące zarządzanie pamięcią i wykonujące analizę statyczną kodu) w celu efektywnego rozwiązania zadań programistycznych
I_1A_U06T1A_U01, T1A_U14, T1A_U15, T1A_U16InzA_U06, InzA_U07, InzA_U08C-2, C-3T-W-1, T-L-1, T-L-2M-1, M-2S-2, S-3

Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne

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_C/08_K01
ma świadomość korzyści wynikających z udostępniania wyników własnej pracy oraz korzystania z wyników pracy innych osób zgodnie z koncepcjami wolnego i/lub otwartego oprogramowania
I_1A_K01T1A_K01, T1A_K07C-2, C-3T-W-1, T-L-1, T-L-2M-1, M-2S-4

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
I_1A_C/08_W01
potrafi zidentyfikować i wytłumaczyć działanie elementów składowych bibliotek pozwalających na użycie wybranych mechanizmów systemu operacyjnego Linux
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi wymienić i wyjaśnić sposób użycia wybranych podstawowych mechanizmów systemowych (procesy, sygnały, system plików, biblioteki statyczne i dynamiczne)
3,5potrafi wymienić i wyjaśnić sposób użycia większości podstawowych mechanizmów systemowych (wątki, potoki)
4,0potrafi wymienić i wyjaśnić sposób użycia wybranych mechanizmów komunikacji międzyprocesowej (pamięć współdzielona, semafory, kolejki komunikatów)
4,5potrafi wymienić i wyjaśnić sposób użycia większości mechanizmów komunikacji międzyprocesowej (gniazda)
5,0potrafi objaśnić sposób tworzenia i użycia ładowalnego modułu jądra oraz prostego sterownika urządzenia znakowego
I_1A_C/08_W02
potrafi zidentyfikować i wytłumaczyć działanie wybranych elementów składowych architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi wymienić wybrane podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi
3,5potrafi wymienić wszystkie podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi
4,0potrafi opisać budowę i działanie modułów jądra systemu Linux odpowiedzialnych za zarządzanie pamięcią i procesami
4,5potrafi opisać budowę i działanie modułu VFS oraz systemu plików EXT2 (również na poziomie współpracy z VFS)
5,0potrafi wytłumaczyć budowę oraz działanie prostego sterownika urządzenia znakowego wykorzystującego mechanizm ładowalnego modułu jądra

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
I_1A_C/08_U01
potrafi napisać poprawny kod w języku C przy użyciu niskopoziomowych funkcji systemu Linux, który wykorzystuje wybrane mechanizmy systemu operacyjnego i/lub rozszerza funkcjonalność systemu (moduły ładowalne)
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (biblioteki statyczne i dynamiczne, proecsy, sygnały, zarządzanie systemem plików)
3,5potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (wątki, potoki)
4,0potrafi efektywnie użyć podstawowe mechanizmy komunikacji międzyprocesowej (biblioteka IPC, gniazda)
4,5potrafi napisać i użyć prosty moduł ładowalny jądra LKM
5,0potrafi napisać i użyć prosty sterownik urządzenia znakowego
I_1A_C/08_U02
potrafi w sposób efektywny wykorzystać do rozwiazywania zadań programistycznych dokumentację opisującą działanie wybranych elementów systemu operacyjnego Linux na poziomie jądra, odwołań systemowych i funkcji bibliotecznych
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi w stopniu podstawowym posługiwać się dostępną w systemie dokumentacją dotyczącą funkcji systemowych
3,5potrafi w stopniu zaawansowanym posługiwać sie dostępną w systemie dokumentacją dotyczącą funkcji systemowych
4,0potrafi instalować i aktualizować dokumentację dostępną w systemie dotczącą funkcji systemowych
4,5potrafi w stopniu podstawowym wykorzystać dokumentację kodu źródłowego jądra systemu
5,0potrafi w stopniu zaawansowanym wykorzystać dokumentację kodu źródłowego jądra systemu
I_1A_C/08_U03
potrafi skonfigurować środowisko programistyczne i posłużyć się dostępnymi narzędziami programistycznymi (kompilator, makefile, debuger, programy kontrolujące zarządzanie pamięcią i wykonujące analizę statyczną kodu) w celu efektywnego rozwiązania zadań programistycznych
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi w stopniu podstawowym użyć kompilator gcc oraz debuger gdb
3,5potrafi w stopniu zaawansowanym użyć kompilator gcc oraz stworzyć prosty plik projektu makefile
4,0potrafi w stopniu zaawansowanym użyć debugera gdb oraz stworzyć zaawansowany plik projektu makefile
4,5potrafi użyć wybrany program do analizy statycznej własnego kodu (przykładowo Rats)
5,0potrafi użyć wybrany program do dynamicznej kontroli pamięci własnego kodu (przykładowo Valgrind)

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
I_1A_C/08_K01
ma świadomość korzyści wynikających z udostępniania wyników własnej pracy oraz korzystania z wyników pracy innych osób zgodnie z koncepcjami wolnego i/lub otwartego oprogramowania
2,0nie spełnia kryteriów określonych dla oceny 3
3,0ma świadomość istnienia narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania
3,5potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania wybranych problemów
4,0korzysta do rozwiązywania zadań z wiedzy udostępnianej na zasadzie otwartych projektów
4,5potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania dowolnych problemów
5,0zna metody pozwalające na publikowanie własnej wiedzy i osiągnięć na zasadzie otwartych projektów i wolnego i/lub otwartego oprogramowania

Literatura podstawowa

  1. A.Silberschatz, I.Peterson, P.Galvin, Podstawy systemów operacyjnych, WNT, Warszawa, 2008
  2. D.P. Bovet, M. Ceasti, Linux Kernel, Wydawnictwo RM, Warszawa, 2001
  3. M.J. Bach, Budowa systemu operacyjnego Unix, WNT, Warszawa, 1995
  4. W. Richard Stevens, Programowanie w środowisku systemu UNIX, WNT, Warszawa, 2002

Literatura dodatkowa

  1. A.S.Tanenbaum, Rozproszone systemy operacyjne, WNT, Warszawa, 1997
  2. U. Vahalia, Jądro systemu UNIX, Nowe horyzonty, WNT, Warszawa, 2001
  3. M. Beck, H. Bohme, M. Dziadzka, U. Kunitz, R. Magnus, D. Verworner, Linux Kernel. Jądro system, MIKOM, 1999
  4. A. Rubini, J. Corbet, Linux Device Drivers, 2nd edition, O'Reilly, 2001
  5. William von Hagen, Systemy plików w Linuksie, Helion, 2003
  6. W. Richard Stevens, UNIX programowanie usług sieciowych 1. API: gniazda i XTI, WNT, Warszawa, 2000
  7. W. Richard Stevens, UNIX programowanie usług sieciowych 2. Komunikacja międzyprocesowa, WNT, Warszawa, 2001

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)2
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)2
T-L-3Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid).2
T-L-4Obsługa sygnałów (kill, sigprocmask, sigaction).2
T-L-5Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat).2
T-L-6Zarządzanie procesami cz.2 (fork, exec).2
T-L-7Programowanie wątków z wykorzystaniem bibliotek pthread.2
T-L-8Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO.2
T-L-9Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów.2
T-L-10Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej.2
T-L-11Komunikacja międzyprocesowa z wykorzystaniem gniazd.2
T-L-12Analiza struktury systemu plików EXT2.2
T-L-13Programowanie ładowalnych modułów jądra LKM.2
T-L-14Sterowniki urządzeń znakowych.4
30

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)2
T-W-2Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki).4
T-W-3Architektura jądra Linux. Zarządzanie pamięcią i procesami.3
T-W-4Architektura jądra Linux. Wirtualny system plików VFS.1
T-W-5Budowa systemu plików z rodziny EXT.2
T-W-6Architektura jądra Linux. Ładowalne moduły jadra LKM.1
T-W-7Architektura jądra Linux. Urządzenia i sterowniki.2
15

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1Udział w zajęciach laboratoryjnych30
A-L-2Przygotowanie do zajęć laboratoryjnych28
A-L-3Udział w konsultajach i zaliczeniu formy zajęć3
61
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1Udział w wykładzie15
A-W-2Przygotowanie do egzaminu i udział w egzaminie (2 godz.)13
A-W-3Udział w konsultacjach2
30
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_W01potrafi zidentyfikować i wytłumaczyć działanie elementów składowych bibliotek pozwalających na użycie wybranych mechanizmów systemu operacyjnego Linux
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W06zna wybrane języki i techniki programowania, podstawowe techniki projektowania i wytwarzania aplikacji oraz systemów informatycznych
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_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
T1A_W09ma podstawową wiedzę dotyczącą zarządzania, w tym zarządzania jakością, i prowadzenia działalności gospodarczej
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_W04ma podstawową wiedzę dotyczącą zarządzania, w tym zarządzania jakością, i prowadzenia działalności gospodarczej
InzA_W05zna typowe technologie inżynierskie w zakresie studiowanego kierunku studiów
Cel przedmiotuC-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
Treści programoweT-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)
T-W-2Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki).
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)
T-L-3Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid).
T-L-4Obsługa sygnałów (kill, sigprocmask, sigaction).
T-L-5Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat).
T-L-6Zarządzanie procesami cz.2 (fork, exec).
T-L-7Programowanie wątków z wykorzystaniem bibliotek pthread.
T-L-8Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO.
T-L-9Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów.
T-L-10Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej.
T-L-11Komunikacja międzyprocesowa z wykorzystaniem gniazd.
T-L-13Programowanie ładowalnych modułów jądra LKM.
T-L-14Sterowniki urządzeń znakowych.
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: wejściówka (ocena przygotowania do zajęć)
S-3Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych)
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi wymienić i wyjaśnić sposób użycia wybranych podstawowych mechanizmów systemowych (procesy, sygnały, system plików, biblioteki statyczne i dynamiczne)
3,5potrafi wymienić i wyjaśnić sposób użycia większości podstawowych mechanizmów systemowych (wątki, potoki)
4,0potrafi wymienić i wyjaśnić sposób użycia wybranych mechanizmów komunikacji międzyprocesowej (pamięć współdzielona, semafory, kolejki komunikatów)
4,5potrafi wymienić i wyjaśnić sposób użycia większości mechanizmów komunikacji międzyprocesowej (gniazda)
5,0potrafi objaśnić sposób tworzenia i użycia ładowalnego modułu jądra oraz prostego sterownika urządzenia znakowego
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_W02potrafi zidentyfikować i wytłumaczyć działanie wybranych elementów składowych architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W04ma podstawową wiedzę dotyczącą systemów operacyjnych
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_W04ma szczegółową wiedzę związaną z wybranymi zagadnieniami z zakresu studiowanego kierunku studiów
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_W02zna podstawowe metody, techniki, narzędzia i materiały stosowane przy rozwiązywaniu prostych zadań inżynierskich z zakresu studiowanego kierunku studiów
Cel przedmiotuC-1zapoznanie studentów z wybranymi elementami składowymi architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).
Treści programoweT-W-3Architektura jądra Linux. Zarządzanie pamięcią i procesami.
T-W-4Architektura jądra Linux. Wirtualny system plików VFS.
T-W-5Budowa systemu plików z rodziny EXT.
T-W-6Architektura jądra Linux. Ładowalne moduły jadra LKM.
T-W-7Architektura jądra Linux. Urządzenia i sterowniki.
T-L-12Analiza struktury systemu plików EXT2.
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: wejściówka (ocena przygotowania do zajęć)
S-3Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych)
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi wymienić wybrane podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi
3,5potrafi wymienić wszystkie podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi
4,0potrafi opisać budowę i działanie modułów jądra systemu Linux odpowiedzialnych za zarządzanie pamięcią i procesami
4,5potrafi opisać budowę i działanie modułu VFS oraz systemu plików EXT2 (również na poziomie współpracy z VFS)
5,0potrafi wytłumaczyć budowę oraz działanie prostego sterownika urządzenia znakowego wykorzystującego mechanizm ładowalnego modułu jądra
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_U01potrafi napisać poprawny kod w języku C przy użyciu niskopoziomowych funkcji systemu Linux, który wykorzystuje wybrane mechanizmy systemu operacyjnego i/lub rozszerza funkcjonalność systemu (moduły ładowalne)
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U01potrafi w zakresie podstawowym projektować, implementować i testować oprogramowanie
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_U02potrafi porozumiewać się przy użyciu różnych technik w środowisku zawodowym oraz w innych środowiskach
T1A_U04potrafi przygotować i przedstawić w języku polskim i języku obcym prezentację ustną, dotyczącą szczegółowych zagadnień z zakresu studiowanego kierunku studiów
T1A_U07potrafi posługiwać się technikami informacyjno-komunikacyjnymi właściwymi do realizacji zadań typowych dla działalności inżynierskiej
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_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
T1A_U16potrafi - zgodnie z zadaną specyfikacją - zaprojektować oraz zrealizować proste urządzenie, obiekt, system lub proces, typowe dla studiowanego kierunku studiów, używając właściwych metod, technik i narzędzi
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_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
InzA_U08potrafi - zgodnie z zadaną specyfikacją - zaprojektować proste urządzenie, obiekt, system lub proces, typowe dla studiowanego kierunku studiów, używając właściwych metod, technik i narzędzi
Cel przedmiotuC-1zapoznanie studentów z wybranymi elementami składowymi architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux
C-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).
Treści programoweT-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)
T-W-2Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki).
T-W-6Architektura jądra Linux. Ładowalne moduły jadra LKM.
T-W-7Architektura jądra Linux. Urządzenia i sterowniki.
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)
T-L-3Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid).
T-L-4Obsługa sygnałów (kill, sigprocmask, sigaction).
T-L-5Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat).
T-L-6Zarządzanie procesami cz.2 (fork, exec).
T-L-7Programowanie wątków z wykorzystaniem bibliotek pthread.
T-L-8Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO.
T-L-9Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów.
T-L-10Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej.
T-L-11Komunikacja międzyprocesowa z wykorzystaniem gniazd.
T-L-13Programowanie ładowalnych modułów jądra LKM.
T-L-14Sterowniki urządzeń znakowych.
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: wejściówka (ocena przygotowania do zajęć)
S-2Ocena formująca: ocena wykonywanego zadania programistycznego (ocena pracy wykonywanej na zajęciach)
S-3Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych)
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (biblioteki statyczne i dynamiczne, proecsy, sygnały, zarządzanie systemem plików)
3,5potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (wątki, potoki)
4,0potrafi efektywnie użyć podstawowe mechanizmy komunikacji międzyprocesowej (biblioteka IPC, gniazda)
4,5potrafi napisać i użyć prosty moduł ładowalny jądra LKM
5,0potrafi napisać i użyć prosty sterownik urządzenia znakowego
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_U02potrafi w sposób efektywny wykorzystać do rozwiazywania zadań programistycznych dokumentację opisującą działanie wybranych elementów systemu operacyjnego Linux na poziomie jądra, odwołań systemowych i funkcji bibliotecznych
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U05potrafi tworzyć i posługiwać się dokumentacją techniczną
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_U02potrafi porozumiewać się przy użyciu różnych technik w środowisku zawodowym oraz w innych środowiskach
T1A_U06ma umiejętności językowe w zakresie dziedzin nauki i dyscyplin naukowych, właściwych dla studiowanego kierunku studiów, zgodne z wymaganiami określonymi dla poziomu B2 Europejskiego Systemu Opisu Kształcenia Językowego
T1A_U07potrafi posługiwać się technikami informacyjno-komunikacyjnymi właściwymi do realizacji zadań typowych dla działalności inżynierskiej
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
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_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
Cel przedmiotuC-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).
Treści programoweT-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)
T-W-2Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki).
T-W-6Architektura jądra Linux. Ładowalne moduły jadra LKM.
T-W-7Architektura jądra Linux. Urządzenia i sterowniki.
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)
T-L-3Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid).
T-L-4Obsługa sygnałów (kill, sigprocmask, sigaction).
T-L-5Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat).
T-L-6Zarządzanie procesami cz.2 (fork, exec).
T-L-7Programowanie wątków z wykorzystaniem bibliotek pthread.
T-L-8Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO.
T-L-9Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów.
T-L-10Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej.
T-L-11Komunikacja międzyprocesowa z wykorzystaniem gniazd.
T-L-13Programowanie ładowalnych modułów jądra LKM.
T-L-14Sterowniki urządzeń znakowych.
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: ocena wykonywanego zadania programistycznego (ocena pracy wykonywanej na zajęciach)
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi w stopniu podstawowym posługiwać się dostępną w systemie dokumentacją dotyczącą funkcji systemowych
3,5potrafi w stopniu zaawansowanym posługiwać sie dostępną w systemie dokumentacją dotyczącą funkcji systemowych
4,0potrafi instalować i aktualizować dokumentację dostępną w systemie dotczącą funkcji systemowych
4,5potrafi w stopniu podstawowym wykorzystać dokumentację kodu źródłowego jądra systemu
5,0potrafi w stopniu zaawansowanym wykorzystać dokumentację kodu źródłowego jądra systemu
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_U03potrafi skonfigurować środowisko programistyczne i posłużyć się dostępnymi narzędziami programistycznymi (kompilator, makefile, debuger, programy kontrolujące zarządzanie pamięcią i wykonujące analizę statyczną kodu) w celu efektywnego rozwiązania zadań programistycznych
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U06umie na poziomie podstawowym konfigurować systemy komputerowe
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_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
T1A_U16potrafi - zgodnie z zadaną specyfikacją - zaprojektować oraz zrealizować proste urządzenie, obiekt, system lub proces, typowe dla studiowanego kierunku studiów, używając właściwych metod, technik i narzędzi
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_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
InzA_U08potrafi - zgodnie z zadaną specyfikacją - zaprojektować proste urządzenie, obiekt, system lub proces, typowe dla studiowanego kierunku studiów, używając właściwych metod, technik i narzędzi
Cel przedmiotuC-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).
Treści programoweT-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: ocena wykonywanego zadania programistycznego (ocena pracy wykonywanej na zajęciach)
S-3Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych)
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0potrafi w stopniu podstawowym użyć kompilator gcc oraz debuger gdb
3,5potrafi w stopniu zaawansowanym użyć kompilator gcc oraz stworzyć prosty plik projektu makefile
4,0potrafi w stopniu zaawansowanym użyć debugera gdb oraz stworzyć zaawansowany plik projektu makefile
4,5potrafi użyć wybrany program do analizy statycznej własnego kodu (przykładowo Rats)
5,0potrafi użyć wybrany program do dynamicznej kontroli pamięci własnego kodu (przykładowo Valgrind)
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/08_K01ma świadomość korzyści wynikających z udostępniania wyników własnej pracy oraz korzystania z wyników pracy innych osób zgodnie z koncepcjami wolnego i/lub otwartego oprogramowania
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_K01świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_K01rozumie potrzebę uczenia się przez całe życie; potrafi inspirować i organizować proces uczenia się innych osób
T1A_K07ma świadomość roli społecznej absolwenta uczelni technicznej, a zwłaszcza rozumie potrzebę formułowania i przekazywania społeczeństwu, w szczególności poprzez środki masowego przekazu, informacji i opinii dotyczących osiągnięć techniki i innych aspektów działalności inżynierskiej; podejmuje starania, aby przekazać takie informacje i opinie w sposób powszechnie zrozumiały
Cel przedmiotuC-2zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe).
C-3ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń).
Treści programoweT-W-1Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne)
T-L-1Podstawy programowania w systemie Linux (gcc, GNU make, gdb)
T-L-2Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne)
Metody nauczaniaM-1wykład informacyjny
M-2ćwiczenia laboratoryjne
Sposób ocenyS-4Ocena podsumowująca: semestralne sprawozdanie dotyczące używanych podczas rozwiązywania zadań programistycznych środowisk, bibliotek i narzędzi
Kryteria ocenyOcenaKryterium oceny
2,0nie spełnia kryteriów określonych dla oceny 3
3,0ma świadomość istnienia narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania
3,5potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania wybranych problemów
4,0korzysta do rozwiązywania zadań z wiedzy udostępnianej na zasadzie otwartych projektów
4,5potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania dowolnych problemów
5,0zna metody pozwalające na publikowanie własnej wiedzy i osiągnięć na zasadzie otwartych projektów i wolnego i/lub otwartego oprogramowania