Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Algorytmy i programowanie 2

Informacje ogólne

Kod przedmiotu: 103A-CBxxx-ISP-APRO2
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Algorytmy i programowanie 2
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka techniczna )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

APRO2

Numer wersji:

1

Skrócony opis:

Przedmiot ten jest kontynuacją przedmiotu Algorytmy i programowanie 1 i przedstawia wybrane zagadnienia z zakresu implementacji zagadnień algorytmicznych i rozwiązań realizowanych w języku Java. Przedmiot ma na celu poszerzenie wiedzy oraz umiejętności w zakresie stosowania wybranych struktur danych (kolejka priorytetowa, kopiec, drzewa binarne, tablice haszujące) oraz rozwiązań algorytmicznych (sortowanie Shella, sortowanie przez wstawianie, wyszukiwanie sekwencyjne, binarne czy operacje na grafach). Przedstawione zostaną dodatkowe możliwości języka Java. Student po ukończeniu przedmiotu zdobędzie wiedzę i umiejętnościami w zakresie: implementacji złożonych struktur danych i algorytmów w postaci kodu programu, tworzenia oprogramowania zrozumiałego dla innych członków zespołu programistycznego, tworzenia oprogramowania bazując na wzorcach projektowych oraz testowania wytworzonego oprogramowania...

Pełny opis:

Przedmiot ten jest kontynuacją przedmiotu Algorytmy i programowanie 1 i przedstawia wybrane zagadnienia z zakresu implementacji zagadnień algorytmicznych i rozwiązań realizowanych w języku Java. Przedmiot ma na celu poszerzenie wiedzy oraz umiejętności w zakresie stosowania wybranych struktur danych (kolejka priorytetowa, kopiec, drzewa binarne, tablice haszujące) oraz rozwiązań algorytmicznych (sortowanie Shella, sortowanie przez wstawianie, wyszukiwanie sekwencyjne, binarne czy operacje na grafach). Przedstawione zostaną dodatkowe możliwości języka Java. Student po ukończeniu przedmiotu zdobędzie wiedzę i umiejętnościami w zakresie: implementacji złożonych struktur danych i algorytmów w postaci kodu programu, tworzenia oprogramowania zrozumiałego dla innych członków zespołu programistycznego, tworzenia oprogramowania bazując na wzorcach projektowych oraz testowania wytworzonego oprogramowania. Zostaną przedstawione zagadnienia z zakresu tworzenia bezpiecznych programów oraz budowania programów wielowątkowych.



Treść wykładu

  1. Wprowadzenie (2 godz.)
    Informacja o przedmiocie. Regulamin przedmiotu. Przypomnienie najważniejszych informacji z poprzedniego semestru. Ciąg dalszy dobrych praktyk programistycznych. Wprowadzenie do języka UML.
  2. Wejście-wyjście, strumienie (2 godz.)
    Wejście-wyjście. Narzędzia do odczytu danych z pliku i zapis do pliku. Pliki binarne. Buforowanie. Język XML.
  3. Analizowanie algorytmów (2 godz.)
    Metodologia, studium przypadku.
  4. Algorytmy sortowania (4 godz.)
    Sortowanie Shella, sortowanie przez scalanie, zastosowania. Struktury danych: kolejka priorytetowa, kopiec.
  5. Algorytmy wyszukiwania (4 godz.)
    Wyszukiwanie sekwencyjne, binarne, zastosowania. Wyszukiwanie podłańcuchów znaków. Struktury danych: tablica symboli, drzewa binarne, tablice haszujące.
  6. Internacjonalizacja (1 godz.)
    Formaty liczb, waluty, data i czas, formatowanie komunikatów, wczytywanie i wyświetlanie tekstów.
  7. Algorytmy grafowe (4 godz.)
    Graf nieskierowany, reprezentacja danych, przeszukiwanie, minimalne drzewo rozpinające, poszukiwanie najkrótszej ścieżki.
  8. Bezpieczeństwo w Java (2 godz.)
    Ładowanie klas, menadżer bezpieczeństwa, uwierzytelnianie użytkowników, wstęp do szyfrowania.
  9. Testowanie programów (1 godz.)
    Obsługa błędów za pomocą wyjątków. Tworzenie własnych wyjątków. Przechwytywanie wyjątku, instrukcja finally. Adnotacje. Programowanie sterowane testami, refaktoryzacja.
  10. Wybrane wzorce projektowe (4 godz.)
    Fasada, mediator, singelton, monostate, fabryka, wizytator, stan.
  11. Współbieżność (2 godz.)
    Klasa Thread. Współdzielenie zasobów.
  12. Sprawdzenie efektów uczenia się (2 godz.)
    Pierwsze kolokwium po zrealizowaniu trzeciego tematu (1 godz.). Drugie kolokwium kończące przedmiot (1 godz.).


    1. Zakres laboratorium
      1. Organizacja laboratoriów. Ćwiczenia w zakresie wejścia-wyjścia programu, pliki tekstowe – xml, pliki binarne.
      2. Implementacja własnej struktury danych np. lista, kolejka, itp.
      3. Implementacja wybranej struktury danych, implementacja i testowanie algorytmów sortujących.
      4. Implementacja wybranej struktury danych, implementacja i testowanie algorytmów wyszukujących.
      5. Implementacja wybranej struktury danych, implementacja i testowanie algorytmów grafowych.


      Zakres projektu
      Celem wykonania projektu jest samodzielne opracowanie i wykonanie programu komputerowego w języku Java.
      Projekt powinien obejmować:
      1. Rozwiązanie postawionego zagadnienia algorytmicznego w postaci kodu programu w tym opracowanie lub zastosowanie odpowiednich struktur danych.
      2. Przygotowanie odpowiedniej strategii testowania oprogramowania i przeprowadzenie testów.
      3. Implementacje wzorców projektowych i uzasadnienie wyboru.
      4. Tworzenie bezpiecznego oprogramowania.
Literatura:

Literatura i oprogramowanie:

  • Noel Kalicharan (2014) - Advanced Topics in Java: Core Concepts in Data Structures.
  • Cay S. Horstmann (2017) - Core Java, Volume II - Advanced Features.
  • Robert C. Martin (2015) - Clean Code: A Handbook of Agile Software Craftsmanship.
  • Robert C. Martin (2017) - The Clean Coder: A Code of Conduct for Professional Programmers.
  • Robert C. Martin - Agile Software Development, Principles, Patterns and Practices.
  • Robert Sedgewick, Kevin Wayne (2012) - Algorithms.
  • Java Language and Virtual Machine Specifications: https://docs.oracle.com/javase/specs/
  • The Java Tutorials: https://docs.oracle.com/javase/tutorial/index.html
Metody i kryteria oceniania:

Sprawdzanie założonych efektów kształcenia realizowane jest przez:

  • ocenę wiedzy i umiejętności związanych z realizacją zadań laboratoryjnych – ocena z wybranych ćwiczeń laboratoryjnych oraz wykonania projektu;
  • ocenę wiedzy wykazanej na dwóch kolokwiach pisemnych.

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

Okres: 2024-02-19 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 45 miejsc więcej informacji
Projekt, 12 godzin, 45 miejsc więcej informacji
Wykład, 30 godzin, 45 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Mateusz Modrzejewski, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. letni" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 51 miejsc więcej informacji
Projekt, 12 godzin, 51 miejsc więcej informacji
Wykład, 30 godzin, 51 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Mateusz Modrzejewski, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

Okres: 2022-02-23 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 52 miejsc więcej informacji
Projekt, 12 godzin, 52 miejsc więcej informacji
Wykład, 30 godzin, 52 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

Okres: 2021-02-20 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 60 miejsc więcej informacji
Projekt, 12 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (zakończony)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 60 miejsc więcej informacji
Projekt, 12 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)