Inżynieria oprogramowania

PROGRAM

LICZBA GODZIN

ZAGADNIENIA

Algorytmy i struktury danych 20

Podstawowe zasady analizy algorytmów:

  • poprawność
  • złożoność obliczeniowa algorytmu (pesymistyczna, oczekiwana)
  • koszt zamortyzowany: metoda potencjału

Podstawowe techniki i struktury:

  • metoda dziel i zwyciężaj
  • metoda zachłanna
  • programowanie dynamiczne
  • transformacyjna konstrukcja algorytmu
  • elementarne struktury danych: stosy, kolejki, listy

Sortowanie:

  • sortowanie przez porównania (InsertionSort, QuickSort, MergeSort)
  • proste kolejki priorytetowe: kopce binarne
  • HeapSort
  • sortowanie pozycyjne
  • złożoność problemu sortowania

Selekcja:

  • algorytm Hoare'a
  • algorytm magicznych piątek

Wyszukiwanie i proste słowniki:

  • wyszukiwanie liniowe i binarne
  • prosty słownik: drzewa poszukiwań binarnych
  • haszowanie

Efektywne implementacje słownika:

  • drzewa AVL
  • drzewa typu splay
  • B-drzewa

Złożone struktury danych:

  • wzmocnione kolejki priorytetowe: kolejki dwumianowe, kopce Fibonacciego
  • efektywne sumowanie zbiorów rozłącznych

Algorytmy grafowe:

  • DFS i jego zastosowania
  • problemy ścieżkowe -- Algorytm Dijkstry
  • minimalne drzewo rozpinające

Wyszukiwanie wzorca w tekstach:

  • prefikso-sufiksy
  • algorytm Knutha-Morisa-Pratta

Tekstowe struktury danych:

  • tablice sufiksowe
  • drzewa sufiksowe

NP- zupełność:

  • klasa NP.
  • problemy NP-trudne i NP-zupełne.
Języki i metody programowania, cz.1 48
  • Wprowadzenie do koncepcji JVM i środowiska Java
  • Podstawowe pojęcia programowania obiektowego
  • Język programowania Java – składnia, zmienne, operatory, tablice, instrukcje sterujące
  • Klasy, obiekty, metody, konstruktory
  • Dziedziczenie, klasy abstrakcyjne, interfejsy, polimorfizm
  • Klasy generyczne i kolekcje
  • Wyjątki
  • Operacje wejścia/wyjścia
  • Wielowątkowość
  • Dostęp do baz danych (JDBC)
  • Komunikacja sieciowa
  • Obsługa XML
  • Interfejs GUI (Swing)
Techniki wytwarzania złożonego oprogramowania 24
  • Zadania inżynierii oprogramowania
  • Dyscypliny związane z tworzeniem oprogramowania
  • Podstawowe modele wytwarzania oprogramowania
  • Manifest zwinnego tworzenia oprogramowania
  • Od zbierania wymagań do wdrożenia - proces wytwórczy
  • Metodyka pracy w zespole SCRUM-owym – role i ich odpowiedzialność, podstawowe zasady współpracy
  • Cykl produkcyjny w podejściu SCRUM-owym, zdarzenia i artefakty
  • Wprowadzenie do programowania zorientowanego obiektowo
  • Notacja UML
  • Zasady GRASP
  • Zasady SOLID
  • Wzorce projektowe
  • Wprowadzenie do podejścia Domain-Driven Design
  • Wzorce strategiczne i taktyczne DDD
Bazy danych 48
  • Wstęp
  • pojęcie relacyjnej bazy danych
  • model danych
  • język SQL – wstęp
  • Wyświetlanie danych z użyciem języka SQL
  • budowa zapytania SELECT w języku SQL
  • aliasy kolumn
  • wyrażenia arytmetyczne,
  • praca z wartościami NULL,
  • łączenie łańcuchów znakowych,
  • wyświetlanie struktury tabeli.
  • Ograniczenia i sortowanie danych
  • użycie klauzuli WHERE
  • operatory porównań
  • operatory BETWEEN, IN, LIKE i znaki zastępcze,
  • warunek NULL
  • operatory logiczne AND, OR i NOT
  • sortowanie i klauzula ORDER BY
  • Użycie funkcji jednowierszowych do personalizacja wyjścia
  • typy funkcji SQL
  • funkcje znakowe
  • funkcje numeryczne
  • operacje na datach
  • Używanie funkcji konwertujących i wyrażenia warunkowe
  • funkcje TO_CHAR, TO_DATE i TO_NUMBER,
  • funkcje NVL, NVL2, NULLIF, COALESCE,
  • funkcje CASE i DECODE
  • Agregacja danych z wykorzystaniem funkcji grupujących
  • pojęcie funkcji grupującej
  • wykorzystanie funkcji AVG, SUM, MIN, MAX i COUNT,
  • wykorzystanie słowa kluczowe DISTINCT,
  • wykorzystanie klauzul HAVING i ORDER BY.
  • Wyświetlanie danych z wielu tabel
  • rodzaje połączeń tabel
  • konstrukcja SELECT w zapytaniu do wielu tabel i klauzule: ON, USING.
  • wykorzystanie słów INNER, LESFT, RIGHT, FULL, OUTER do tworzenia różnych rodzajów połączeń tabel
  • Tworzenie zapytań złożonych z wykorzystaniem podzapytań
  • rodzaje podzapytań
  • wykorzystanie słów kluczowych Having, ANY, ALL EXIST w podzapytaniach
  • Tworzenie zapytań złożonych
  • rodzaje zapytań złożonych
  • operatory zapytań złożonych UNION, UNION ALL, INTERSECT, MINUS
  • Zmiana danych w bazie danych
  • wyrażenia INSERT, UPDATE, DELETE I TRUNCATE, pojęcie transakcji, słowa kluczowe COMMIT lub ROLLBACK.
  • Użycie wyrażeń DDL do tworzenia i zarządzania tabelami:
  • tworzenie tabel z wykorzystanie wyrażenia CREATE TABLE,
  • tworzenie więzów pomiędzy tabelami z wykorzystaniem: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY.
  • Tworzenie pozostałych obiektów schematu bazy danych
  • widoki,
  • sekwencje,
  • indeksy,
  • synonimy.
  • Uprawnienia do obiektów bazy danych
  • tworzenie i kontrola uprawnień użytkowników,
  • wykorzystanie roli do kontroli praw dostępu.
  • Zarządzanie obiektami w schemacie bazy danych
  • Zarządzanie obiektami w schemacie bazy danych
  • modyfikacja tabel, więzów, indeksów.
  • Zarządzanie obiektami ze widokami słownika danych
  • Operowanie na dużych zestawach danych
  • Zarządzanie danymi w różnych strefach czasowych
  • Zawansowane tworzenie zapytań z wykorzystaniem podzapytań.
  • Wyrażenie regularne w Oracle.
Języki i metody programowania - cz. 2 32
  • Technologie warstwy Web (Servlets/JSP)
  • Technologie warstwy logiki biznesowej (EJB)
  • Technologie warstwy danych (Persistence API)
  • Tworzenie aplikacji JEE Web – struktura aplikacji, uruchamianie i zarządzanie aplikacjami z poziomu serwera aplikacji
  • Implementacja servletów (Servlets API)
  • Tworzenie dynamicznych formularzy
  • Zarządzanie sesją  i kontekstem aplikacji
  • Struts MVC
  • Tworzenie aplikacji z dostępem do bazy danych
  • Projektowanie warstwy logiki biznesowej
  • JSP/JSF
Aplikacje korporacyjne 48
  • Główne cechy oprogramowania korporacyjnego
  • Pojęcie architektury aplikacji i stylu architektonicznego, najważniejsze style architektoniczne
  • Budowanie aplikacji z wykorzystaniem podziału warstwowego i komponentowego
  • Technologia Java EE – najważniejsze zagadnienia
  • Budowanie aplikacji z wykorzystaniem Spring Framework
  • Utrwalanie danych z wykorzystaniem Hibernate
  • Współczesne technologie graficznego interfejsu użytkownika
  • Architektura SOA
  • Technologie usług sieciowych, protokół SOAP, styl REST
  • Komunikacja za pomocą kolejek
  • Wprowadzenie do złożonych technik przetwarzania – model aktorowy
  • Budowanie aplikacji korporacyjnej w środowisku Java EE z wykorzystaniem podejścia Domain-Driven Design
Razem 220