Wykład: poniedziałki 15:15–16:00+$\varepsilon$, sala 1.01
Prowadzący ćwiczenia:
grupa #1 — Bartłomiej Zglinicki, wtorki 15:15-17:00, sala 1.34
grupa #2 — Dariusz Wiater, czwartki 9:15-11:00, sala 1.34
grupa #3 — Dariusz Wiater, piątki 9:15-11:00, sala 1.28komp
grupa #4 — Rafał Masełek, czwartki 9:15-11:00, sala 1.27komp
grupa #5 — Ignacy Nałęcz, czwartki 10:15-12:00, sala 1.28komp
Polecane podręczniki (płatne :-():
"Effective Python" by Brett Slatkin
"Introduction to Computation and Programming Using Python" by John V. Guttag
Polecane zasoby (darmowe :-)):
[http://www.py4e.com/lessons]
[http://openbookproject.net/thinkcs/python/english3e/]
[http://runestone.academy/runestone/books/published/thinkcspy/index.html]
[http://stackoverflow.com]
Polecane interpretery Python3 dostępne z poziomu przeglądarki:
[https://colab.research.google.com/]
[https://www.onlinegdb.com/]
[https://repl.it/languages/python3]
[https://www.w3schools.com/python/python_compiler.asp]
Polecane inne kursy:
"Introduction to Computer Science and Programming in Python", Ana Bell (MIT, OpenCourseWare)
"Introduction to Computer Science and Programming Using Python", Eric Grimson (MIT)
ocena = $f\big(\!\min(75, \sum_{i=1}^5 p_i)+\min(25, \sum_{i=1}^2 q_i)\big)$, gdzie:
| $x$ | $f(x)$ |
|---|---|
| >=90 | 5 |
| 81-89 | 4+ |
| 72-80 | 4 |
| 62-71 | 3+ |
| 50-61 | 3 |
$p_{1,2,3}$ — oceny z projektów zaliczeniowych (0-20) [update: 2 serie projektów oceniane 0-20 z oceną mnożoną przez 1.5]
$p_4$ — aktywność na ćwiczeniach (0-15)
$p_5$ — nadesłane rozwiązania zadań z "projecteuler" (0-15, po 3 za zadanie)
$q_1$ — ocena z egzaminu (0-25)
$q_2$ — nadesłane rozwiązania trudnych zadań z "projecteuler" (0-25, po 5 za zadanie które dotąd rozwiązało < 1000 osób)
Rozwiązane przez państwa (i studentów z poprzedniej edycji) trudne zadania z Project Euler
#308 (Grzegorz Szymanek)
#417
#437
#497 (Grzegorz Szymanek)
#523 (Jakub Anioła)
#603 (Marcin Welter)
#615 (Grzegorz Szymanek)
#692
#704 (Marcin Welter)
#710 (Grzegorz Szymanek)
#743 (Marcin Welter)
#755 (Grzegorz Szymanek)
#788 (Olgierd Żurek, Marcin Welter)
Zestawy projektów zaliczeniowych
- Seria 1 (opublikowane: 2.04.2022, termin: 16.04.2021, 22:00)
Steganografia (autor: Bartłomiej Zglinicki)
Całkowanie (autor: Dariusz Wiater)
Różniczkowanie (autor: Rafał Masełek)
Prawo Benforda (autor: Ignacy Nałęcz)
Czarne Dziury (autor: Grzegorz Łach)
- Seria 2 (opublikowane: 9.05.2022, termin: 23.05.2021, 22:00)
Cells (autor: Bartłomiej Zglinicki)
Klocki (autor: Dariusz Wiater)
Drzewo decyzyjne (autor: Rafał Masełek)
Enigma (autor: Ignacy Nałęcz)
RNA (autor: Grzegorz Łach)
- Seria 3 (dla zuchwałych, autor: Grzegorz Łach)
Projekt 1 (paski TVPinfo)
Projekt 2 (modele lodu)
Projekt 3 (szeregi potęgowe)
Projekt 4 (węzly na kracie)
Projekt 5 (obrazy na filmie)
Projekty 1, 2 i 4 są dosyć trudne, a projekt 5 wydaje się najtrudniejszy.
| Wykład 1 | 2022-02-28 15:15-16:00 sala 1.01 |
|---|
- organizacja wykładu, zasady zaliczenia
- dlaczego Python? programowanie imperatywne/obiektowe/funkcyjne/deklaratywne
- zaczynamy! (print, if, while)
- deklarowanie funkcji (def)
| Wykład 2 | 2022-03-07 15:15-16:00 sala 1.01 |
|---|
- cd. while: pass, break, continue
- sekwencyjne typy danych (napisy, listy, krotki)
- metody klasy list: .append, .extend, .sort
- pętla for
| Wykład 3 | 2022-03-14 15:15-16:00 sala 1.01 |
|---|
- list comprehension
- słowniki, dictionary comprehension
- funkcje, argumenty opcjonalne
- funkcje, argumenty pozycyjne i nazwane
Wykład 3 [PDF]
Polecam: https://www.youtube.com/watch?v=belS2Ek4-ow
| Wykład 4 | 2022-03-21 15:15-16:00 sala 1.01 |
|---|
- formatowanie napisów
- operacje na plikach
- operacja na strumieniach Linux/Unix-owych
- dostęp do listy argumentów programu
Wykład 4 [PDF]
Polecam: https://realpython.com/python-f-strings/
| Wykład 5 | 2022-03-28 15:15-16:00 sala 1.01 |
|---|
- funkcje jako argument
- rekurencja
- rekurancja z zapamiętywanie
- rozwiązanie przez użycie dekoratorów
Wykład 5 [PDF]
Polecam #1: https://www.youtube.com/watch?v=Qk0zUZW-U_M
Polecam #2: https://www.youtube.com/watch?v=25ovCm9jKfA
| Wykład 6 | 2022-04-04 15:15-16:00 sala 1.01 |
|---|
- wyrażenia lambda
- elementy programowania funkcyjnego
- funkcje map, reduce, zip, filter, enumerate
- konstrukcje funkcyjne vs. list comprehension
| Wykład 7 | 2022-04-11 15:15-16:00 sala 1.01 |
|---|
- programowanie obiektowe, klasy i objekty
- przeładowanie operatorów __add__, __mul__, etc.
- __init__, __str__, __repr__, __lt__, etc.
| Wykład 8 | 2022-04-25 15:15-16:00 sala 1.01 |
|---|
- __rmul__, __div__, __truediv__
- isinstance vs type(…)==
- __eq__, "==" vs "is"
| Wykład 9 | 2022-05-16 15:15-16:00 sala 1.01 |
|---|
- zmienne klasy
- metody klasy
- dziedziczenie
| Wykład 10 | 2022-05-23 15:15-16:00 sala 1.01 |
|---|
- obsługa wyjątków
- instrukcje try i except
- iteratory
| Wykład 11 | 2022-05-30 15:15-16:00 sala 1.01 |
|---|
- generatory
- instrukcja yield
- wyrażenia generatorowe
Wykład 10 [PDF]
Polecam: https://www.youtube.com/watch?v=D1twn9kLmYg
| Wykład 12 | 2022-06-06 15:15-16:00 sala 1.01 |
|---|
- Python jako język refleksyjny — instrukcje eval i exec
- Programy piszące "programy" — sprowadzanie do problemów SAT
- biblioteki pycosat i pysat
Wykład 11 [PDF]
[https://colab.research.google.com/drive/1Ko6-8GZf4s4h9dcerK6IzUWuzGglQZ52?usp=sharing]
| Wykład 13 | 2022-06-13 15:15-16:00 sala 1.01 |
|---|
- przetwarzanie współbieżność
- wieloprocesowość i wielowątkowość —- czy i kiedy?
- synchronizacja wątków
Introduction to parallel programming (for physicists) [PDF]
[https://colab.research.google.com/drive/1J0Nauk0jahWJi1FWLuEcRjwp9VSR3PSq?usp=sharing]
| Wykład X | 2022-06-13 15:15-16:00 sala 1.01 |
|---|
- wykład gościnny