Podstawy programowania i przetwarzania danych 2017/2018
(Introduction to Programming and Data Processing)
Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, I rok, studia inż., kier. Inżynieria i analiza danych (Data Science)

Informacje ogólne

Wykład: dr inż. Marek Gągolewski wt., 10-12, s. 107
Ćwiczenia: mgr Anna Cena wt., 16-17, s. 213
Laboratoria: mgr Anna Cena pt., 16-18, s. 203
mgr Barbara Żogała-Siudem pt., 16-18, s. 219

Kurs jest wprowadzeniem do programowania imperatywnego z użytkowymi elementami technik programowania obiektowego na przykładzie języka Python 3. Student poznaje pojęcie algorytmu, funkcji, programu, rekurencji, tablicy (listy), a także najbardziej podstawowe algorytmy, które mogą być wykorzystywane w przetwarzaniu danych, m.in. proste algorytmy sortowania i działania na wektorach oraz macierzach. Zapoznaje się także z wybranymi funkcjami z biblioteki pakietów dla środowiska Python, np. służącymi do generowania wykresów lub operacji na wektorach i macierzach (tensorach). [pełny opis w USOS PW]

Harmonogram zajęć

Wymagane oprogramowanie

Pracujemy w systemie Linux/UNIX i korzystamy z Pythona 3.6 (nie: 2.7; sugerowana dystrybucja: Anaconda). Zobacz instrukcję, jak zainstalować system Linux i Anacondę na maszynie wirtualnej.

Literatura

Podstawowa:

  1. Harel D., Feldman Y., Rzecz o istocie informatyki. Algorytmika (Algorithmics: The Spirit of Computing), WNT, 2008.
  2. Wirth N., Algorytmy + struktury danych = programy (Algorithms + Data Structures = Programs), WNT, 2004.
  3. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C., Wprowadzenie do algorytmów (Introduction to Algorithms), PWN, 2017.
  4. Bentley J., Perełki programowania (Programming Pearls), Helion, 2012.

Uwaga: jako że celem kursu jest m.in. nauka programowania w ogóle, a nie samego języka Python, nie sugerujemy tutaj żadnej literatury dotyczącej tego narzędzia. Podczas zajęć będziemy korzystać ze ściśle określonego podzbioru składni Pythona.

Dodatkowa:

  1. Knuth D.E., Sztuka Programowania. Tom I: Algorytmy Podstawowe, WNT, 2002.
  2. Knuth D.E., Sztuka Programowania. Tom II: Algorytmy seminumeryczne, WNT, 2002.
  3. Knuth D.E., Sztuka Programowania. Tom III: Sortowanie i wyszukiwanie, WNT, 2002.

Tydzień 1. (2017-10-03)

Pojęcie problemu obliczeniowego,
Typy skalarne, operatory

Materiały pomocnicze i literatura uzupełniająca:

  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie
  2. Uwaga: należy „obserwować” (Watch) ww. repozytorium, gdyż inaczej nie będą Państwo otrzymywać wiadomości e-mail nt. aktualizacji, ogłoszeń itp. (sekcja Issues)

Ćwiczenia: Zestaw zadań nr 1

Laboratoria: Przygotowanie środowiska pracy, praca ze skryptami w języku Python, podstawowe polecenia języka

Tydzień 2. (2017-10-10)

Priorytety operatorów w języku Python,
Reprezentacja liczb całkowitych bez znaku

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie
  2. Operator Precedence – The Python Language Reference, Sec. 6.16
  3. W. Stallings, Organizacja i architektura systemu komputerowego, WNT, 2000, rozdz. 8
  4. Knuth D.E., Sztuka Programowania. Tom II: Algorytmy seminumeryczne, WNT, 2002, rozdz. 4.

Ćwiczenia: Zestaw zadań nr 2 (arytmetyka; cz. 1/2)

Laboratoria: Operacje na zmiennych skalarnych (arytmetyczne, logiczne, relacyjne), instrukcja if

Tydzień 3. (2017-10-17)

Reprezentacja liczb całkowitych ze znakiem (znak-moduł i U2),
rzeczywistych (stało i zmiennoprzecinkowe wg IEEE 754) i znaków drukowanych (Unicode)

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie
  2. D. Goldberg, What every computer scientist should know about floating-point arithmetic, ACM Computing Surveys 23(1), 1991, 5-48

Ćwiczenia: Zestaw zadań nr 2 (arytmetyka; cz. 2/2)

Laboratoria: Zadanie punktowane nr 1

Tydzień 4. (2017-10-24)

Błędy arytmetyki FP,
T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie
  2. Knuth D.E., Sztuka Programowania. Tom I: Algorytmy Podstawowe, WNT, 2002, rozdz. 1.

Ćwiczenia: Zestaw zadań nr 3 (algorytmy iteracyjne; cz. 1/2)

Laboratoria: Algorytmy iteracyjne, tworzenie własnych funkcji

Tydzień 5. (2017-10-31)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: Zestaw zadań nr 3 (algorytmy iteracyjne; cz. 2/2)

Laboratoria: Zadanie punktowane nr 2

Tydzień 6. (2017-11-07)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: Zestaw zadań nr 4 (tablice 1; cz. 1/2)

Laboratoria: Uwaga: 2017-11-10 jest dniem wolnym od zajęć

Tydzień 7. (2017-11-14)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: Zestaw zadań nr 4 (tablice 1; cz. 2/2)

Laboratoria (nr 6): Tablice (listy).

Tydzień 8. (2017-11-21)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: Kolokwium nr 1 (16:15-17:45 – obydwie grupy – s. 107)

Laboratoria (nr 7): Zadanie punktowane nr 3

Tydzień 9. (2017-11-28)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria (nr 8): T.B.A.

Tydzień 10. (2017-12-05)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria (nr 9): Zadanie punktowane nr 4

Tydzień 11. (2017-12-12)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria (nr 10): T.B.A.

Tydzień 12. (2017-12-19)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria (nr 11): Zadanie punktowane nr 5

Tydzień 13. (2018-01-09)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria (nr 12, 2018-01-05): T.B.A.

Laboratoria (nr 13, 2018-01-13): Zadanie punktowane nr 6

Tydzień 14. (2018-01-16)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: T.B.A.

Laboratoria: T.B.A.

Tydzień 15. (2018-01-23)

T.B.A.

Materiały pomocnicze i literatura uzupełniająca:
  1. Wybrane materiały, zestawy zadań na ćwiczenia itp. znajdują się GitHubie

Ćwiczenia: Kolokwium 2 (16:15-17:45 – obydwie grupy – s. 107)

Laboratoria: Zadanie punktowane nr 7