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

Języki i narzędzia programowania II

Informacje ogólne

Kod przedmiotu: 1000-224bJNP2 Kod Erasmus / ISCED: 11.302 / (brak danych)
Nazwa przedmiotu: Języki i narzędzia programowania II
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla II roku informatyki
Przedmioty obowiązkowe dla III roku JSIM - wariant 3I+4M
Przedmioty obowiązkowe dla III roku JSIM - wariant 3M+4I
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 kursy (zwykle będzie to dokumentacja języka programowania i jego środowiska bądź dokumentacja przedstawianego narzędzia).

Efekty uczenia się:

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 letni 2018/19" (zakończony)

Okres: 2019-02-16 - 2019-06-08
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Koordynatorzy: Zbigniew Jurkiewicz
Prowadzący grup: Szymon Acedański, Michał Gruchała, Grzegorz Grudziński, Zbigniew Jurkiewicz, Paweł Kucharczyk, Maciej Marchwiany, Witold Rudnicki, Marcin Sydow
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Pełny opis:

*** Grupa 1: Pisanie narzędzi do Oracle przy użyciu C++ oraz QT - Paweł Kucharczyk

Studenci będą pracowali nad rozwojem narzędzia Tora, które może służyć do tworzenia kodu oraz administracji Oracle (i jeszcze kilkoma innymi bazami). Narzędzie jest pisane w C++, z wykorzystaniem Qt - stąd wymagania. Działa przede wszystkim pod Linuksem, ale może być kompilowane dla Windows i Maca. W trakcie zajęć będą omawiane zagadnienia dotyczące zarządzania Oraclem - zakres materiału będzie dopasowywany do tych fragmentów/narzędzi z narzędzia Tora, które studenci wybiorą do pracy. Studenci będą też - „w poszukiwaniu inspiracji” - oglądali konkurencyjne narzędzia jak SQL*Developer, Enterprise Manager, Toad.

*** Grupa 2: Android - Grzegorz Grudziński

Tematem moich zajęć będzie środowisko Android, podstawowym językiem będzie Java. Będziemy omawiać budowę systemu, model budowy aplikacji dla niego, przejrzymy poszczególne API potrzebne przy budowie aplikacji o rozmaitej tematyce/funkcjonalności. Postaramy się zapoznać ze wszystkimi najważniejszymi obszarami funkcjonalnymi spotykanymi we współczesnych aplikacjach mobilnych: interfejsem użytkownika, pracą kodu w tle, komunikacją sieciową, API geolokalizacyjnym, obsługą czujników telefonu. Dla zaliczenia przedmiotu, studenci będą musieli (samodzielnie lub w grupach 2-3 osobowych) stworzyć jakieś ciekawe (choć niekoniecznie bardzo skomplikowane) aplikacje.

*** Grupa 3: Architektura mikroserwisowa w aplikacjach web - Michał Gruchała

Celem zajęć będzie przedstawienie nowoczesnych technik budowy skalowalnych i wydajnych aplikacji WWW, które wykorzystują przetwarzanie rozproszone oraz operacje asynchroniczne. Jako przykład implementacji tych technik będziemy budować aplikację typu twitter, która zostanie zrealizowana w architekturze mikroserwisowej.

W ramach zajęć będziemy używać technologii / poruszać następujące zagadnienia:

* Architektura aplikacji WWW z naciskiem na architekturę mikroserwisową.

* Konteneryzacja aplikacji (na przykładzie Docker).

* Rozproszone przetwarzanie danych (na przykładzie RabbitMQ).

* Zarządzanie rozproszoną sesją.

Zajęcia odbywać się będą w formie warsztatów, gdzie uczestnicy będą tworzyć własne rozwiązania oparte o prezentowane techniki.

*** Grupa 4: Programowanie kart graficznych w technologii CUDA - Witold Rudnicki, Maciej Marchwiany

Celem przedmiotu jest zapoznanie studentów z dynamicznie rozwijającym się obszarem informatyki czyli praktycznym wykorzystaniem masywnie równoległych procesorów graficznych. CUDA - technologia zaproponowana i rozwijana przez firmę NVIDIA dominuje w obliczeniach naukowych ponieważ pozwala na stosunkowo szybkie opracowanie wydajnych kodów obliczeniowych.

W ramach zajęć poruszone będą następujące zagadnienia:

* Omówienie architektury procesorów graficznych,

* Omówienie architektury sprzętowej komputerów realizujących obliczenia z wykorzystaniem kart graficznych,

* Model programowania na kartach graficznych,

* Implementacja modelu programowania GPU w CUDA

* Analiza równoległości problemów obliczeniowych

* Ograniczenia wydajności algorytmów równoległych

- pamięć (przepustowość i latencja)

- komunikacja (przepustowość i latencja)

- operacje GPU (wydajności różnych operacji)

- zapełnienie równoległych potoków przetwarzania

* Optymalizacja wydajności algorytmów

- identyfikacja wąskich gardeł

- analiza alternatywnych rozwiązań

- techniki optymalizacji.

Studenci zapoznają się z tymi problemami w praktyce, implementując

wybrane algorytmy obliczeniowe w języku CUDA C/C++.

*** Grupa 5: * - Szymon Acedański

Kontynuacja zajęć z *.

Grupa 6. Eksploracja danych w praktyce. Marcin Sydow

Celem zajęć jest wdrożenie studentów w zagadnienia eksploracji danych z wykorzystaniem współczesnych technik sztucznej inteligencji i statystyki.

*** Grupa 7: Programowanie w języku Common Lisp - Zbigniew Jurkiewicz

Common Lisp jest standardem ANSI języka programowania Lisp, używanego m.in. w sztucznej inteligencji, lingwistyce obliczeniowej, semantyce języków programowania itp. Napisano w nim m.in. większość dużych programów opartych na wiedzy. Celem zajęć będzie zapoznanie uczestników z nowoczesnymi konstrukcjami tego języka oraz pokazanie zalecanego stylu programowania. Omówione też zostaną niektóre standardowe rozszerzenia, np. dla interfejsu graficznego (CLX itp.), sieci czy dostępu do baz danych.

Wśród omawianych tematów znajdą się:

• Uogólnione listy parametrów funkcji. Zwracanie wielu wartości. Funkcje wyższych rzędów.

• Uogólnione przypisanie. Zmienne leksykalne i dynamiczne.

• Konstrukcje sterujące jako makra — możliwość definiowania własnych. Rozszerzalność jezyka: makra lokalne, identyfikatory jako makra. Problemy higieny. Ciekawe konstrukcje standardowe: LOOP, FLET, LABELS.

• Wbudowane typy danych. Sekwencje: uogólnienie list, wektorów i napisów. Wektory rozszerzalne, wektory zmiennej długości. Listy i pary, DESTRUCTURING-BIND. Struktury hierarchiczne. Tablice haszujące, inne słowniki. Pojecie desygnatora obiektów danego typu.

• Pakiety i symbole. Symbole kluczowe. Organizacja przestrzeni nazw.

• Strumienie I/O. Nazwy ścieżkowe. Napisy jako strumienie. Konstrukcje WITH-...

• Konfigurowalne czytanie i pisanie (także systemowe). Makra czytania, readtables. PRINT-OBJECT.

• CLOS. Klasy, funkcje generyczne, metody. Wielodziedziczenie. Kombinacje metod.

• Meta Object Protocol. Metaklasy, prototypy klas. Rozszerzalność części obiektowej, próby uogólnienia dispatch.

• Warunki = uogólniony obiektowy system obsługi wyjątków. Trójstopniowa obsługa: sygnalizacja–>handling–>restart. Nielokalne wyjście: BLOCK + RETURN-FROM. Bezpieczne zwalnianie zasobów: UNWIND-PROTECT.

• Foreign Function Interface: CFFI, Swig. CLX i interfejsy graficzne (np. Gtk). Common Lisp Interface Manager.

• Infrastruktura: kompilacja warunkowa, obliczenia w trakcie kompilacji.

Automatyzacja ładowania pakietów: DEFPACKAGE, ASDF, Quicklisp. Zasoby sieciowe, Quickdoc, CLiki.

Przewidujemy używanie SBCL — publicznej implementacji Common Lispu, wywodzącej sie z CMU Common Lisp.

Warunkiem zaliczenia będzie napisanie kilku średniej wielkości programów.

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

Okres: 2020-02-17 - 2020-06-10
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Koordynatorzy: Zbigniew Jurkiewicz
Prowadzący grup: Szymon Acedański, Paweł Gołąb, Michał Gruchała, Grzegorz Grudziński, Paweł Kucharczyk, Maciej Marchwiany, Witold Rudnicki
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.