Kurs: 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 Kurs inżynierski
ECTS 5
Polecany dla I roku Nie
Egzamin Nie
Grupy efektów kształcenia Podstawy inżynierii oprogramowania Inżynieria oprogramowania (L) Programowanie i projektowanie obiektowe

Opis przedmiotu:

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 - obejmuje 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 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.