Wybrane elementy praktyki projektowania oprogramowania

Język wykładowy Polski
Semestr Zimowy
Status Poddana pod głosowanie
Opiekun Wiktor Zychla
Liczba godzin 30 (wyk.) 30 (prac.)
Rodzaj Informatyczny inż.
ECTS 6
Polecany dla I roku Nie
Egzamin Tak
Tagi IO (Inżynieria oprogramowania) PiPO (Projektowanie i programowanie obiektowe)
Grupy efektów kształcenia Podstawy inżynierii oprogramowania Inżynieria oprogramowania (L) Programowanie i projektowanie obiektowe

Opis przedmiotu:

_Przedmiot dostępny w dwóch wersjach: kurs inżynierski za 5 ECTS oraz przedmiot I1 z egzaminem za 6 ECTS (oba zaliczają te same grupy efektów kształcenia). Wybór kursu (bez egzaminu) zaznacza się poprzez dodatkowe zapisanie się do grupy ćwiczeniowej z etykietą "wykład okrojony"._ Celem zajęć jest przedstawienie studentom praktyki projektowania obiektowego oprogramowania. Zajęcia w zwięzły sposób łączą podstawową wiedzę z zakresu baz danych i inżynierii oprogramowania w obszarze projektowania obiektowego w wybranych współczesnych realiach technologicznych. Wymagania: przyda się znajomość paradygmatu obiektowego, pojęć obiektu, konstruktora, dziedziczenia, polimorfizmu i jego realizacji we współczesnych językach programowania. Zajęcia są pomyślane jako zamiennik dla następujących kanonicznych zajęć: * w części dotyczącej baz danych - Bazy danych * w części dotyczącej projektowania obiektowego (wzorce projektowe) i inżynierii oprogramowania - Projektowanie obiektowe oprogramowania * w części praktycznej dotyczącej wytwarzania aplikacji internetowych - specjalizowane kursy technologii wytwarzania aplikacji internetowych, m.in. kurs Projektowanie aplikacji ASP.NET, kurs Ruby on Rails, kurs WWW ## Wykład Część podstawowa - obiejmuje materiał realizujący wymagania programowe: 1. podstawy projektowania obiektowego 1. analiza obiektowa 2. zbieranie wymagań 3. przypadki użycia 2. język UML 1. diagramy klas, obiektów, zachowań i sekwencji 3. od modelu pojęciowego do modelu relacyjnego 1. etap modelu pojęciowego 2. etap modelu obiektowego 3. etap modelu relacyjnego 4. podstawy praktyki baz danych 1. tabele, kolumny, więzy 2. klucze podstawowe, klucze obce 3. widoki, procedury składowane 4. indeksy 5. język SQL - zapytania SELECT, INSERT, UPDATE, DELETE, podzapytania, klauzule WHERE, ORDER, TOP, JOIN, złączenia wewnętrzne i zewnętrzne 5. język Javascript - nowoczesny hybrydowy język funkcyjno-obiektowy 1. filozofia języka - Javascript jako praktyczna realizacja idei Javy - write once run everywhere 2. historia, środowiska uruchomieniowe (Google V8, Microsoft Chakra) 3. podstawowe elementy języka, zasięg zmiennych, hoisting 4. system typów, dynamiczne/luźne typowanie 5. obiekty, właściwości 6. specyfika `this` \- wiązanie kontekstowe 7. listy/tablice 8. enumeracja składowych obiektów vs enumeracja elementów tablic 9. funkcje jako typy pierwszoklasowe (first class citizens) 10. memoizacja 11. redefinicje funkcji 12. domknięcia 13. tworzenie obiektów - funkcje konstruktorowe, prototypy, literały 14. dziedziczenie/enkapsulacja 15. IIFE (immediately-invoked function expressions) 16. lambda wyrażenia 17. klasy 18. generatory 19. callbacks vs promises vs async/await 20. modularyzacja 21. obiekty hostów - przeglądarka internetowa vs środowisko node.js 22. debugowanie kodu w przeglądarce 23. środowiska zintegrowane 24. narzędzia jakościowe: JSLint/JSHint/Closure 25. ekosystem/nadzbiory/transpilacja (Typescript/Coffeescript/ES6) 26. Javascript jako język frontendowy i backendowy - kompilacja innych języków do Javascript (m.in. LLVM, emscripten, inne) 7. aplikacja internetowa w przeglądarce 1. podstawy HTML5, elementy struktury dokumentu 2. podstawy CSS3, pozycjonowanie, wygląd, stylowanie responsywne 3. podstawy modelu Document Object Model (DOM) 4. model zdarzeniowy, pętla zdarzeń 5. obiekt canvas i podstawy grafiki bitmapowej 8. aplikacja internetowa na serwerze 1. środowisko node.js, pakiety npm 2. podstawowe moduły, m.in. filesystem, http 3. framework Express - routing, wzorzec MVC, silnik widoków EJS 4. framework Socket.IO 5. autentykacja/autoryzacja 6. komunikacja z wybraną bazą danych 9. testy jednostkowe aplikacji Javascript - framework Mocha, technologia Selenium Pracownia Pracownia będzie polegała na uzupełnieniu materiału z wykładu szeregiem zadań o charakterze praktycznym. Przewiduje się listy zadań odpowiadajace poszczególnym partiom materiału z wykładu.