MIMINF:Wstęp do programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Diks (dyskusja | edycje)
Nie podano opisu zmian
Diks (dyskusja | edycje)
Linia 54: Linia 54:
** przykłady wyznaczania kosztów
** przykłady wyznaczania kosztów
** koszt zamortyzowany
** koszt zamortyzowany
*Rekursja
== Forma zajęć ==
Wykład (30 godzin) + laboratorium (30 godzin)


== Opis ==
Celem zajęć jest prezentacja technik programistycznych i struktur danych wykorzystywanych w programowaniu w małej i średniej skali.
== Sylabus ==
=== Autor ===
* Piotr Chrząstowski-Wachtel — Uniwersytet Warszawski
=== Wymagania wstępne ===
* Wstęp do programowania
=== Zawartość ===
* Rekurencja:
** rekurencyjne wyrażanie pojęć
** zastosowania i implementacja
** dowodzenie poprawności procedur rekurencyjnych
* Programowanie z nawrotami:
** przeszukiwanie pełnej przestrzeni stanów
** ucinanie rekursji
* Metoda ''dziel i rządź'':
** metoda inkrementacyjna
** podział binarny
* Dynamiczne struktury danych:
** typy wskaźnikowe
** wskaźnikowa realizacja list
** podstawowe operacje na listach
** listy jednokierunkowe, dwukierunkowe i cykliczne
** atrapy i strażnicy
* Liniowe struktury danych: stosy i kolejki:
** implementacja tablicowa i listowa
** implementacja grafu za pomocą list sąsiedztwa
** algorytmy DFS i BFS
* Drzewa:
** implementacja drzew dowolnego rzędu
** drzewa binarne
** obiegi drzew
** konwersja wyrażeń z postaci infiksowej na prefiksową i postfiksową (ONP)
* Programowanie zachłanne:
** algorytm Huffmana
* Metoda spamiętywania:
** programowanie dynamiczne
** problem plecakowy
** optymalne mnożenie wielu macierzy
=== Literatura ===
#  N.Wirth, ''Algorytmy+Struktury danych=Programy'', Wydawnictwa Naukowo-Techniczne, Warszawa 2001.
# T.H.Cormen, Ch.E.Leiserson, R.L.Rivest, ''Wprowadzenie do algorytmiki'', Wydawnictwa Naukowo-Techniczne, Warszawa 2004.
# D.E.Knuth, ''Sztuka programowania komputerów tom 3'', Wydawnictwa Naukowo-Techniczne, Warszawa 2002.


=== Literatura ===
=== Literatura ===

Wersja z 09:59, 17 paź 2006

Forma zajęć

Wykład (60 godzin) + ćwiczenia (60 godzin) + laboratorium (30 godzin)

Opis

Podstawowy przedmiot pierwszego semestru studiów, mający zapoznać studentów z pojęciami algorytmu i programu. Celem zajęć jest nauczenie projektowania, zapisywania, dowodzenia poprawności i uwzględniania złożoności algorytmów.

Sylabus

Autor

  • Piotr Chrząstowski-Wachtel — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki

Zawartość

  • Pojęcie algorytmu:
    • historia powstania pojęcia algorytmu
    • algorytmy znane ze szkoły (Euklidesa, Hornera, rozwiązywanie równań liniowych i kwadratowych)
  • Języki formalne:
    • alfabet, składnia i semantyka
    • gramatyki bezkontekstowe jako narzędzie definiowania składni
    • definiowanie semantyki przez interpretację wyrażeń poprawnych składniowo
  • Reprezentacja liczb w komputerze:
    • stałe całkowite i rzeczywiste
    • reprezentacje binarne stało- i zmiennopozycyjne
    • systemy znak-moduł i uzupełnieniowy
    • rachunek zmiennopozycyjny — pojęcie zakresu i błędu zaokrągleń
  • Zmienne i wyrażenia:
    • typ zmiennej i wartościowanie zmiennych
    • wyrażenia arytmetyczne i logiczne: składnia i semantyka
  • Instrukcje while-programów:
    • pusta, przypisania, warunkowa, iteracji, wyboru, czytania, pisania, wywołania procedury
    • składnia i semantyka powyższych instrukcji
    • obliczenia skończone i nieskończone
    • błędy obliczeń
    • przykłady algorytmów
  • Asercje w programach i niezmienniki pętli:
    • formuły Hoare'a
    • uzasadnianie poprawności programów
    • własność stopu i metody jej dowodzenia
  • Typy danych:
    • tablice
    • rekordy
    • zbiory
    • pliki
    • typy wyliczeniowe i okrojone
    • typy wskaźnikowe
  • Pliki:
    • pliki o dostępie bezpośrednim
    • pliki tekstowe
  • Funkcje i procedury:
    • składnia i semantyka
    • sposoby przekazywania parametrów: przez wartość i przez zmienną
    • widoczność zmiennych w zagnieżdżonych procedurach
  • Miary złożoności algorytmów:
    • koszty algorytmu: czasowy i pamięciowy, pesymistyczny i średni
    • rozmiar danych
    • przykłady wyznaczania kosztów
    • koszt zamortyzowany

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Celem zajęć jest prezentacja technik programistycznych i struktur danych wykorzystywanych w programowaniu w małej i średniej skali.

Sylabus

Autor

  • Piotr Chrząstowski-Wachtel — Uniwersytet Warszawski

Wymagania wstępne

  • Wstęp do programowania

Zawartość

  • Rekurencja:
    • rekurencyjne wyrażanie pojęć
    • zastosowania i implementacja
    • dowodzenie poprawności procedur rekurencyjnych
  • Programowanie z nawrotami:
    • przeszukiwanie pełnej przestrzeni stanów
    • ucinanie rekursji
  • Metoda dziel i rządź:
    • metoda inkrementacyjna
    • podział binarny
  • Dynamiczne struktury danych:
    • typy wskaźnikowe
    • wskaźnikowa realizacja list
    • podstawowe operacje na listach
    • listy jednokierunkowe, dwukierunkowe i cykliczne
    • atrapy i strażnicy
  • Liniowe struktury danych: stosy i kolejki:
    • implementacja tablicowa i listowa
    • implementacja grafu za pomocą list sąsiedztwa
    • algorytmy DFS i BFS
  • Drzewa:
    • implementacja drzew dowolnego rzędu
    • drzewa binarne
    • obiegi drzew
    • konwersja wyrażeń z postaci infiksowej na prefiksową i postfiksową (ONP)
  • Programowanie zachłanne:
    • algorytm Huffmana
  • Metoda spamiętywania:
    • programowanie dynamiczne
    • problem plecakowy
    • optymalne mnożenie wielu macierzy

Literatura

  1. N.Wirth, Algorytmy+Struktury danych=Programy, Wydawnictwa Naukowo-Techniczne, Warszawa 2001.
  2. T.H.Cormen, Ch.E.Leiserson, R.L.Rivest, Wprowadzenie do algorytmiki, Wydawnictwa Naukowo-Techniczne, Warszawa 2004.
  3. D.E.Knuth, Sztuka programowania komputerów tom 3, Wydawnictwa Naukowo-Techniczne, Warszawa 2002.

Literatura

  1. Wstęp do programowania systematycznego, N.Wirth, Wydawnictwa Naukowo - Techniczne 1999.
  2. Elementy analizy algorytmów, L. Banachowski, A.Kreczmar, Wydawnictwa Naukowo - Techniczne 1987
  3. Projektowanie programów poprawnych i dobrze zbudowanych, S.Alagić, M.Arbib, Wydawnictwa Naukowo - Techniczne 1982