Języki i narzędzia programowania III
Informacje ogólne
Kod przedmiotu: | 1000-225bJNP3 | Kod Erasmus / ISCED: |
11.303
![]() |
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 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 |
![]() |
Typ zajęć: |
Ćwiczenia, 30 godzin ![]() |
|
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. |
Właścicielem praw autorskich jest Uniwersytet Warszawski.