Zagadnienia do przedmiotu 'Wstęp do programowania w naukach przyrodniczych'

Poniżej przedstawiono szczegółowy spis zagadnień poruszanych na wykładzie (spisany w semestrze letnim 2016/2017r).

Zadania rozwiązywane w trakcie laboratorium komputerowego znajduje się tutaj (aktualizacja 2.III.16)

  • Wykład pierwszy

    • 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 itd.
      • operacje na zmiennych: * + \ - % << >> && || (w Pythonie: and or)
      • operacje matematyczne z przepełnieniem
    • petla; instrukcja range() z Pythona

  • Wykład drugi

    • petla while

    • instrukcja warunkowa if

    • instrukcje break oraz continue

    • częste konstrukcje:

      • warunek w pętli
      • pętla w pętli (narysuj kwadrat z ‘#’), ze zmiennym zakresem (narysuj trójkąt z ‘#’)
    • importowanie modułów: liczby losowe, funkcje matematyczne, drukowanie na ekran

    • Złożoność algorytmów

      • liniowa
      • kwadratowa
      • logarytmiczna (z polowieniem przedzialu)
    • omówienie problemów z zadania 1.1, problem z silnią w koszcie O(N2)

    • Definiowanie funkcji - w Python-ie: argumenty funkcji, wartość zwracana

  • Wykład trzeci

    • 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
    • Omówienie przykładowego skryptu, w którym w pętli tworzona jest dwuwymiarowa lista

    • Schematy blokowe algorytmów

    • Przykładowe algorytmy:

      • sortowanie bąbelkowe
      • rozwiązywanie równania kwadratowego
  • Wykład czwarty

    • Zakres życia zmiennej; zmienne globalne i lokalne

    • tablice asocjacyjne (mapy, słowniki) w Pythonie

    • Przekazywanie argumentów do funkcji: jako wartość lub jako referencja, wskaźnik. W Pythonie obiekty zawsze przekazywane są przez referencję

    • Ciągi znaków

      • deklarowanie napisów o wielu liniach
      • formatowanie instrukcją printf(), generowanie formatu jako napisu (np w pętli)
      • formatowanie wg R&K
      • zamiana napisu na liczby: funkcje int() oraz float()
      • podstawowe operacje na napisach: funkcje len() oraz strip()
      • podział napisu na wyrazy z wykorzystaniem modułu re
    • Operacje na plikach : otwieranie, pisanie, czytanie, zapis

  • Wykład piąty

    • Warsztat programisty:

      • IDE (sprawdzanie składni, podpowiedzi zależne od kontekstu, itd.)
      • Debugger i profiler (kompilacja z -g i -gprof)
      • repozytoria kodów (github, bitbucket)
      • programy do tworzenia dokumentacji (doxygen)
    • Przykładowa implementacja słownika: drzewo binarne

  • Wykład szósty

    • Uzupełnienie zagadnień z poprzednich wykładów (wpisane do punktów powyżej)

    • Przykład wykorzystania słownika: 3tuple_fasta_py

    • Wstęp do programowania obiektowego : przykładowy skrypt

  • Wykład siódmy

    • Programowanie obiektowe - podstawowe pojęcia: konstruktor, destruktor, klasa, obiekt
    • Programowanie obiektowe - pojęcia zaawansowane: dziedziczenie, przeciążanie
    • Przykładowy program obiektowy : reprezentacja molekuły jako graf