Dydaktyka

Technologie programistyczne

Ankieta do ocena wykładów

Zachęcamy do wypełniania ankiety służącej do oceny poszczególnych wykładów. Wyniki ankiety mają na celu określić najbardziej interesujący zestaw tematów, którymi warto zająć się w kolejnych edycjach przedmiotu -- nie będą miały one wpływu na oceny za prezentacje na wykładach.

Prezentacje na wykładzie

Poniżej zamieszczam tematy zgłoszonych prezentacji na wykładzie. Ograniczam się do tych, dla których otrzymałem tytuł i krótki opis -- osoby, które zgłaszały już mi swoje pomysły, proszę uzupełnienie tych informacji. Część terminów (w przypadku części terminów - tych ze znakami zapytania - czekam na potwierdzenie od autorów).

  1. Raspberry Pi - czy warto, czy łatwo? (16.11.2018, 2 osoby)
    Zaczniemy od przedstawienia historii i specyfikacji samego urządzenia. Później omówiona zostałaby różnica między programowaniem na desktop a na RPi i inne tego typu urządzenia. Przedstawione także zostaną biblioteki ułatwiające i przyspieszające pracę poprzez udostępnienie wysokopoziomowego API. Na koniec zastanowimy się do czego można ten sprzęt wykorzystać na bazie kliku przykładów (np. superkomputer zbudowany z wielu RPi).
    Materiały: prezentacja, przykładowy kod, ilustracja działania demo - film 1, film 2
  2. Robot Pepper - humanoidalny pomocnik (16.11.2018, 1 osoba)
    Opis zastosowania i możliwości robota Peppera. Jest to humanoidalny robot przeznaczony do marketingu i obsługi klienta. Robot posiada interfejs w Android SDK oraz gotowe narzędzia służące rozpoznawaniu mowy, twarzy i interakcji z ludźmi.
  3. Elm - wprowadzenie do języka (23.11.2018, 2 osoby)
    Krótkie wprowadzenie do Elm jako funkcyjny język do tworzenia frontendu. Omówienie historii, funkcji oraz zalet języka na przykładzie prostej aplikacji. Porównanie i przedstawienie jako alternatywy do JavaScript.
  4. To nie jest kurs księgowania faktury (23.11.2018, 1 osoba)
    Odświeżony język programowania, praca w VS Code, kontenery Docker'a zamiast maszyn wirtualnych - prezentacja ma na celu przybliżenie zmian, jakie zaszły w świecie Dynamics NAV na przestrzeni kilku ostatnich lat. Poza kwestiami programistycznymi poruszymy również temat rozwiązania chmurowego oraz związanych z nim zmian w budowie systemu.
  5. Librosa i przetwarzanie dźwięku w języku Python (30.11.2018, 1 osoba)
    Wstęp do przetwarzania sygnałów dźwiękowych w Pythonie - przedstawienie bibliotek. Prezentacja możliwości biblioteki Librosa, w tym generowanie i modulowanie dźwięku, ekstrakcja cech. Zastosowania w klasyfikacji dźwięków środowiskowych czy operacjach na utworach muzycznych. Przykładowe nagrania, przebiegi czasowe i częstotliwościowe.
  6. ARKit. Jak tworzyć aplikacje AR w systemie iOS (30.11.2018, 1 osoba)
    Wprowadzenie do tworzenia aplikacji rozszerzonej rzeczywistości na platformie iOS. Prezentacja możliwości framework-u ARKit na przykładzie gotowych aplikacji oraz wskazówki jak stworzyć własną.
    Materiały: prezentacja, przykładowe programy udostępniane przez Apple'a (np. wykrywanie punktów charakterystycznych, czy wykorzystanie trybu multi-player)
  7. Język MiniZinc (30.11.2018)
    Przedstawienie idei języka pozwalającego na modelowanie problemów z ograniczeniami oaz opcjonalną funkcją celu. Zaprezentowanie dostępnych narzędzi - w tym referencyjnych solwerów. Przedstawienie na wybranych przykładach możliwości oferowanych przez język.
    Materiały: prezentacja
  8. Biblioteka Z3 (7.12.2018, 1 osoba)
    Wprowadzenie do problemu Satisfiability Modulo Theory, przykłady praktycznych zastosowań oraz pokaz działania biblioteki Z3.
    Materiały: prezentacja
  9. Biblioteka PyTorch (7.12.2018, 2 osoby)
    Krótki wstęp do czego służy biblioteka PyTorch, przedstawienie prostej sieci sekwencyjnej i rekurencyjnej (porównując z biblioteką Tensorflow/Keras), przedstawienie kilku modułów ułatwiających pracę przy uczeniu maszynowym, kilka przykładów prac wykorzystujących PyTorch.
  10. Technologia Docker (14.12.2018, 1 osoba)
    Idea kontenerów. Podstawowe funkcje Docker-a i ich łączenie w większe serwisy, gdy aplikacja składa się z wielu komponentów.
    Materiały: prezentacja, przykłady
  11. Pandas i Dask - mali bohaterowie dla dużych problemów (14.12.2018, 1 osoba)
    Kolejny zbiór danych nie może znaleźć odpowiedzi na dręczące go pytania: Jaką kryję w sobie historię? W jaki sposób mogę pomóc innym? Dlaczego to wszystko tak długo trwa? Sprawdzimy czy Pandas i Dask nie zawiodą i pomogą mu zrozumieć samego siebie.
  12. Framework MOA (14.12.2018, 1 osoba)
    Wstęp do przetwarzania strumieni danych z wykorzystaniem freameworku MOA. Przykład wykorzystania wbudowanego klasyfikatora (drzewo Hoeffdinga) oraz przykład klastrowania wraz z wizualizacją. Na koniec zaprezentowane zostanie wykorzystanie API w celu utworzenia własnego klasyfikatora.
    Materiały: prezentacja
  13. Biblioteki pydicom, ITK, VTK oraz DLTK, czyli Python w obrazowaniu medycznym (21.12.2018, 1 osoba)
    Krótka specyfikacja rozważanych bibliotek. Pokaz ich możliwości na przykładzie prostej aplikacji. Porównanie ITK z OpenCV i skimage oraz VTK z matplotlib.
  14. Kotlin/Native - jeden język dla wielu platform (21.12.2018, 2 osoby)
    Kotlin/Native jest nowym projektem rozwijanym przez JetBrains, który daje możliwość na tworzenie aplikacji na różne platformy z użyciem wspólnej bazy kodu. Przedstawimy czym dokładnie jest Kotlin/Native i czym różni się od zwykłego Kotlina oraz pokażemy przykładową wieloplatformową aplikację.
  15. Bazy danych w chmurze (11.01.2019, 1 osoba)
    Przegląd baz danych oferowanych przez firmę Google w modelu DBaaS (BigTable, BigQuery, Cloud SQL, Spanner). Przedstawienie możliwości i ograniczeń poszczególnych rozwiązań (struktura danych, charakterystyka zapytań). Omówienie mechanizmów replikacji oraz zapewnienia spójności.
  16. Terraform - zarządzanie infrastrukturą w kodzie (11.01.2019, 2 osoby)
    Korzystasz z chmury Amazona? A może z Microsoft Azure? Albo z Google Cloud Platform? Terraform wspomaga wersjonowanie, aktualizowanie i budowanie architektury zarówno od dostawców zewnętrznych, jak i wspomaga zarządzaniem własnymi usługami. Potrzebujesz maszyn wirtualnych z dodatkowymi dyskami? Nic prostszego. Z Terraformem bez trudu stworzysz klaster obliczeniowy, grupę autoscalingową, czy Software Defined Network i będziesz mógł z łatwością nimi zarządzać w razie potrzeby. Prezentacja oprócz opisania technologii i pokazania przykładowych konfiguracji, obejmie też przykład krótkie Live Demo.
  17. TypeScript - technologia do tworzenia dużych projektów webowych (18.01.2019?, 1 osoba)
    Pokażę jakie zmiany wprowadza TypeScript w stosunku do języka JavaScript. Przedstawię wady i zalety używania tej technologii. Pokaże jak skonfigurować projekt, aby używać TypeScript w połączeniu z frameworkami React oraz Angular.
  18. React Native (18.01.2019, 2 osoby)
    Wstęp do tworzenia aplikacji mobilnych z wykorzystaniem technologii React Native. Przedstawienie podstawowych koncepcji, cyklu życia komponentów oraz podstawy Redux`a.
    Materiały: prezentacja
  19. Chmura SAP i SAP HANA (25.01.2019, 1 osoba)
    Przedstawię pokrótce możliwości SAP Cloud Platform (tworzenie aplikacji internetowych i mobilnych w SAPUI5, baza danych SAP HANA). Następnie omówię podstawowe funkcjonalności SAP HANA (np.: przetwarzanie języka naturalnego, interface OData, tworzenie webservices). Przy okazji pokażę jak utworzyć własną (trialową) instancję HAN-y.
    Materiały: prezentacja

Punkty kontrolne

Trzeci punkt kontrolny - 25.01.2019

Zajęcia związane z finalnym punktem kontrolnym i prezentacją gotowego projektu odbędą się 25 stycznia. Obecność na tych zajęciach jest obowiązkowa. Proszę każdy zespół o przygotowanie prezentacji zawierającej następujące informacje:

  • temat projektu,
  • zakładane i zrealizowane cele,
  • demonstracja projektu (w zależności od typu projektu może być to pokaz działania systemu albo demonstracja wyników eksperymentów obliczeniowych),
  • krótkie podsumowanie i wnioski z realizacji projektu (tzw. "lessons learned").

W przypadku problemów z realizacją projektu i możliwym opóźnieniem proszę o wcześniejszy sygnał -- będziemy się wtedy umawiać na spotkania indywidualne.

Oprócz prezentacji każdą grupę chciałbym poprosić o przygotowanie sprawozdania pisemnego zawierającego:

  • opis i cele projektu - zakładane i ostatecznie zrealizowane,
  • opis koncepcji rozwiązania problemu (architektura systemu, opis algorytmu i/lub modelu matematycznego),
  • opis wykorzystanych technologii i implementacji rozwiązania,
  • opis wykonanych testów i/lub eksperymentów (w zależności od charakteru projektu - eksperymenty nie zawsze były konieczne),
  • podsumowanie i wnioski z realizacji projektu (problemy podczas realizacji, sposoby ich rozwiązania, początkowo założone cele, których nie udało się zrealizować),
  • instrukcję techniczna, wyjaśniająca jak zainstalować/uruchomić projekt (powinna ona pozwolić na samodzielne późniejsze uruchomienie projektu).

Praktyka pokazuje, że dobry opis przekłada się to na 5-8 stron tekstu, ale może być też nieco więcej. Sprawozdania chciałbym otrzymać do 10 lutego.

Drugi punkt kontrolny - 14.12.2018

Prezentacje związane z drugim punktem kontrolnym odbędą się 14 grudnia. Podobnie jak poprzednio, obecność na tych zajęciach jest obowiązkowa. W prezentacji podsumowującej ten etap proszę zamieścić następujące informacje:

  • temat projektu i skład grupy (w celu przypomnienia),
  • opis wykonanych dotychczas prac (mile widziana demonstracja) oraz odniesienie się do harmonogramu z pierwszego punktu kontrolnego,
  • opis napotkanych problemów (jeśli się pojawiły) i sposobów ich rozwiązania,
  • przewidywany harmonogram prac w ostatnim etapie realizacji projektu.

Pierwszy punkt kontrolny - 26.10.2018

Zajęcia prezentacyjne związane z pierwszym punktem kontrolnym odbędą się 26 października. Obecność na tych zajęciach jest obowiązkowa. Proszę każdy zespół o przygotowanie prezentacji zawierającej następujące informacje:

  • skład osobowy grupy,
  • temat projektu,
  • opis projektu i jego podstawowe cele (jeśli projekt jest częścią pracy magisterskiej, to również cel i zakres pracy oraz jej promotor),
  • wstępna koncepcja rozwiązania (może ona ulec zmianie w trakcie realizacji projektu),
  • narzędzia i technologie do (potencjalnego) wykorzystania w projekcie (jeśli w ramach projektu planowane jest zapoznanie się z nową technologią, to proszę to również zaznaczyć),
  • zagrożenia związane z realizacją projektu (np. możliwe problemy techniczne),
  • wstępny harmonogram prac ze szczególnym uwzględnieniem przyrostów związanych z drugim i trzecim punktem kontrolnym (odpowiednio 14.12.2018 i 25.01.2019).

Każdą grupę projektową będę też prosił o przygotowanie krótkiego (2-3 strony) dokumentu podsumowującego prezentację oraz uwzględniającego ewentualną dyskusję po prezentacji. Dokument ten chciałbym otrzymać do 4 listopada.

Zasady zaliczania zajęć projektowych

  1. Projekty realizowane są indywidualnie lub w grupach dwuosobowych.
  2. W czasie semestru odbędą się 3 prezentacje pełniące rolę punktów kontrolnych postępu w realizacji projektów:
    • koniec października -- przedstawienie tematu projektu, wstępnej koncepcji jego realizacji oraz harmonogramu prac,
    • połowa grudnia -- przedstawienie aktualnego stanu projektu i porównanie ze stanem założonym w harmonogramie,
    • koniec stycznia -- przedstawienie (prawie) gotowego projektu.
  3. Obecność na zajęciach prezentacyjnych jest obowiązkowa, pozostałe zajęcia mają charakter konsultacyjny. Każdy z zespołów projektowych będzie miał jednak obowiązek pojawienia się co najmniej dwukrotnie na konsultacjach (po pierwszej i drugiej prezentacji).
  4. Oprócz samej prezentacji będę prosił każdy zespół projektowych o przygotowanie dokumentu podsumowującego wykonane prace. Na stronie będę zamieszczał wymagania dotyczące prezentacji i dokumentacji.
  5. Każdy punkt kontrolny (prezentacja i dokument) będzie oceniany, a ocena końcowa będzie średnią ważoną z ocen cząstkowych (wagi odpowiednio 0.1, 0.3 i 0.6).

Dodatkowe informacje dotyczące przedmiotu, poruszanej tematyki oraz zasad zaliczania znajdują się w karcie ECTS.