Implementacja bibliotek i pakietów do analizy danych 2026¶
(Libraries and packages for data science)
Studia inżynierskie, IV sem. (letni), przedmiot obieralny, Inżynieria i Analiza Danych (Data Science), Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej
Kurs omawia w jaki sposób implementować efektywnie i zgodnie z zasadami sztuki wybrane metody przetwarzania i analizy danych. Nacisk położony jest na tworzenie wysokiej jakości kodu (dobrze udokumentowanego i przetestowanego) i udostępnienie go w postaci bibliotek języka C oraz pakietów R i Python. Poruszane są także zagadnienia związane z przyspieszaniem obliczeń (optymalne wykorzystanie pamięci podręcznej, istniejących bibliotek, programowanie wielowątkowe przy użyciu OpenMP itp.). Dzięki uczestnictwie w kursie, studenci będą także lepiej rozumieć wady i zalety istniejących pakietów analizy danych (NumPy, SciPy, R, MATLAB itd.).
Wymagania wstępne: Przetwarzanie danych ustrukturyzowanych (R i Python), Algorytmy i struktury danych, Metody numeryczne.
Harmonogram – Semestr letni 2026¶
Wykład+Laboratoria+Projekt („warsztaty”): czwartki 14:15-18:00, MiNI s. 105 — należy przynieść własnego laptopa
Konsultacje: MiNI pok. 550; jestem prawie codziennie
Kolokwia: VIII i XIV tydzień
Oddanie projektów+prezentacja: XV tydzień
1. 2026-02-26¶
- 🤔 Zagadnienia
Wprowadzenie do kursu: O tym, dlaczego umiejętność programowania niskopoziomowego jest ważna w naszej dziedzinie
Wprowadzenie do języka C (podzbiór C17; C23 jeszcze nie jest dobrze wspierany):
deklaracja zmiennych, typowe typy skalarne
operatory arytmetyczne, relacyjne i logiczne
if
- 📚 Literatura
Zalecana (jedno wystarczy; uwaga na „GNU extensions”, które nie są częścią standardu języka C):
(!) T. Rothwell, J. Youngman i in. The GNU C Reference Manual albo
(!) The GNU C Language Manual – rozszerza powyższe
Dodatkowa:
J. Gustedt, Modern C, Manning, 2019
(*) Programming Languages – C. International Standard ISO/IEC 9899:2018
Bonus:
- 🏠 Praca domowa
Zainstaluj Linuxa, gcc, Pythona, i R; zob. sekcję Oprogramowanie poniżej
Przypomnij sobie następujące polecenia:
cd,pwd,ls,ls -l,mkdir,cp,cp -i,mv,rm,rm -rf,rm --help,manecho,touch,cat,cat > file,less,head,tail,nano, jak wyjść zvichmod,chown,whereis,ln,top/htop,df,du,tar,zip/gzip/bzip2/xz,time,sleep,bg,fg,ps,kill,nicediff,grep(także:rg–ripgrep),find,sed,rename,uniq,sort
2. 2026-03-05¶
- 🤔 Zagadnienia
- 📚 Literatura
zob. Tydzień I
- 🏠 Praca domowa
TBA
3. 2026-03-12¶
- 🤔 Zagadnienia
Wprowadzenie do języka C (cd.)
zadanie: benchmarki Python, Cython vs C raz jeszcze
preprocesor języka C
- 📚 Literatura
zob. Tydzień I
- 🏠 Praca domowa
TBA
4. 2026-03-19¶
- 🤔 Zagadnienia
Wprowadzenie do języka C (cd.) * jeden program – wiele plików źródłowych i nagłówkowych; linker *
struct,typedef,union,enum* funkcje i zmienne statyczne (static) *goto* tablice statyczne * …TBA…- 📚 Literatura
zob. Tydzień I
- 🏠 Praca domowa
TBA
5. 2026-03-26¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
6. 2026-04-02¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
7. 2026-04-09¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
8. 2026-04-16¶
- 🤯 Kolokwium I
TBA
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
9. 2026-04-23¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
10. 2026-04-30¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
11. 2026-05-07¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
12. 2026-05-14¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
13. 2026-05-21¶
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
14. 2026-05-28¶
- 🤯 Kolokwium II
TBA
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
15. 2026-06-11¶
- 🤯 Oddanie projektów
TBA
- 🤔 Zagadnienia
TBA
- 📚 Literatura
TBA
- 🏠 Praca domowa
TBA
Regulamin zaliczenia¶
Na zaliczenie składają się oceny zdobyte za rozwiązanie dwóch prac pisemnych (33+33 p.) oraz indywidualny projekt programistyczny z prezentacją wyników pod koniec semestru (33 p.).
W trakcie kolokwiów można mieć przy sobie tylko jedną kartkę A4 z własnymi odręcznymi zapiskami.
Podczas zadania projektowego nie można korzystać z żadnych narzędzi AI (ChatGPT, Copilot, Claude Code itp.).
Zgodnie z Regulaminem Studiów w Politechnice Warszawskiej (par. 19 ust. 4), jeżeli podczas weryfikacji osiągnięcia efektów uczenia się zostanie stwierdzona niesamodzielność pracy studenta lub korzystanie przez niego z materiałów lub urządzeń innych niż dozwolone w regulaminie przedmiotu, student uzyskuje ocenę niedostateczną i traci prawo do zaliczenia przedmiotu w jego bieżącej realizacji.
Obecność na zajęciach laboratoryjnych i projektowych jest obowiązkowa. Za każdą nieusprawiedliwioną nieobecność (np. formalnym zaświadczeniem lekarskim) obniża się wynik końcowy o 5 p.
Nie ma możliwości poprawy ocen. Ocena końcowa jest funkcją sumy uzyskanych punktów: wynik ≤50 p. oznacza ocenę 2,0; (50, 60] – 3,0; (60, 70] – 3,5; (70, 80] – 4,0; (80, 90] – 4,5; >90 – 5,0.
Oprogramowanie¶
System operacyjny: GNU/Linux (może być na wirtualnej maszynie, np. VirtualBox), np. Ubuntu, Kubuntu, Lubuntu, Linux Mint.
Języki programowania: C, C++ (gcc/clang), R, Python (CPython, Cython), Fortran. W systemie Ubuntu wystarczy uruchomić:
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y install r-base-dev python3-dev pandoc
sudo apt-get -y install cython
sudo apt-get -y install jupyter-notebook
Literatura¶
T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT Press and McGraw-Hill, 2022
W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery, Numerical Recipes. The Art of Scientific Computing, 3rd ed., Cambridge University Press, 2007
S. Marsland, Machine Learning: An Algorithmic Perspective, Chapman&Hall/CRC, 2015
A. Blum, J. Hopcroft, R. Kannan, Foundations of Data Science, 2018
R.A. van de Geijn, E.S. Quintana-Orti, The Science of Programming Matrix Computations
V. Eijkhout, The Art of HPC, 2026
J.E. Gentle, Matrix Algebra: Theory, Computations and Applications in Statistics, Springer, 2024
M. Gagolewski, Deep R Programming, 2026
M. Gagolewski, Minimalist Data Wrangling with Python, 2026
D. Goldberg, What every computer scientist should know about floating-point arithmetic, ACM Computing Surveys 21(1), 1991, 5–48
N.J. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, 2002
G.H. Golub, C.F. Van Loan, Matrix Computations, The Johns Hopkins University Press, 2013
(*) D.E. Knuth, The Art of Computer Programming, Vols. 1–4B, Addison-Wesley, 2023
(*) B.W. Kernighan, D.M. Ritchie, The C Programming Language, Prentice Hall, 1988
J. Gustedt, Modern C, Manning, 2019
G. Barlas, Multicore and GPU Programming, MK, 2022
N. Matloff, Parallel Computing for Data Science: With Examples in R, C++ and CUDA, CRC Press, 2016
T. Rothwell, J. Youngman, and others, The GNU C Reference Manual (skip the parts devoted to the “GNU extensions”)
(*) J. Arndt, Matters Computational: Ideas, Algorithms, Source Code, Springer, 2011
The GNU C Language Manual (skip the parts devoted to the “GNU extensions”)
(*) Programming Languages – C. International Standard ISO/IEC 9899:2018
R Core Team, Writing R Extensions, 2026
R Core Team, R Internals, 2026
Kody źródłowe: