Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Języki i narzędzia programowania III

Informacje ogólne

Kod przedmiotu: 1000-225bJNP3 Kod Erasmus / ISCED: 11.303 / (brak danych)
Nazwa przedmiotu: Języki i narzędzia programowania III
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla III roku informatyki
Przedmioty obowiązkowe dla III roku JSIM - wariant 3I+4M
Punkty ECTS i inne: 2.00
Język prowadzenia: polski
Rodzaj przedmiotu:

obowiązkowe

Wymagania (lista przedmiotów):

Wstęp do programowania (podejście imperatywne) 1000-211bWPI

Skrócony opis:

Celem tego przedmiotu pokazanie studentom konkretnych języków i narzędzi programistycznych.

Pełny opis:

Celem tego przedmiotu pokazanie studentom konkretnych języków i narzędzi programistycznych. Dynamiczny rozwój informatyki pwoduje, że stale powstają nowe języki, środowiska i technologie informatyczne. Zestaw języków i narzędzi, o których warto by było opowiedzieć studentom, poszerza się z każdym rokiem. Są to zagadnienia bardzo ważne dla każdego, kto chce zajmować się praktycznymi zastosowanieami informatyki. Z drugiej strony program zajęć uniwersyteckich jest w naturany sposób nakierowany na przedstawianie tych zagadnień, które są ogólne i w małym stopniu zależne od aktualnych trendów. Nie ma też możliwości pomieszczenia w nim wszystkich pojawiających się nowości. Chcąc pogodzić ze sobą te dwie sprzeczne ze soba potrzeby (nowości i stabilności) wprowadzamy do naszego planu zajęć 30-godzinne kursy.

Literatura:

Specyficzna dla danego kursu (zwykle będzie to dokumentacja języka programowania i jego środowiska bądź dokumentacja przedstawianego narzędzia).

Efekty kształcenia:

Wiedza

Zna szczegółowo wybrane narzędzie lub język programowania [K_W02, K_W09, K_W10].

Umiejętności

Potrafi realizować projekty programistyczne w wybranym narzędziu lub języku programowania [K_U05].

Kompetencje

Potrafi samodzielnie zdobywać i pogłębiać swoją wiedzę na temat wybranego narzędzia lub języka programowania [K_K04].

Metody i kryteria oceniania:

Praca zaliczeniowa. Szczegóły podane przez prowadzącego zajęcia w grupie.

Zajęcia w cyklu "Semestr zimowy 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-01-25
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Koordynatorzy: Piotr Wasilewski
Prowadzący grup: Marcin Benke, Robert Bogucki, Andrzej Pyskir, Jacek Sroka, Tomasz Tajmajer, Piotr Wasilewski, Paweł Witkowski, Maciej Włodarkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Pełny opis:

* Grupa 1. Machine Learning w praktyce. Robert Bogucki

Celem zajęć jest przybliżenie studentom praktycznej wiedzy z zakresu uczenia maszynowego. Oprócz korzystania z istniejących narzędzi, studenci będą tworzyć własne implementacje algorytmów.

Tematy:

1. Czym jest uczenie maszynowe, uczenie nadzorowane i nienadzorowane, regresja, klasyfikacja.

2. Algorytmy uczenia maszynowego (kNN, regresja liniowa i logistyczna, SVM, GBM, FM, drzewa decyzyjne, lasy losowe, ...).

3. Inżynieria i selekcja cech, techniki redukcji wymiaru, regularyzacja, ocena jakości modelu.

4. Narzędzia (R, scikit-learn, Vowpal Wabbit).

5. Uczenie maszynowe online.

6. Ensembling modeli, meta-klasyfikacja.

7. Sieci neuronowe i deep learning.

8. Case study.

9. Przetwarzanie tekstu (Bag of Words, N-gramy, LDA, TF-IDF).

* Grupa 2. Projektowanie wysokowydajnych serwisów webowych. Maciej Włodarkiewicz

Rodzaj zajęć: Wykłady połączone z zajęciami praktycznymi

Zakres zajęć:

Celem zajęć jest przekazanie studentom wiedzy z zakresu projektowania wysoko wydajnych serwisów webowych z uwzględnieniem ich niezawodności oraz bezpieczeństwa. Do tworzenie systemu wykorzystamy narzędzia oraz technologie open-source używane przez największe firmy internetowe takie jak: gog.com, google, facebook lub gadu-gadu.

Tematy zajęć:

• Wydajność serwisu – ocena wydajności, wąskie gardła a następnie skalowanie poziome

• Usługi Webowe (nosql, load balancing, dfs , full text search, cache)

• Bezpieczeństwo serwisów

• Optymalizacja frontendu stron internetowych

• Monitoring

Kryterium zaliczenia obejmuje oddanie projektu realizowanego podczas zajęć w grupach 3-5 osobowych.

* Grupa 3. Systemy Zarządzania Treścią (CMS - Content Management Systems). Paweł Witkowski

Dokładne poznanie systemu Wordpress i jego zastosowanie do tworzenia standardowych serwisów internetowych. Dokładne poznanie systemu Drupal i jego zastosowanie do tworzenia serwisów z dedykowaną funkcjonalnością. Pisanie własnych rozszerzeń do systemu Drupal. Zaliczenie będzie polegało na napisaniu własnego rozszerzenia dla wybranego CMS i utworzenie serwisu internetowego z jego wykorzystaniem.

* Grupa 4. Przetwarzanie informacji przez człowieka. Piotr Wasilewski

Celem zajęć jest przedstawienie podstawowych zagadnień związanych z przetwarzaniem informacji przez człowieka z uwzględnieniem kwestii interakcji człowiek - komputer. Zostaną omówione podstawy wyjaśniania zachowań człowieka w terminach przetwarzania informacji wraz z podstawami paradygmatu eksperymentalnego badania zachowań. Na zaliczenie zajęć studenci w małych grupach przygotują komputerowe programy eksperymentalne i przeprowadzą badania dotyczące przetwarzania informacji przez ludzi.

* Grupa 5. Internet of Things. Tomasz Tajmajer

W ramach zajęć studenci będą mogli stworzyć system oparty na idei "Internetu Rzeczy". System ten będzie zawierał część sprzętową (sieć sensorowa), serwerową (składowanie danych) oraz aplikację dla użytkownika końcowego (aplikacja webowa lub aplikacja na urządzenia mobilne).

Studenci będą pracować w małych grupach. Każda grupa otrzyma kilka platform developerskich z mikrokontrolerami STM32 oraz zestaw sensorów. Grupy będą mogły samodzielnie opracować temat i zastosowanie dla swojego systemu (np. system alarmowy, monitorowanie temperatury i wilgotności, itp.).

Zaliczenie przedmiotu polegać będzie na zaimplementowaniu systemu składającego się z:

* sieci sensorowej przekazującej dane do serwera

* oprogramowania do składowania danych na serwerze

* aplikacji do prezentacji danych

Zagadnienia omawiane na ćwiczeniach

1. Zasilanie, Wejścia/wyjścia mikrokontrolera, magistrale, komunikacja z peryferiami

2. Sensory analogowe, sensory cyfrowe, przetworniki analogowo-cyfrowe

3. Komunikacja bezprzewodowa

4. Architektury bezprzewodowych sieci sensorowych, sieci typu mesh

5. Protokoły i standardy: IEEE 802.15.4, Zigbee, Z-wave, WiFi, 6LoWPAN, CoAP, MQTT,

6. Zastosowania: Smart Home, Smart City,

Zagadnienia praktyczne dla studentów

1. Programowanie systemu wbudowanego (Nucleo - STM32) z wykorzystaniem języka wysokiego poziomu i zestawu bibliotek (C/C++, mbed)

2. Integracja sensorów z systemem wbudowanym. Obsługa sensorów różnego typu (sensory analogowe i cyfrowe)

3. Integracja modułu komunikacji bezprzewodowej z systemem wbudowanym. Prosta bezprzewodowa sieć sensorowa.

4. Integracja modułu komunikacyjnego WiFi z systemem wbudowanym. Komunikacja z serwerem.

5. Oprogramowanie serwerowe do składowania i przetwarzania danych z sieci sensorowej. Komunikacja z bazą danych. Dostęp do danych z zewnętrznej aplikacji

6. Aplikacja webowa do prezentacji danych z sieci sensorowej i sterowania elementami wykonawczymi w tej sieci. Prezentacja graficzna, wykresy. Interakcja z użytkownikiem.

* Grupa 6. Zaawansowane programowanie funkcyjne. Marcin Benke

Celem kursu jest przedstawienie najważniejszych zagadnień nowoczesnego programowania funkcyjnego w języku Haskell. Wśród poruszanych zagadnień znajdą się m.in.

1. Podstawy programowania deklaratywnego

2. Typy i klasy

* typy podstawowe

* typy algebraiczne i klasy typów

3. Funkcje polimorficzne funkcje wyższego rzędu

4. Funktory

5. Leniwa ewaluacja

6. Wejście-wyjście oraz inne efekty

7. Testowanie programów funkcyjnych

* Grupa 7. Łączenie programowania obiektowego z programowanie funkcyjnym w Scali. Jacek Sroka

Celem kursu jest przedstawienie jak programowanie obiektowe łączy i uzupełnia się z programowaniem funkcyjnym na przykładzie języka Scala. Wśród poruszanych zagadnień znajdą się m.in.

1. Porównanie rozwiązań tego samego problemu przy pomocy programowania obiektowego oraz programowania funkcyjnego.

2. Rekurencja

3. Funkcje wyższego rzędu

4. Hierarchia typów, typowanie invariantne, covariantne oraz contravariantne.

5. Kolekcje danych

6. For-comprehensions

7. Strumienie, iteratory, leniwość

8. View bounds i konwersje

Zajęcia w cyklu "Semestr zimowy 2019/20" (jeszcze nie rozpoczęty)

Okres: 2019-10-01 - 2020-01-27
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Koordynatorzy: Piotr Wasilewski
Prowadzący grup: Marcin Benke, Robert Bogucki, Andrzej Pyskir, Piotr Wasilewski, Paweł Witkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.