Prowadzony w
cyklach:
2023/24Z, 2024/25Z, 2025/26Z
Punkty ECTS:
6
Język:
polski
Organizowany przez:
Wydział Matematyki i Informatyki
Programowanie sieciowe 1000-I1ProgSiec
- Pliki i procesy
Operacje Wejście/Wyjście - standardowe funkcje IÓ. Praca z plikami i katalogami, funkcje stat i fstat. Procesy, tworzenie procesów, funkcje exec i wait, atrybuty procesów. - Komunikacja między procesami
Sygnały i ich programowanie. Komunikacja z użyciem potoków oraz FIFO. Kolejki komunikatów, semafory i pamięć wspólna: POSIX , SYSV. Model klient - serwer. - Sieci Komputerowe
Warstwy i protokoły sieciowe, model OSI. Protokoły IPv4 oraz IPv6, adresy w sieciach. Protokoły warstwy transportu: TCP oraz UDP. - Komunikacja między procesami na różnych maszynach
Gniazda, ich adresy. Typy i rodziny gniazd. Porty zastrzeżone i standardowe usługi w sieci Internet. Realizacja modelu klient-serwer z użyciem gniazd. - Zdalne Wywołanie Procedur
Implementacja RPC w systemach UNIX. Zastosowania RPC: protokół NFS. Kompilator protokołów rpcgen oraz jego zastosowania. - Współczesne protokoły sieciowe
Przegląd współczesnych implementacji RPC. Historia rozwoju protokołu HTTP.
Całkowity nakład pracy studenta
30 godzin - wykład,
30 godzin - laboratorium
30 godzin - bieżące przygotowanie do zajęć
25 godzin - studiowanie literatury
35 godzin - przygotowanie do egzaminu i zaliczenia
Razem: 150 godzin
Efekty uczenia się - wiedza
W1. Ma wiedzę na temat podstawowych elementów komunikacji między procesami na jednej i na różnych maszynach.
W2. Zna pojęcie "protokołu komunikacyjnego" w każdym powyższym przypadku.
W3. Zna model komunikacji sieciowej OSI oraz podstawowe protokoły sieciowe przypisane do każdej warstwy.
W4. Zna zasadę komunikacji opartą o model klient - serwer i
Efekty uczenia się - umiejętności
U1. Potrafi zaprojektować i zaprogramować zadanie związane z komunikacją między procesami na jednej maszynie z wykorzystaniem narzędzi IPC
U2. Potrafi zaprojektować i zaprogramować serwera i klienta zadania komunikacyjnego z użyciem gniazd i różnych protokołów transportowych.
U3.Potrafi sformułować i zaimplementować prosty protokół komunikacyjny.
U4. Potrafi poprzez analizę zadania komunikacyjnego przypisać je do właściwej warstwy metody OSI i potrafi zastosować właściwe dla tej warstwy protokoły sieciowe.
Efekty uczenia się - kompetencje społeczne
U1. Potrafi zaprojektować i zaprogramować zadanie związane z komunikacją między procesami na jednej maszynie z wykorzystaniem narzędzi IPC
U2. Potrafi zaprojektować i zaprogramować serwera i klienta zadania komunikacyjnego z użyciem gniazd i różnych protokołów transportowych.
U3.Potrafi sformułować i zaimplementować prosty protokół komunikacyjny.
U4. Potrafi poprzez analizę zadania komunikacyjnego przypisać je do właściwej warstwy metody OSI i potrafi zastosować właściwe dla tej warstwy protokoły sieciowe.
Metody dydaktyczne eksponujące
- pokaz
Metody dydaktyczne podające
- wykład problemowy
- wykład informacyjny (konwencjonalny)
- wykład konwersatoryjny
- wykład informacyjny (konwencjonalny)
- wykład konwersatoryjny
Metody dydaktyczne poszukujące
- klasyczna metoda problemowa
- ćwiczeniowa
- laboratoryjna
- ćwiczeniowa
- laboratoryjna
Metody dydaktyczne w kształceniu online
- metody wymiany i dyskusji
- metody służące prezentacji treści
- metody służące prezentacji treści
Rodzaj przedmiotu
przedmiot obligatoryjny
Wymagania wstępne
1. Znajomość języków skryptowych typu sh, awk, perl.
2. Znajomość języka programowania "C".
3. Znajomość systemu operacyjnego Linux na poziomie zwykłego użytkownika.
Koordynatorzy przedmiotu
Kryteria oceniania
Egzamin
- Zgodnie z aktualnym zarządzeniem planowany jest egzamin stacjonarny.
- Egzamin składa się z 2 części:
- Testu teoretyczno/praktycznego z pytaniami wielokrotnego wyboru.
- Testu sprawdzającego znajomość omawianych na wykładzie schematów.
- Testu teoretyczno/praktycznego z pytaniami wielokrotnego wyboru.
Laboratoria:
- 2 kolokwia
- Kolokwium I - dwuczęściowe: test teoretyczny (10 pkt.) oraz zadanie programistyczne (10p.) - łącznie 20 pkt; przybliżony termin: listopad/grudzień.
- Kolokwium II - zadania programistyczne - 20 pkt.; przybliżony termin: styczeń.
- Zakres materiału na kolokwia: całość materiału omówionego w trakcie zajęć laboratoryjnych (od początku semestru do zajęć poprzedzających dane kolokwium), włącznie ze wszystkimi zadaniami sformułowanymi na zajęciach i pracami domowymi.
- Podczas kolokwiów można korzystać z własnych, odręcznych notatek.
- Kolokwium I - dwuczęściowe: test teoretyczny (10 pkt.) oraz zadanie programistyczne (10p.) - łącznie 20 pkt; przybliżony termin: listopad/grudzień.
- 2 projekty programistyczne do domu (kody programów + filmik), po 10 pkt. każdy
- Rozwiązania projektów należy przysyłać poprzez Moodle (nie będą przyjmowane po terminie).
- Razem z programem należy przysłać film (ok. 5-8 min.) zawierający prezentację własnego programu (szczegóły techniczne będą doprecyzowane przy konkretnym zadaniu). Jakość/kompletność prezentacji będzie miała wpływ na ocenę całego projektu.
- Prowadzący może poprosić autora programu o krótką rozmowę w celu weryfikacji samodzielności i zrozumienia użytych technik (wynik tej rozmowy może mieć wpływ na liczbę punktów). Rozwiązania niesamodzielne nie będą akceptowane.
- Warunkiem koniecznym uzyskania maksymalnej liczby punktów (tj. 10) jest spełnienie wszystkich warunków dobrego projektu.
- Rozwiązania projektów należy przysyłać poprzez Moodle (nie będą przyjmowane po terminie).
- Test z przeliczania masek podsieci.
- Zaliczenie testu jest warunkiem koniecznym zaliczenia laboratoriów.
- Do tematu będą udostępnione interaktywne materiały do pracy własnej.
- Zaliczenie testu jest warunkiem koniecznym zaliczenia laboratoriów.
Literatura
Literatura podstawowa:
- W.R. Stevens, "Programowanie zastosowań sieciowych w systemie UNIX"
- W.R. Stevens, "UNIX Programowanie usług sieciowych”
- K. Haviland, B. Slama, "UNIX System Programming"
- St. A. Rego, "UNIX System V Network Programming"
- Dokumentacja systemów: Solaris , Linux, Cygwin
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: