Open source · aktywnie rozwijany

Jedna platforma. Różne aktywności. Różne typy zadań.

AlgoJudge pomaga organizować zawody, kursy, laboratoria i treningi oparte na zadaniach programistycznych. Przyjmuje zgłoszenia, przekazuje je do wyspecjalizowanych Runnerów i prezentuje wyniki uczestnikom na żywo.

Jedno miejsce dla całego przepływu

Czym jest AlgoJudge?

Bazowo webowa platforma łączy organizację aktywności, publikowanie zadań i automatyczną ocenę rozwiązań. Powstaje z myślą o instytucjach i zespołach, które chcą uruchamiać własną instancję.

01

Organizuj aktywności

Zawody, kursy, laboratoria, warsztaty i treningi — z jednym spójnym modelem organizacji.

02

Publikuj zadania

Treści, załączniki, terminy, limity, punktacja oraz polityki zgłoszeń zarządzane razem.

03

Oceniaj automatycznie

Kolejkowanie, izolowane wykonanie, testy, checkery, punkty i czytelne werdykty.

Najważniejszy wyróżnik

Nie tylko klasyczny Online Judge

Zaprojektowany dla różnych aktywności i różnych sposobów oceniania.

Nowe typy bez zmian w centralnym Serverze

Client dobiera renderer, Runner dobiera handler oceniania, a Server zachowuje wspólną kopertę danych. Dzięki temu rozszerzenie może powstać na obrzeżach systemu bez wiązania rdzenia ze szczegółami zadania.

Typy aktywności

  • ZawodyW trakcie rozwoju
  • KursW trakcie rozwoju
  • LaboratoriumPrzewidziane przez architekturę
  • WarsztatyPrzewidziane przez architekturę
  • TreningPrzewidziane przez architekturę

Typy zadań

  • Standard I/OW trakcie rozwoju
  • Zadania interaktywnePrzewidziane przez architekturę
  • Własne checkeryPrzewidziane przez architekturę
  • OptymalizacyjnePrzewidziane przez architekturę
  • WieloplikowePrzewidziane przez architekturę
  • Sieciowe i rozproszonePrzewidziane przez architekturę
Od pomysłu do werdyktu

Jak to działa

Server utrzymuje trwały stan i zlecenia. Kod trafia do wymiennego Runnera, który działa w odseparowanym środowisku i odsyła wynik.

  1. 1

    Utwórz aktywność

    Manager konfiguruje zawody lub kurs.

  2. 2

    Dodaj zadanie

    Publikuje treść, pliki, limity i punktację.

  3. 3

    Otwórz zadanie

    Uczestnik poznaje wymagania i format.

  4. 4

    Wyślij rozwiązanie

    Kod oraz metadane trafiają do Servera.

  5. 5

    Utwórz zlecenie

    Server zapisuje zgłoszenie i kolejkuje pracę.

  6. 6

    Oceń w Runnerze

    Runner pobiera zlecenie, izoluje wykonanie i testuje.

  7. 7

    Pokaż wynik

    Status i werdykt wracają do aplikacji na żywo.

  • Statusy aktualizowane na żywo
  • Odseparowane wykonywanie kodu
  • Wymienne Runnery
  • Trwały stan po stronie Servera
Client · Server · Runner · Identity

Modularna architektura bez wiązania platformy z jednym silnikiem wykonawczym

Każdy komponent ma jasno określoną odpowiedzialność. Server koordynuje i przechowuje dane, ale nigdy nie kompiluje ani nie uruchamia kodu.

AlgoJudge Client

Interfejs i renderery

  • Widoki użytkownika i managera
  • Renderery aktywności i zadań
  • Formularze zgłoszeń
  • Prezentacja wyników
API i aktualizacje

AlgoJudge Server

Dane i koordynacja

  • Aktywności, zadania i pliki
  • Uprawnienia i zgłoszenia
  • Zlecenia i wyniki
  • Nie uruchamia kodu

Identity

Tożsamość i dostęp

  • OpenID Connect i OAuth 2.0
  • Uczelniane SSO
  • Lokalne konta
  • Konta krótkoterminowe
Uwierzytelnianie

AlgoJudge Runner

Bezpieczne wykonanie

  • Pobieranie zleceń
  • Kompilacja i izolacja
  • Limity zasobów i testy
  • Obliczanie wyniku
Połączenie wychodzące · działa za NAT-em

Server pozostaje ogólny

Nie zna semantyki konkretnego typu zadania.

Runner inicjuje połączenie

Może działać w innej sieci, także za NAT-em.

Implementacje są wymienne

Różne Runnery mogą obsługiwać różne typy zadań.

Dla edukacji, konkursów i eksperymentów

Jedna baza, różne zastosowania

Wspólny rdzeń wspiera odmienne scenariusze organizacyjne, a rozszerzalność pozostawia miejsce na nowe modele oceniania.

Zawody programistyczne

Rundy, terminy, zgłoszenia, rankingi, punktacja i wyniki aktualizowane na żywo.

Kursy akademickie

Serie zadań, wiele prób, prywatne wyniki i szczegółowa informacja zwrotna.

Warsztaty i wydarzenia

Szybkie aktywności i przewidziane architektonicznie konta tymczasowe z wygasaniem dostępu.

Nowe sposoby oceniania

Wyspecjalizowane Runnery, dodatkowe handlery i renderery — bez zmian w centralnym Serverze.

Budowane otwarcie

Poznaj kod AlgoJudge

Projekt rozwijamy publicznie. Zajrzyj do wybranej części systemu, zgłoś problem albo włącz się w rozwój.

Dołącz do rozwoju
Uczciwie o etapie projektu

Rozwój krok po kroku

AlgoJudge jest aktywnie rozwijany. Poniższy podział rozróżnia bieżący cel, zakres pierwszej wersji i dalsze kierunki — nie jest deklaracją gotowości wszystkich funkcji.

Teraz

Obecny cel

Domknięcie pełnego przepływu od aktywności do wyniku.

  • Tworzenie aktywności
  • Publikacja zadania
  • Wysłanie rozwiązania
  • Wykonanie przez Runnera
  • Prezentacja wyniku
Pierwsza wersja

Zakres MVP

Podstawy potrzebne do realnych zawodów i kursów.

  • Zawody i kurs
  • Zadania standard-io
  • Werdykty i punkty
  • Historia oraz statusy na żywo
  • Logowanie i konta tymczasowe
Później

Dalszy rozwój

Kierunki możliwe dzięki modularnej architekturze.

  • Dodatkowe typy zadań
  • Więcej implementacji Runnera
  • Rozbudowane rankingi
  • Import i eksport paczek
  • Integracje LMS, Moodle i LTI
Open source od pierwszej linii

Twórz zadania. Organizuj aktywności. Rozwijaj otwartą platformę oceniania.

Zobacz architekturę, przejrzyj kod i pomóż kształtować platformę, która nie zamyka nowych pomysłów w jednym modelu oceniania.