Algorytmy online podejmują nieodwracalne decyzje, nie znając przyszłości, na podstawie danych, które przychodzą sekwencyjnie.

Czy można mimo to generować rozwiązania, które są dobre w porównaniu z optymalnymi? BYĆ MOŻE.

  • Przedmiot ma za zadanie przygotować słuchacza do pracy przy wytwarzaniu oprogramowania na dużą skalę. Postaramy uodpornić się na różne niespodzianki oraz szok, jakim jest zmiana projektów studenckich na projekty komercyjne lub badawcze.

Zajęcia odbywają się w poniedziałki w godzinach 14:16–18:00 w sali 104. Opis zajęć w systemie Zapisy. Strona zajęć z poprzedniej edycji (2024).

C++23 to najnowsza wersja języka C++. Język C++ prawdza się, gdy chcemy zapewnić wysoką wydajność programu. Doskonale nadaje się do zastosowań systemowych, inżynierskich i algorytmicznych. Język ten jest stale rozwijany a kolejne jego specyfikacje, czyli C++11C++14C++17C++20 i C++23, przyniosły wiele zmian i udogodnień. W porównaniu z językiem C++98 (standard z roku 1998) przeszedł on tak dużą transformację, że można śmiało powiedzieć, że jest to nowy język programowania. Aby w pełni wykorzystać potencjał współczesnego języka C++ należy go używać wraz z biblioteką standardową STL. C++ i STL to doskonałe narzędzie do zaimplementowania oprogramowania bardzo wysokiej jakości.

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).

Półsemestralny kurs (15h wyklad + 15h pracowni) obejmuje naukę podstaw programowania równoległego kart graficznych w oparciu o bibliotekę CUDA firmy NVIDIA. Zajęcia będą w nietypowym półsemestralnym wymiarze i rozpoczną się 20 listopada. 

Przedmiot jest kontynuacją Logiki dla Informatyków przeznaczoną dla studentów zainteresowanych teorią informatyki. Celem jego jest rozszerzenie podstaw wiedzy z zakresu logiki matematycznej i dziedzin pokrewnych o narzędzia potrzebne do zaawansowanych studiów w obszarach związanych z logiką i weryfikacją czy teorią języków programowania, bez wchodzenia w tematykę ściśle badawczą. W tym celu będziemy koncentrować się na podstawowych zagadnieniach trzech aspektów logiki matematycznej: algebry uniwersalnej, teorii dowodu i podstawach semantyki logik, z naciskiem na perspektywę i użyteczność w informatyce

Kurs przedmiotu Metody Implementacji Algorytmów w roku 2025/2026.

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. 

Wykład jest wprowadzeniem do projektowania układów cyfrowych przy użyciu języka opisu sprzętu Verilog oraz ich implementacji na układach FPGA. W ramach zajęć student nauczy się również metod testowania sprzętu oraz zapozna się z podstawami formalnej weryfikacji układów cyfrowych.

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.

Wstęp do informatyki 2025/26

Wstępny kurs programowania na przykładzie języka Python.

Na seminarium czytać będziemy prace dotyczące rozstrzygalności i złożoności problemów spełnialności (czy dana formuła ma model), skończonej spełnialności (czy dana formuła ma model skończony) oraz związanych z nimi problemów odpowiadania na zapytania do baz danych/baz wiedzy (dla danej bazy D, teorii logicznej T i zapytania q, czy prawdą jest, że każdy model/skończony model D i T spełnia q?)

Interesować nas będą fragmenty logiki pierwszego rzędu (two-variable fragment, guarded fragment, unary negation fragment, guarded negation fragment, …) oraz logiki deskrypcyjne.

Materiał będzie się częściowo pokrywał z materiałem przedmiotu Problemy Decyzyjne w Logice, ale będzie też sporo innych rzeczy i osoby, które ten przedmiot zaliczyły mogą śmiało zapisać się na seminarium.

Niewykluczone, że spotkamy się z pewnymi problemami otwartymi, które będzie można próbować rozwiązać.

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. 

PWO++ to najlepszy język programowania :-) Autor animacji: Jan Lachowski.

PWO++ to najlepszy język programowania (autor animacji wykorzystującej krzywe Béziera: Jan Lachowski).