Nazwa przedmiotu Programowanie sieciowe 1
Kod przedmiotu 02 52 5261 00
Typ przedmiotu Obowiązkowy
Poziom przedmiotu studia I stopnia
Rok studiów 3
Semestr studiów 6
Liczba przyznanych punktów ECTS 4
Nazwisko wykładowcy/wykładowców dr inż. Radosław Wajman
Cele przedmiotu
Zapoznanie studentów z z technikami niskopoziomowego programowania sieciowego: IP, TCP, UDP.
Efekty kształcenia przedmiotu
W wyniku kursu student potrafił:
    1. Zaprojektować i wykonać aplikację sieciową  w technologii klient-serwer.
    2. Użyć protokołu TCP/IP oraz UDP/IP rozwiązania praktycznego problemu. 
    3. Projektować i implementować wielowątkowe algorytmy (z uwzględnieniem synchronizacji i usypiania wątków) 
    4. Zaprojektować i wykonać aplikację sieciową z użyciem języków C#, C++ lub JAVA
Forma realizacji kształcenia (sala wykładowa, on-line)
sala wykładowa
Wymagania wstępne
Umiejętność programowania strukturalnego i obiektowego w stopniu podstawowym oraz rozumienie podstaw sieci komputerowych
Zalecane fakultety nie dotyczy
Treści merytoryczne przedmiotu
WYKŁAD
Opis wykładu
1. Programowanie aplikacji klient serwer w sieciach TCP/IP
  a. Model ISO/OSI 
  b. Programowy dostęp do warstwy transportowej , warstwy sieci, warstwy łącza danych
  c. Programowanie aplikacji klient-serwer z użyciem protokołów TCP/IP, UDP/IP oraz systemu gniazd Berkeley
2. Programowanie aplikacji z użyciem protokołu NetBios
3. Architektury aplikacji serwerowych jednowątkowe/wielowątkowe/pozornie wielowątkowe
4.Zastosowanie języka C++, C#/Java, do projektowania aplikacji sieciowych dla płaszczyzny hardwearowej IBM/PC oraz Macintosh
5.Techniki bezpiecznego przesyłu danych w sieciach IP
   a.Protokół IPSEC
   b.Tunelowanie i szyfrowanie ruchu sieciowego.
   c.Techniki maskowania ruchu sieciowego 
   d.Bezpieczne przesyłanie danych metodami Multicast, Unicast,
6. Budowa podsystemów sieciowych w systemach operacyjnych Windows (R) oraz Linux
   a. Architektura sterowników poziomu VXD dla systemu Windows
   b. Architektura sterowników poziomu jądra dla systemu Linux
   c. Metody projektowania i implementacji własnych protokołów sieciowych
     
ĆWICZENIA LABORATORYJNE
1. Zaprojektowanie i wykonanie 4 programów ćwiczebnych do komunikacji sieciowej
2. Zaprojektowanie i wykonanie programu końcowego 

Programy ćwiczą umiejętność zaprojektowania i implementacji podstawowych schematów komunikacji sieciowej klient-serwer oraz peer to peer. 
Znajomość metod programowania aplikacji sieciowych na platformę IBM/PC oraz Macintosh 
Umiejętność programistycznego wykorzystania popularnych protokołów TCP/IP, UDP/IP, IPSEC, ICMP w praktyce
Spis zalecanych lektur Literatura podstawowa:
1. S. Orłowski, M. Grabek "C#. Tworzenie aplikacji sieciowych. Gotowe projekty:, Helion, 2012
2. D. Comer : “Internetworking With TCP/IP Volume 1: Principles Protocols, and Architecture”, 5th edition, 2006
3. W. Richard Stevens, Gary R. Wright "BIBLIA TCP/IP T.1/T.2" WNT/RM, Prentice Hall, 1998 (pl)
4. D. E. Comer "Sieci komputerowe TCP/IP" Tomy 1, 2, 3 WNT 1997
5. R.Stevens: "UNIX. Programowanie usług sieciowych. Tom 1 - API: gniazda i XTI; WNT, 2002
6. R.Stevens: "UNIX. Programowanie usług sieciowych. Tom 2 - Komunikacja międzyprocesowa; WNT, 2002
7. R. Stevens "PROGRAMOWANIE ZASTOSOWAŃ SIECIOWYCH W SYSTEMIE UNIX"; 1996
8. A. Wollisz.: "Podstawy lokalnych sieci komputerowych. Tom 2: Oprogramowanie komunikacyjne i usługi sieciowe". WNT 1992.
9. A Sopala "Pisanie programów internetowych" Mikom 2000 wydanie I

Literatura uzupełniająca:
1. Publikacje sieciowe firmy Microsoft, Apple
2. Repozytoria RFC
Formy i metody kształcenia
Wykład Ćwiczenia Laboratorium Projekt Seminarium Inne Suma godzin w semestrze
15 30 45
Metody i kryteria weryfikacji efektów kształcenia
1. Projekt i ćwiczenia
2. Projekt
3. Projekt i ćwiczenia
4. Projekt

Wykład: sprawdzian pisemny  
Laboratorium: oceny z 4 programów cząstkowych oraz ocena programu końcowego  Ocena końcowa składa się w 75% z oceny laboratoryjnej oraz w 25% wykładowej
Język prowadzenia zajęć polski
Praktyki nie dotyczy