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
Przedmioty obowiązkowe dla IV 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 kursu (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

* Umie pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02)

* Umie samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09).

* Umie ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych oraz wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych (K_U18).

* Umie planować i organizować pracę indywidualnie i w zespole, także o charakterze interdyscyplinarnym; zarządzać swoim czasem oraz podejmować zobowiązania i dotrzymywać terminów (K_U29).

Kompetencje społeczne:

* Student jest gotów do krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01).

* Student jest gotów do pracy z zachowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02).

* Student jest gotów do uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03).

Metody i kryteria oceniania:

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

Zajęcia w cyklu "Semestr zimowy 2020/21" (zakończony)

Okres: 2020-10-01 - 2021-01-31
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, Michał Gruchała, Henryk Michalewski, Jan Kanty Milczek, Michał Sierakowski, Piotr Wasilewski, Maciej Włodarkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Pełny opis:

* Grupa 1 i 2. Machine Learning w praktyce. Prowadzący: Robert Bogucki, Henryk Michalewski, Jan Kanty Milczek

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 3. Wstęp do programowania w z/OS. Michał Sierakowski

Celem zajęć jest przedstawienie klasycznych technik programowania w systemie operacyjnym z/OS. Program obejmuje wprowadzenie do architektury komputerów IBM Z i systemu z/OS, podstawy programowania w języku COBOL, serwer aplikacyjny CICS oraz bazę danych DB2 z uwzględnieniem interfejsu CICS-DB2. Wszystkie zawarte w programie technologie należą do uniwersalnych i najpowszechniej stosowanych technik w środowiskach z/OS, a stanowią punkt wyjścia do poznania innych mechanizmów tego systemu operacyjnego. Jednocześnie początkowa część zajęć (5 godzin) obejmująca

wprowadzenie do architektury sprzętowej jest podstawą do poznania innych, poza z/OS, systemów operacyjnych ekosystemu IBM Z: z/VM i Linux oraz funkcji realizowanych na poziomie sprzętowym (wirtualizacja, kryptografia). Będące integralną częścią przedmiotu zadania programistyczne będą realizowane w środowisku zdalnym. Uczestnicy zajęć będą mieli możliwość udziału w konkursie Master the Mainframe (www.masterthemainframe.com).

1. Wstęp: wprowadzenie do architektury IBM Z i systemu operacyjnego z/OS, sesja TSO, ISPF/PDF, JCL, zarządzanie zadaniami (kolejki, SDSF), model bezpieczeństwa systemu.

2. Język COBOL: wprowadzenie do programowania w języku COBOL, struktura

programu, obsługa tablic i plików, wywoływania i łączenie, run unit, funkcje wewnętrzne i funkcje zaawansowane.

3. Serwer aplikacyjny CICS: środowisko programistyczne CICS i przegląd poleceń, tworzenie aplikacji w CICS, podstawowe wsparcie dla odwzorowań, sterowanie program-program, dostęp do danych, kolejki, programowanie komunikacji z użytkownikiem w CICS.

4. Udostępnianie i korzystanie z funkcji CICS jako REST API.

* 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. Wprowadzenie do procesów i technologii wytwarzania gier komputerowych. Maciej Włodarkiewicz

Celem zajęć będzie wprowadzenie do procesów i technologii wytwarzania gier komputerowych. Zaczniemy od wprowadzenia teoretycznego i zapoznania z wyzwaniami jakie stoją przed twórcami gier a następnie skupimy się na warsztacie na którym, studenci będą samodzielnie tworzyć grę komputerową w oparciu o znany silnik Unity3D i język programowania C#. Zajęcia będą dzielone w proporcji wykłady/ćwiczenia: 30/70

Tematy zajęć:

1. Wprowadzenie do procesów tworzenia gier komputerowych

2. Wyzwania organizacyjne w procesie tworzenia gier

3. Wyzwania technologiczne w procesie tworzenia gier

4. Modele realizacji projektów

5. Tworzenie gry komputerowej.

Format:

Pierwsze kilka zajęć spędzimy na wprowadzeniu do branży i wyzwań, będzie to realizowane w postaci wykładów z dużą interakcją od studentów. Następnie przez ok 8-10 zajęć będziemy pisać razem prostą grę komputerową w oparciu o popularne technologie C# Unity. Studenci będą mogli śledzić cały proces poprzez działania prowadzącego. Ostatnie dwa zajęcia są zarezerwowane na zaliczenie: prezentacji swojego tytułu dla całej grupy.

* 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. Aplikacje web - Michał Gruchała

Architektura, wydajność i skalowalność mikroserwisów w aplikacjach internetowych

Celem zajęć będzie przedstawienie nowoczesnych technik budowy wydajnych i skalowalnych aplikacji internetowych, które składają się z wielu mikroserwisów. Wydajność i skalowalność zapewni nam cache, sharding baz danych oraz rozwiązania NoSQL.

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

- Architektura aplikacji www, z naciskiem na architekturę mikroserwisów

- Konteneryzacja aplikacji (na przykładzie Docker)

- Skalowalność baz danych (replikacja, sharding)

- Cache (na przykładzie Varnish-Cache)

- Rozwiązania NoSQL (na przykładzie Redis i Elasticsearch)

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

Zajęcia w cyklu "Semestr zimowy 2021/22" (w trakcie)

Okres: 2021-10-01 - 2022-02-20
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Koordynatorzy: Piotr Wasilewski
Prowadzący grup: Marcin Benke, Michał Gruchała, Zbigniew Jurkiewicz, Michał Sierakowski, Jerzy Tyszkiewicz, Piotr Wasilewski, Maciej Włodarkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Pełny opis:

* Grupa 1: Termiknowledge. Jerzy Tyszkiewicz

Zadaniem tej grupy jest stworzenie oprogramowania dla międzynarodowego projektu "TERMIKNOWLEDGE", realizowanego na UW oraz uniwersytetach w Heidelbergu, Mediolanie i Pradze.

Zakres prac obejmuje:

1. Stworzenie bazy danych do przechowywania wielojęzycznych danych słownikowo-terminologicznych

2. Oprogramowanie interfejsu do wprowadzania danych, z systemem uprawnień dla zespołu językoznawców

3. Oprogramowanie interfejsu wyszukiwania i przeglądania w gotowej bazie

4. Stworzenie dokumentacji dla użytkowników

5. Wdrożenie

Założenia przewidują wykorzystanie gotowych komponentów dla stworzenia działającej aplikacji webowej.

Ze względu na harmonogram zasadnicza część pracy będzie musiała być wykonana do grudnia, przez resztę semestru trzeba będzie tylko dokonywać niezbędnych poprawek w już działającym systemie.

* Grupy 2 i 6: Programowanie funkcyjne w języku Haskell. Marcin Benke

Celem zajęć jest przedstawienie najważniejszych zagadnień 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 3: Wstęp do programowania w z/OS. Michał Sierakowski

Celem zajęć jest przedstawienie klasycznych technik programowania w systemie operacyjnym z/OS. Program obejmuje wprowadzenie do architektury komputerów IBM Z i systemu z/OS, podstawy programowania w języku COBOL, serwer aplikacyjny CICS oraz bazę danych DB2 z uwzględnieniem interfejsu CICS-DB2. Wszystkie zawarte w programie technologie należą do uniwersalnych i najpowszechniej stosowanych technik w środowiskach z/OS, a stanowią punkt wyjścia do poznania innych mechanizmów tego systemu operacyjnego. Jednocześnie początkowa część zajęć (5 godzin) obejmująca

wprowadzenie do architektury sprzętowej jest podstawą do poznania innych, poza z/OS, systemów operacyjnych ekosystemu IBM Z: z/VM i Linux oraz funkcji realizowanych na poziomie sprzętowym (wirtualizacja, kryptografia). Będące integralną częścią przedmiotu zadania programistyczne będą realizowane w środowisku zdalnym. Uczestnicy zajęć będą mieli możliwość udziału w konkursie Master the Mainframe (www.masterthemainframe.com).

1. Wstęp: wprowadzenie do architektury IBM Z i systemu operacyjnego z/OS, sesja TSO, ISPF/PDF, JCL, zarządzanie zadaniami (kolejki, SDSF), model bezpieczeństwa systemu.

2. Język COBOL: wprowadzenie do programowania w języku COBOL, struktura

programu, obsługa tablic i plików, wywoływania i łączenie, run unit, funkcje wewnętrzne i funkcje zaawansowane.

3. Serwer aplikacyjny CICS: środowisko programistyczne CICS i przegląd poleceń, tworzenie aplikacji w CICS, podstawowe wsparcie dla odwzorowań, sterowanie program-program, dostęp do danych, kolejki, programowanie komunikacji z użytkownikiem w CICS.

4. Udostępnianie i korzystanie z funkcji CICS jako REST API.

* 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: Wprowadzenie do procesów i technologii wytwarzania gier komputerowych. Maciej Włodarkiewicz

Celem zajęć będzie wprowadzenie do procesów i technologii wytwarzania gier komputerowych. Zaczniemy od wprowadzenia teoretycznego i zapoznania z wyzwaniami jakie stoją przed twórcami gier a następnie skupimy się na warsztacie na którym, studenci będą samodzielnie tworzyć grę komputerową w oparciu o znany silnik Unity3D i język programowania C#. Zajęcia będą dzielone w proporcji wykłady/ćwiczenia: 30/70

Tematy zajęć:

1. Wprowadzenie do procesów tworzenia gier komputerowych

2. Wyzwania organizacyjne w procesie tworzenia gier

3. Wyzwania technologiczne w procesie tworzenia gier

4. Modele realizacji projektów

5. Tworzenie gry komputerowej.

Format:

Pierwsze kilka zajęć spędzimy na wprowadzeniu do branży i wyzwań, będzie to realizowane w postaci wykładów z dużą interakcją od studentów. Następnie przez ok 8-10 zajęć będziemy pisać razem prostą grę komputerową w oparciu o popularne technologie C# Unity. Studenci będą mogli śledzić cały proces poprzez działania prowadzącego. Ostatnie dwa zajęcia są zarezerwowane na zaliczenie: prezentacji swojego tytułu dla całej grupy.

* Grupa 7: Aplikacje web. Michał Gruchała

Architektura, wydajność i skalowalność mikroserwisów w aplikacjach internetowych

Celem zajęć będzie przedstawienie nowoczesnych technik budowy wydajnych i skalowalnych aplikacji internetowych, które składają się z wielu mikroserwisów. Wydajność i skalowalność zapewni nam cache, sharding baz danych oraz rozwiązania NoSQL.

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

- Architektura aplikacji www, z naciskiem na architekturę mikroserwisów

- Konteneryzacja aplikacji (na przykładzie Docker)

- Skalowalność baz danych (replikacja, sharding)

- Cache (na przykładzie Varnish-Cache)

- Rozwiązania NoSQL (na przykładzie Redis i Elasticsearch)

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

* Grupa 8: Programowanie w Scheme i podobnych językach. Zbigniew Jurkiewicz

Scheme jest przykładem języka funkcyjnego typu Lisp-1 z gorliwym porządkiem obliczania (,,application order''). Posiada kilka zaawansowanych konstrukcji, rzadko spotykanych w innych językach, na przykład:

- dwustronne kontynuacja, pozwalające na wznawianie już zakończonych obliczeń;

- higieniczne makra (rozszerzenia syntaktyczne).

Ma też wiele odmian, nastawionych na pracę w konkretnych środowiskach przedmiotowych, był na przykład językiem do rozszerzania programu Gimp. Oprócz poznania najciekawszych konstrukcji języka i jego odmian zajmiemy się jego użyciem w przetwarzaniu języków, zarówno sztucznych jak i naturalnych.

Jeśli starczy czasu, to w drugiej części spróbujemy zbudować interfejs w Scheme do narzędzi z NLTK (Natural Language ToolKit).

Warunkiem zaliczenia będzie napisanie kilku (4-5) programów.

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.