Projekt zakłada:
* interfejs webowy, backend w Python z użyciem frameworka Flask, komunikacją z bazą danych SQL z użyciem ORM SQLAlchemy, biblioteką Babel do obsługi wielu języków i paru innych bibliotek, frontend Javascript, Bootstrap etc.
* dość skomplikowany interfejs CLI ułatwiający przygotowywanie nowych zadań lub importowanie starych z różnych źródeł,
* sandbox napisany w C,
* moduły sprawdzania - kombinacja C++ i Python + serwer rozdzielający pracę pomiędzy kilka maszyn,
* kilka pomniejszych narzędzi pobocznych dla użytkowników,
* przygotowanie narzędzi pozwalających na zarządzanie kodem, deployment, zarządzanie sprawdzaniem etc.
Studenci w mniejszych zespołach (2-4 osoby) pracują nad małymi projektami (wybranym fragmentem systemu np. drzewo konkursów, uprawnienia użytkowników, ranking) i co tydzień prezentują progres w pracach. Projekty mają być krótsze niż cały semestr, więc każdy powinien być częścią kilku zespołów i wykonać kilka projektów.
Na pierwszych zajęciach zaprezentujemy planowaną architekturę systemu, listę projektów oraz architekturę bieżącego systemu (Solve 3) i problemy z nim związane.
Zainteresowanym doradzam przejrzeć tutorial:
https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world