Celem zajęć jest przedstawienie podstawowych metod i algorytmów rozwiązywania typowych zadań obliczeniowych. Omawiane zagadnienia mają wielorakie zastosowania m.in. w obliczeniach naukowych czy grafice komputerowej.

Opis w Systemie Zapisy. Zajęcia odbywają się we środy w godzinach 14:15–18:00 w sali 139. Ostatnia migracja danych z Systemu Zapisy odbyła się 14 października 2024.

Celem projektu jest praktyczna nauka architektur komputerów poprzez ich implementację w formie umożliwiającej syntezę na układy FPGA. Pierwszym krótkoterminowym celem projektu jest zaimplementowanie minimalnego rdzenia RISC-V (RV32I) w mikroarchitekturze out-of-order. Implementacja będzie miała w założeniu modularny charakter „generatora rdzeni”, umożliwiający dodawanie, rekonfigurację i wymianę elementów składowych rdzenia bez głębokich zmian w kodzie.

Kurs o modelach językowych. Do czego służą, jak są zbudowane i czy (już) śnią o elektrycznych owcach.
Najważniejsze informacje dla nowych studentów rozpoczynających naukę w roku akademickim 2024/25.
Na wykładzie wprowadzone jest teoria i podstawowe metody, które umożliwiają efektywne programowanie grafiki z użyciem kart graficznych. Wykład nie jest jednak kursem biblioteki OpenGL.
Najważniejszym elementem zajęć są prezentację prowadzone przez studentów dla innych studentów. Ćwiczymy publiczne mówienie o sprawach technicznych, przy okazji budując widzę o wizualizacji danych.
Wykład jest wprowadzeniem do programowania systemów wbudowanych. W ramach wykładu student zapozna się z architekturą popularnych mikrokontrolerów, nauczy się wykorzystywać ich peryferia do sterowania różnorodnymi urządzeniami zewnętrznymi, a także pozna popularne magistrale używane w systemach wbudowanych.
Wykład przedstawia najważniejsze informacje dotyczące równań w słowach
Wstępny kurs programowania na przykładzie języka Python.
Opis przedmiotu w Systemie Zapisy. Zajęcia odbywają się we wtorki w godzinach 16:15–18:00 w sali 141. Ostatnia migracja danych z Systemu Zapisy odbyła się 14 października 2024.

Java to współczesny obiektowy język programowania stworzony przez Jamesa Goslinga z firmy Sun Microsystems. Od momentu powstania w połowie lat 90-tych XX wieku przeżył on dynamiczny rozwój a zainteresowanie nim nie maleje. Język Java przyciągnął do dziś wiele milionów programistów. Znajduje zastosowanie w każdej ważniejszej gałęzi przemysłu informatycznego i jest obecny w różnego rodzaju urządzeniach, komputerach i sieciach. Popularność Javy wynika przede wszystkim z przenośności programów i niezależności od konkretnej platwormy sprzętowej, a co za tym idzie, ma zastosowanie w Internecie oraz ogólnie w aplikacjach sieciowych. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, odśmiecanie pamięci) oraz z języka C++ (znaczna część składni i słów kluczowych).

Celem tych zajęć jest nauka programowania obiektowego w języku Java oraz zapoznanie z najważniejszymi pakietami z biblioteki standardowej i podstawowymi technologiami programistycznymi Javy.

Prace Churcha, Turing i Goedla z początków XX w. pokazały, że problem spełnialności (czy dana formuła ma model?) dla logiki pierwszego rzędu jest nierozstrzygalny. Wyniki te zapoczątkowały duży program badawczy, którego celem było ustalenie, które naturalne fragmenty logiki pierwszego rzędu są rozstrzygalne. Nieco później dodatkowym bodźcem dla tego programu stały się potencjalne zastosowania w informatyce (bazy danych, reprezentacja wiedzy, automatyczna weryfikacja programów i sprzętu, sztuczna inteligencja, itd.). Oczywiście, zwiększyły one też zainteresowanie badaczy dokładną złożonością obliczeniową problemu spełnialności w przypadku fragmentów rozstrzygalnych.

Na wykładzie przedstawię szereg wyników dotyczących rozstrzygalności/nierozstrzygalności i złożoności obliczeniowej logik motywowanych teorią informatyki.

W programie m.in.: logiki modalne, temporalne i deskrypcyjne, logiki z dwiema zmiennymi, fragmenty strzeżone, logika z unarną negacją. Wykład będzie oparty głównie na pracach opublikowanych w ciągu ostatnich dwudziestu kilku lat, choć opowiem oczywiście również o paru klasycznych wynikach, sięgając m.in. do prac Kurta Gödla.

Wymagania: Logika dla informatyków, Zalecane: Języki formalne i złożoność obliczeniowa

Course description:

This seminar will cover the latest research in generative AI, with a focus on generative models, such as variational autoencoders (VAEs), generative adversarial networks (GANs) and diffusion models (DDPM, or recent modifications LoRA, IP adapters, SORA, …).

The seminar will be based on recent papers and will cover a wide range of topics, including the theory of generative models, training and evaluation of GANs, and applications of generative models in computer vision, natural language processing, and other areas.

Each student will be required to present a paper, write a summary of the paper, and participate in discussions of the papers presented by other students.

Prerequisites:

Basic knowledge of machine learning and deep learning (e.g., completion of the Neural Networks course). Basic knowledge of probability theory and statistics (e.g., completion of the Probability and Statistics course). Basic knowledge of linear algebra (e.g., completion of the Linear Algebra course). The seminar will be held in English (or Polish if all participants prefer).