Symulacje komputerowe w naukach ścisłych

Prowadzący

Czas Trwania Warsztatów

25 godzin lekcyjnych (5 dni po 5 godzin lekcyjnych)

Symulacje komputerowe w naukach ścisłych

Warsztaty z pogranicza informatyki, fizyki i matematyki

Warsztat jest poświęcony rozwijaniu umiejętności programowania w językach C/C++ oraz praktycznemu wykorzystaniu tych umiejętności do tworzenia symulacji zjawisk opisywanych przez teorię fizyki klasycznej oraz kwantowej. Na zajęciach poznamy nie tylko tajniki konstruowania kodu, ale także sposoby wykorzystania gotowych bibliotek, testowania symulacji oraz zarządzania indywidulanym projektem programistycznym. Stworzymy sobie również solidne podłoże matematyczne, będące podstawą każdej wydajnej, odwzorowującej zagadnienie (w pewnym przybliżeniu, oczywiście) symulacji w naukach ścisłych. 

Do kogo kierowany jest ten warsztat?

Warsztat skierowany jest do uczniów, zainteresowanych nauką (lub rozwijaniem posiadanych umiejętności) programowania w językach C lub C++ oraz praktycznym wykorzystaniem zdobytych umiejętności w symulowaniu zjawisk fizycznych. Dla zainteresowanych studiami z dziedzin matematyki, fizyki i informatyki.

Od uczestników warsztatu wymagane jest bardzo dobre rozumienie następujących zagadnień z:

  • Fizyki: podstawy matematycznego opisu oddziaływań fundamentalnych: grawitacyjnych, elektromagnetycznych, silnych i słabych,
  • Matematyki: przekształcanie wzorów, rozwiązywanie równań i nierówności, pojęcie funkcji liniowej i kwadratowej.

Umiejętność programowania w językach C/C++ lub Python jest mile widziana, ale nie niezbędna. W naszym gronie odnajdą miejsce zarówno nowicjusze, jak i osoby o bardziej zaawansowanych umiejętnościach programistycznych :D

Niezbędny sprzęt i oprogramowanie

Do uczestniczenia w zajęciach konieczny jest własny laptop. Dodatkowe oprogramowanie zainstalujemy i skonfigurujemy na zajęciach.

Dlaczego warto wziąć udział w tym warsztacie?

Korzyści wynikające z udziału w warsztacie:

  • rozwinięcie umiejętności programowania w języku C lub C++ i wykorzystanie jej w praktyce,
  • rozszerzenie wiadomości z matematyki (podstawy analizy matematycznej),
  • interdyscyplinarne podejście do zagadnień naukowych (połączenie analizy matematycznej, fizyki i programowania),
  • nauka tworzenia własnego projektu i zarządzania nim,
  • indywidualne podejście do uczestnika (własny projekt o stopniu trudności dostosowanym do umiejętności).

Program warsztatu

Dzień pierwszy

Analiza matematyczna w zadaniach

Każda wydajna, dobrze odwzorowująca zagadnienie fizyczne lub techniczne symulacja komputerowa wymaga solidnego opisu matematycznego. Stąd naszą przygodę z odwzorowywaniem rzeczywistości zaczniemy nie od napisania kodu, ale od analizy matematycznej – przedmiotu spędzającego sen z powiek studentom studiów inżynierskich niemal wszystkich kierunków na Politechnice Warszawskiej. W trakcie pierwszego dnia zajęć dowiemy się, czym są pochodne i całki oraz jak je rozwiązać w sposób analityczny. Zapoznamy się także z programami pomagającymi nam rozwiązać bardziej skomplikowane przypadki. Dokonamy też najważniejszego wyboru w tym tygodniu – wyboru własnego projektu programistycznego.

Dzień drugi

O algorytmach słów kilka. Struktura kodu i typy danych

Ten dzień warsztatów będzie poświęcony podstawowym algorytmom, takim jak grafy skierowane i nieskierowane oraz schematy blokowe. Służą one do porządkowania rozwiązań zagadnień programistycznych o różnym stopniu skomplikowania. Zajmiemy się również pojęciami podstawowych i złożonych typów danych – czym są, jak działają i jak wykorzystać je w programowaniu. Poznamy poprawne sposoby konstruowania kodu i stworzymy zalążki naszych projektów.

Dzień trzeci

Instrukcje warunkowe i pętle. Pojęcie funkcji

Dzień poświęcony rozszerzaniu wiedzy o funkcjonalnościach języków C i C++. Dowiemy się, jak działają instrukcje warunkowe oraz pętle i jak ich używać. Jakie mają zalety, a jakie ograniczenia. Odpowiemy sobie również na pytanie, czym różni się funkcja w sensie matematycznym od funkcji w sensie programistycznym (i jak przełożyć jeden przypadek na drugi). Zajmiemy się również rozwijaniem naszych indywidualnych symulacji.

Dzień czwarty

Dodatkowe biblioteki. Struktury i klasy

Czy warto wyważać otwarte drzwi? Na ogół nie. Dlatego część warsztatów tego dnia poświęcimy na naukę korzystania z gotowych bibliotek, opartych na podstawowych funkcjonalnościach języków C lub C++ (m. in. string, allegro czy eigen) oraz sposobach ich wyszukiwania oraz instalowania (i oczywiście bezbolesnego przebijania się przez dokumentację techniczną :D). Zajmiemy się również zagadnieniami stanowiącymi nieomal sedno języka C++ – strukturami i klasami – ich mocnymi i słabymi stronami oraz możliwościami jakie ze sobą niosą.

Dzień piąty

Programistyczny „misz–masz” – dzień typowo projektowy

Ostatniego dnia warsztatów uczestnicy skupią się na doszlifowaniu swoich symulacji oraz interpretacji uzyskanych wyników. Nowe elementy teoretyczne będziemy wprowadzać indywidualnie, w zależności od stopnia zaawansowania projektu.

Sprawdzanie postępów programisty za pomocą liczby linii kodu, które napisał, jest jak sprawdzanie postępów w budowaniu samolotu poprzez przyrost jego wagi.

Bill Gates