Implementacja bibliotek i pakietów do analizy danych

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 2025/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ń

TBA

Regulamin zaliczenia

Na zaliczenie składają się oceny zdobyte za rozwiązanie dwóch prac pisemnych (33+33 p.) oraz 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.

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. M. Gagolewski, Deep R Programming, 2026

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

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

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

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

  9. NIST Digital Library of Mathematical Functions

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

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

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

  13. The GNU C Library

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

  15. R.J. Hyndman, Y. Fan, Sample quantiles in statistical packages, American Statistician, 50(4), 1996, 361–365. DOI: 10.2307/2684934.

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

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

  18. (*) Programming Languages – C. International Standard ISO/IEC 9899:2023, draft

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

Oprogramowanie

Języki programowania: C, C++ (gcc/clang), R, Python (CPython, Cython), Fortran

System operacyjny GNU/Linux (może być na wirtualnej maszynie, np. VirtualBox), np. Ubuntu/Kubuntu.