1. Zajęcia dydaktyczne
    1. Bioinformatyka
    2. Modelowanie Molekularne
    3. Struktura Polimerów i Biopolimerów
    4. Wstęp do Programowania w Naukach Przyrodniczych
    5. Wspomaganie Komputerowe Pracowni Chemicznej
    6. Laboratorium Chemii i Biologii Strukturalnej
  2. Courses in English
    1. Bioinformatics
    2. Molecular Modelling

Wstęp do programowania w naukach przyrodniczych

  • Wykład pierwszy (26.II)

    • Pojęcia: kompilator, interpreter, wirtualna maszyna, pseudokod (bytecode)

    • Języki programowania:

      • kompilowane: C, C++, Fortran
      • interpretowane Perl, Python, BASIC, Javascript
      • pseudokod i maszyny wirtualne (VM) : Java, Flash, C#
    • Zmienne

      • i ich typy : char, int, unsigned, float, real
      • bit i bajt; zakresy zmiennych: 256, 65536
      • operacje na zmiennych: * + \ - % << >> && || (w Pythonie: and or)
        *. petla; instrukcja range() z Pythona
  • Wykład drugi (5.III)

    • instrukcja warunkowa
    • częste konstrukcje:
      • warunek w pętli
      • pętla w pętli (narysuj kwadrat z ‘#’), ze zmiennym zakresem (narysuj trójkąt z ‘#’)
    • instrukcje: break continue
    • Importowanie modułów: liczby losowe, funkcje matematyczne, drukowanie na ekran
    • Omówienie problemów z zadania 1.1, problem z silnią w koszcie O(N^2)
    • Złożoność algorytmów
      • liniowa
      • kwadratowa
      • logarytmiczna (z polowieniem przedzialu)
  • Wykład trzeci (12.III)

    • petle while i do
    • schematy blokowe algorytmów
      • warunek (porównanie 3 liczb)
      • pętle: for, while, do
    • Tablice
      • tablice o statycznie alokowanej pamięci (rozmiar jest stały)
      • wektory w C++, listy w Python-ie; rozmiar tychże (len(), .length()); zapełnianie pustej tablicy zerami
      • problemy z przekraczaniem zakresu
      • tablice dwu i trójwymiarowe
      • tablice asocjacyjne (mapy, słowniki) w C++ i w Pythonie
  • Wykład czwarty (19.III)

    • Definiowanie funkcji - w Python-ie i w C: argumenty funkcji, wartość zwracana
    • Przekazywanie argumentów do funkcji: jako wartość lub jako referencja, wskaźnik
    • Zakres życia zmiennej; zmienne globalne i lokalne
    • Krótkie wprowadzenie do obiektów:
      • obiekt to zmienna, która ma własne zmienne i funkcje (metody)
      • dostęp do obiektu przez ‘.’ (wartość, referencja) lub ‘->’ (wskaźnik)
    • Ciągi znaków
      • deklarowanie napisów o wielu liniach
      • formatowanie instrukcją printf(), generowanie formatu jako napisu (np w pętli)
    • Operacje na plikach : otwieranie, pisanie, czytanie, zapis
  • Wykład piąty (26.III)
    • Algorytmy i ich schematy blokowe. Przykładowy algorytm: sortowanie bąbelkowe i jego implementacja
  • **Wykład szósty : Programowanie obiektowe (16.IV) **

    • Klasa i jej obiekty; jak deklarujemy klasę w Pythonie i jak tworzymy jej obiekty
    • metody (funkcje w klasie) i pola (zmienne w klasie)
    • konstruktor klasy
    • destruktor (np. w C++)
    • przeciążenie metod
    • łatwe drukowanie obiektów : metoda __str__() w Pythonie, operator << w C++
  • **Wykład siódmy : Programowanie obiektowe - przykłady (23.IV) **

    • Klasa stos:
      • stos jako struktura danych
      • podstawowe operacje na stosie
      • implementacja klasy
    • Program ‘kalkulator’ - wykorzystuje dwa stosy
  • Wykład ósmy (30.IV)

    • Kilka prostych programów
      Przykłady napisane na tym wykładzie wypisują na ekranie obrazek (kwadratowy, trójkątny itp)
      korzystając z instruktcji print(), podwójnie zagnieżdżonej pętli oraz instrukcji warunkowej
  • Wykład dziewiąty (7.V)

    • Narzędzia dla programisty
      • debugger
      • profiler
      • obfuscator
      • automatyczne generowanie dokumentacji (doxygen)
  • Wykład dziesiąty (14.V)

    • Zawieranie Pythona w aplikacjach
      • PyMol, Blender
    • Rozrzeszanie Pythona - biblioteki funkcji
    • Rozrzeszanie Pyton’a o dodatkową funkcjonalność
    • Parsowanie plików tekstowych:
      • wycinanie fragmentów napisów
      • dzielenie napisu na wyrazy ( funkcja split() )
      • wyrażenia regularne
  • Wykład jedenasty : struktury danych w Pythonie (21.V)

    • obiekty immutable, tworzenie głębokiej kopii obiektu
    • lista i operacje na niej (przypomnienie)
    • tupla
    • słownik
    • zbiór (set)
  • Wykład dwunasty: programowania obiektowego ciąg dalszy (28.V)

    • Organizacja klasy:
      • interfejs obiektu, metody publiczne i prywatne
      • zmiana algorytmu bez wpływu na interfejs
    • Dziedziczenie vs zawieranie w programowaniu obiektowym
    • Drzewo dziedziczenia, problem dziedziczenia wielokrotnego
    • Kilka przykładów:
      • klasa Atom i dziedzicząca po niej PdbAtom
      • klasa Model zawierająca współrzędne Atomów
    • złożony typ danych : macierz rzadka