**Important: There will be an entrance exam for the course, and the 20 best
students will be selected. All, who voted for the course received an e-mail
with details. For those, who didn't vote, but still plan to attend this
course, here are details:
* If you want to take part in the course, then register for the lecture next week through System Zapisow in the usual way. There is no restriction on the amount of registrations for the lecture (or it is rather very high).
* Come to the exam. The time of this exam is: October 5th, 8.15-11.15 in the morning. This is the time on which the first class is scheduled. Place of the exam will be announced later.
* If you pass, you will be allowed to register for the 'Pracownia', which will have only 20 places, and you can join the class.
**
* * *
Tworzenie działających poprawnie, łatwych w rozbudowie i wydajnych aplikacji,
wymaga znajomości wielu zagadnień.
C++ jest językiem pozwalającym na pisanie wyjatkowo czytelnego kodu, który
jednocześnie jest wydajny i wspiera programistę przy kontroli poprawności w
fazie kompilacji i precyzyjnie obsługuje błedy w czasie wykonania.
Elementy języka i techniki, które można zastosować dzięki ich złożeniu są
unikalne i niedostępne w innych językach programowania. Wynika to z bardzo
dokładnie przemyślanych cech zarówno składni jak i sposobu, w jaki kompilator
C++ analizuje kod źródłowy oraz generuje kod wynikowy. Przeciążanie
operatorów, klasy templatowe, obiekty lokalne, dostęp do fizycznych zasobów
komputera pozwalają na eleganckie opakowanie badzo złożonych mechanizmów w
sposób umozliwiający szybkie zrozumienie scenariuszy użycia i przedstawienie
algorytmow z nich korzystajacych w czytelny, bezpośredni sposób.
Na kursie zostana omówione najczęściej spotykane grupy problemów spotykanych
przy budowie dużych systemów oraz przykłady najlepszych praktyk w ich
rozwiązywaniu. Będą to przykładowo: Zarządzanie zasobami: (pamięć, dane,
pliki, połaczenia sieciowe), dobieranie lub budowa optymalnych struktur
danych, zarządzanie błedami wykonania (zerwane płączenie, brak pamieci,
neoczekiwany bład algorytmu), wydajne i bezpieczne programowanie wielowątkowe,
zasady konstrukcji zasobów współdzielonych, sposoby archiwizowania danych,
zarządzanie skomplikowanymi algorytmami (zaawansowane techniki rozbijania na
podproblemy, niestandardowe przeciążanie operatorów, uzycie templatów do
propagowania właściwych wzorców projektowych).
Prowadzący kurs: Andrzej Krawczyk, jest włascicielem i głównym architektem w
Human Dialog. W czasie zajęć będą przedstawiane rozwiązania oparte na
osiemnastoletnim doświadczeniu w programowaniu i prowadzeniu kilkuosobowego
zespołu programistów C++ przy kolejnych wersjach jednego systemiu: maszyny
wirtualnej HumanStore.
W zajęciach będzie poozony szczegolny nacisk zarówno na właściwy dobór
rozwiązań jak i elegancję tworzonego kodu. W czasie omawiania poszczególnych
problemów będą omawiane nie tylko techniki poprawnego ich rozwiązywania i ich
zalety ale również najczęściej popełniane błędy i zaniechania oraz ich
konsekwencje.
Przedmiot przeznaczony jest dla osób, które już znają (choćby w podstawowym
stopniu) język C++