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
🏠 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, man

    • echo, touch, cat, cat > file, less, head, tail, nano, jak wyjść z vi

    • chmod, chown, whereis, ln, top/htop, df, du, tar, zip/gzip/bzip2/xz,

    • time, sleep, bg, fg, ps, kill, nice

    • diff, grep (także: rg–ripgrep), find, sed, rename, uniq, sort

2. 2026-03-05

🤔 Zagadnienia
  • Wprowadzenie do języka C (cd.)

    • switch

    • while, do..while, for

    • Cython i numba

    • definiowanie własnych funkcji

    • ‘hello world’ jako aplikacja terminalowa

    • rzut oka na asembler x86

📚 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

  1. T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT Press and McGraw-Hill, 2022

  2. 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

  3. S. Marsland, Machine Learning: An Algorithmic Perspective, Chapman&Hall/CRC, 2015

  4. A. Blum, J. Hopcroft, R. Kannan, Foundations of Data Science, 2018

  5. R.A. van de Geijn, E.S. Quintana-Orti, The Science of Programming Matrix Computations

  6. V. Eijkhout, The Art of HPC, 2026

  7. J.E. Gentle, Matrix Algebra: Theory, Computations and Applications in Statistics, Springer, 2024

  8. M. Gagolewski, Deep R Programming, 2026

  9. M. Gagolewski, Minimalist Data Wrangling with Python, 2026

  10. D. Goldberg, What every computer scientist should know about floating-point arithmetic, ACM Computing Surveys 21(1), 1991, 5–48

  11. N.J. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, 2002

  12. G.H. Golub, C.F. Van Loan, Matrix Computations, The Johns Hopkins University Press, 2013

  13. NIST Digital Library of Mathematical Functions

  14. (*) D.E. Knuth, The Art of Computer Programming, Vols. 1–4B, Addison-Wesley, 2023

  15. (*) B.W. Kernighan, D.M. Ritchie, The C Programming Language, Prentice Hall, 1988

  16. J. Gustedt, Modern C, Manning, 2019

  17. G. Barlas, Multicore and GPU Programming, MK, 2022

  18. N. Matloff, Parallel Computing for Data Science: With Examples in R, C++ and CUDA, CRC Press, 2016

  19. T. Rothwell, J. Youngman, and others, The GNU C Reference Manual (skip the parts devoted to the “GNU extensions”)

  20. (*) J. Arndt, Matters Computational: Ideas, Algorithms, Source Code, Springer, 2011

  21. The GNU C Language Manual (skip the parts devoted to the “GNU extensions”)

  22. The GNU C Library

  23. (*) Programming Languages – C. International Standard ISO/IEC 9899:2018

  24. R Core Team, Writing R Extensions, 2026

  25. R Core Team, R Internals, 2026

Kody źródłowe:

  1. R (mirror)

  2. Python

  3. NumPy

  4. SciPy

  5. Pandas

  6. scikit-learn

  7. data.table

  8. dplyr

  9. GNU GSL