Commit a60550ea authored by Antonios Angelakis's avatar Antonios Angelakis

Many fixes, add some figures and listings

parent 4633de77
<?xml version="1.0" encoding="utf8"?>
<CATS version="1.4">
<Problem title="Titlos" lang="en" tlimit="2" mlimit="64"
author="Admin" inputFile="titlos.in" outputFile="titlos.out">
<Keyword code="alg.geometry"/>
<ProblemStatement>
Problem statement and description.
</ProblemStatement>
<InputFormat>
Description of input format.
</InputFormat>
<OutputFormat>
Description of output format.
</OutputFormat>
<ProblemConstraints>
$1 \le m \le 100$, $-100 \le x_i \le 100, 0 &lt; y_i \le 100$
</ProblemConstraints>
<Sample rank="1">
<SampleIn>
3
1 2 3
4 5 6
7 8 9
</SampleIn>
<SampleOut>
6
15
24
</SampleOut>
</Sample>
<Solution name="sol" src="titlos_al.dpr" />
<Import guid="std.testlib.1.1" type="checker" />
<Checker name="ch" src="check.dpr" style="testlib"/>
<TestRange from="1" to="42"><In src="tests/%0n"/><Out use="sol"/></TestRange>
</Problem>
</CATS>
@article{church-1932-spfl,
author="A. Church",
title="A Set of Postulates for the Foundations of Logic",
journal="Annals of Mathematics",
volume=33,
pages="346--366",
number=1,
year=1932
}
@article{church-1933-spfl,
author="A. Church",
title="A Set of Postulates for the Foundations of Logic",
journal="Annals of Mathematics",
volume=34,
pages="839--864",
number=2,
year=1933
}
@phdthesis{girard-1972-ifecaos,
author="J.-Y. Girard",
title="Interpr{\'e}tation Fonctionelle et {\'E}limination des "
# "Coupures Dans l'Arithm{\'e}tique d'Ordre Sup{\'e}rieur",
school="Universit{\'e} Paris 7",
year=1972
}
@article{girard-1989-pt,
author="J.-Y. Girard and Y. Lafont and P. Taylor",
title="Proofs and Types",
journal="Tracks in Theoretical Computer Science",
year=1989
}
@inproceedings{reynolds-1974-ttts,
author="John. C. Reynolds",
title="Towards a Theory of Type Systems",
booktitle="Lecture Notes in Computer Science",
year=1974,
editor="Ehring et al.",
volume=19,
pages="408--425",
publisher="Springer-Verlag"
}
@article{boehm-1985-astlpta,
author="C. B{\"o}hm and A. Bernarducci",
title="Automatic Synthesis of Typed $\lambda$-Programs on Term "
# "Algebras",
journal="Theoretical Computer Science",
volume=39,
number="2--3",
pages="135--154",
month=aug,
year=1985
}
@phdthesis{paulin-1989-epscc,
author="C. Paulin-Mohring",
title="Extraction de Programmes Dans le Calcul des Constructions",
month=jan,
school="Universit{\'e} Paris 7",
year=1989,
url="http://www.lri.fr/~paulin/these.ps.gz"
}
@inproceedings{pfenning-1990-pmfps,
author="F. Pfenning and C. Paulin-Mohring",
booktitle="Proceedings of Mathematical Foundations of "
# "Programming Semantics",
note="technical report CMU-CS-89-209",
publisher="Springer-Verlag",
address = "Berlin",
series="Lecture Notes in Computer Science",
volume=442,
title="Inductively defined types in the Calculus of Constructions",
year=1990
}
@incollection{paulin-1993-iddcrp,
author= "Christine Paulin-Mohring",
title = "Inductive Definitions in the System {Coq}: Rules and Properties",
booktitle = "Proceedings of the 1st Int.\ Conf.\ on Typed Lambda Calculi "
# "and Applications, {TLCA}'93, Utrecht, The Netherlands, "
# "16--18 March 1993",
volume = 664,
publisher = "Springer-Verlag",
address = "Berlin",
editor = "M. Bezem and J. F. Groote",
pages = "328--345",
year = 1993,
url = "citeseer.nj.nec.com/paulin-mohring92inductive.html"
}
@InProceedings{shao-2002-tscb,
author = "Z. Shao and B. Saha and V. Trifonov and N. Papaspyrou",
title = "A Type System for Certified Binaries",
booktitle = "Proceedings of the 29th Annual Symposium on Principles of "
# "Programming Languages (POPL 2002)",
year = 2002,
pages = "217--232",
address = "Portland, OR, USA",
month = jan
}
@InProceedings{sellink-1994-vpaptt,
author = "M. P. A. Sellink",
title = "Verifying process algebra proofs in type theory",
booktitle = "Proceedings of the International Workshop on Semantics "
# " of Specipication Languages (SOSL 1993)",
year = 1994,
editor = "D. J. Andrews and J. F. Groote and C. A. Middelburg",
publisher = "Springer"
}
@inproceedings{necula-1997-pcc,
author="G. Necula",
title="Proof-Carrying Code",
booktitle="Proceedings of the 24th Annual Symposium on Principles of "
# "Programming Languages (POPL 1997)",
pages="106--119",
publisher="ACM Press",
address="New York",
year=1997,
month=jan
}
@inproceedings{necula-1996-skertc,
author="G. Necula and P. Lee",
title="Safe Kernel Extensions without Run-Time Checking",
booktitle="Proceedings of the 2nd USENIX Symposium on Operating "
# "System Design and Implementation",
year="1996",
publisher="USENIX Association",
pages="229--243"
}
@phdthesis{necula-1998-cp,
title = "Compiling with Proofs",
author = "G. Necula",
school = "Carnegie Mellon University",
year = 1998,
month=sep,
number = "CMU-CS-98-154"
}
@inproceedings{appel-2000-smtmipcc,
author="Andrew W. Appel and Amy P. Felty",
title="A Semantic Model of Types and Machine Instructions for "
# "Proof-Carrying Code",
booktitle="Proceedings of the 27th Annual Symposium on Principles of "
# "Programming Languages (POPL 2000)",
year=2000,
publisher = "ACM Press",
pages="243--253"
}
@InProceedings{appel-2001-fpcc,
author = "A. W. Appel",
title = "Foundational Proof-Carrying Code",
booktitle = "Proceedings of the 16th Annual IEEE Symposium on "
# "Logic in Computer Science",
pages = "247--258",
year = 2001,
month = jun
}
@inproceedings{harper-1995-cpita,
author="Robert Harper and Greg Morrisett",
title="Compiling Polymorphism Using Intensional Type Analysis",
booktitle="Proceedings of the 22nd Annual Symposium on Principles of "
# "Programming Languages (POPL 1995)",
publisher="ACM Press",
year="1995",
pages="130--141"
}
@inproceedings{morrisett-1998-sftal,
author="Greg Morrisett and David Walker and Karl Crary and Neal Glew",
title="From {S}ystem {F} to Typed Assembly Language",
booktitle="Proceedings of the 25th Annual Symposium on Principles of "
# "Programming Languages (POPL 1998)",
pages="85--97",
publisher="ACM Press",
year=1998,
month=jan
@misc{website:popularpython,
author = "Philip Guo",
title = "Python Is Now the Most Popular Introductory Teaching Language at Top U.s. Universities",
month = "July",
year = "2014",
note = "https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext"
}
@misc{website:pythongrowth,
author = "David Robinson",
title = "The Incredible Growth of Python",
month = "September",
year = "2017",
note = "https://stackoverflow.blog/2017/09/06/incredible-growth-python/"
}
@misc{website:whypython,
author = "David Robinson",
title = "Why is Python Growing So Quickly?",
month = "September",
year = "2017",
note = "https://stackoverflow.blog/2017/09/14/python-growing-quickly/"
}
@article{hansen2002open,
title={The Open Source approach—opportunities and limitations with respect to security and privacy},
author={Hansen, Marit and K{\"o}hntopp, Kristian and Pfitzmann, Andreas},
journal={Computers \& Security},
volume={21},
number={5},
pages={461--471},
year={2002},
publisher={Elsevier}
}
@article{maggiolo2012introducing,
title={Introducing CMS: A Contest Management System.},
author={Maggiolo, Stefano and Mascellani, Giovanni},
journal={Olympiads in Informatics},
volume={6},
year={2012}
}
@article{maggiolo2014cms,
title={CMS: a Growing Grading System.},
author={MAGGIOLO, Stefano and MASCELLANI, Giovanni and WEHRSTEDT, Luca},
journal={Olympiads in Informatics},
volume={8},
year={2014}
}
@article{leal2003mooshak,
title={Mooshak: A Web-based multi-site programming contest system},
author={Leal, Jos{\'e} Paulo and Silva, Fernando},
journal={Software: Practice and Experience},
volume={33},
number={6},
pages={567--581},
year={2003},
publisher={Wiley Online Library}
}
@inproceedings{leal2008using,
title={Using Mooshak as a competitive learning tool},
author={Leal, Jos{\'e} Paulo and Silva, Fernando},
booktitle={The 2008 Competitive Learning Symposium, ACM-ICPC World Finals},
year={2008}
}
@article{ribeiro2008early,
title={Early introduction of competitive programming},
author={Ribeiro, Pedro and Guerreiro, Pedro},
journal={Olympiads in Informatics},
volume={2},
pages={149--162},
year={2008}
}
......@@ -3,6 +3,7 @@
\usepackage{listings}
\usepackage[section]{placeins}
%%%
%%% The document
%%%
......@@ -23,7 +24,6 @@
\supervisor{Νικόλαος Παπασπύρου}
\supervisorpos{Αν. Καθηγητής Ε.Μ.Π.}
%%% TODO change middle names?
\committeeone{Νικόλαος Παπασπύρου}
\committeeonepos{Αν. Καθηγητής Ε.Μ.Π.}
\committeetwo{Αριστείδης Παγουρτζής}
......@@ -90,8 +90,8 @@
παραδειγμάτων στη γλώσσα με απόδειξη μερικής ορθότητας.
\begin{keywordsgr}
Συστήματα αυτόματης αξιολόγησης, CMS, Grader, PHP, Python, Ανάπτυξη Λογισμικού,
Ανοιχτός Κώδικας, Ελεύθερο λογισμικό.
Συστήματα αξιολόγησης, Συστήματα διαχείρισης διαγωνισμών, CMS, Grader, PHP,
Python, Ανάπτυξη Λογισμικού, Λογισμικό ανοιχτού κώδικας, Ελεύθερο λογισμικό.
\end{keywordsgr}
\end{abstractgr}
......@@ -143,8 +143,8 @@
As evidence of the practicality of our design, we provide a number of
examples in our language with full semi-correctness proofs.
\begin{keywordsen}
Programming languages, Programming with proofs, Secure programming
languages, Certified code.
Evaluation Systems, Contest management systems, CMS, Grader, PHP, Python,
Software development, Free and open source software.
\end{keywordsen}
\end{abstracten}
......@@ -183,16 +183,18 @@ languages, Certified code.
\section{Σκοπός}
Ο σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός
και η υλοποίηση νέων δυνατοτήτων σε ένα σύστημα αυτόματης αξιολόγησης
προγραμματιστικών ασκήσεων. Το σύστημα που τροποποιήθηκε, όπως θα περιγραφεί
παρακάτω, χρησιμοποιείται τόσο από το Εργαστήριο Τεχνολογίας Λογισμικού (ΤODO links edw??)
όσο και από την Ελληνική Εταιρεία Επιστημόνων και Επαγγελματιών Πληροφορικής
και Επικοινωνιών (ΕΠΥ) για τη διοργάνωση των Πανελλήνιων Διαγωνισμών Πληροφορικής.
Ο σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός και η υλοποίηση
νέων δυνατοτήτων σε ένα σύστημα αυτόματης αξιολόγησης προγραμματιστικών
ασκήσεων. Το σύστημα που τροποποιήθηκε, όπως θα περιγραφεί παρακάτω,
χρησιμοποιείται τόσο από το Εργαστήριο Τεχνολογίας
Λογισμικού\footnote{http://grader.softlab.ntua.gr} όσο και από την Ελληνική
Εταιρεία Επιστημόνων και Επαγγελματιών Πληροφορικής και Επικοινωνιών
(ΕΠΥ)\footnote{http://hellenico.gr/grader} για τη διοργάνωση των Πανελλήνιων
Διαγωνισμών Πληροφορικής.
\bigskip
Το σύστημα αυτόματης αξιολόγησης (grader) δέχεται τις υποβολές των
Το σύστημα αυτόματης αξιολόγησης (Grader) δέχεται τις υποβολές των
διαγωνιζομένων σε συγκεκριμένα προβλήματα που ανήκουν σε διαγωνισμούς,
ώστε να τις χαρακτηρίσει ενεργές ή όχι, αξιολογώντας
το αποτέλεσμα και την απόδοση τους σε συγκεκριμένα αρχεία ελέγχου.
......@@ -201,7 +203,7 @@ languages, Certified code.
\bigskip
Ο grader, στην πρότερη κατάσταση του, επέτρεπε μόνο τη δημιουργία
Ο Grader, στην πρότερη κατάσταση του, επέτρεπε μόνο τη δημιουργία
μεμονωμένων αρχείων ελέγχου και όχι συνδυαστικών ομάδων καθιστώντας
δύσκολη τη δημιουργία προβλημάτων με δυαδικά αποτελέσματα, π.χ. σωστό/λάθος.
Επιπροσθέτως, δεν υπήρχε η επιλογή για προσθήκη αρχείων ελέγχου αξιολόγησης
......@@ -209,11 +211,11 @@ languages, Certified code.
\bigskip
Η αρχική σχεδίαση του grader είχε σκοπό τη δημιουργία ενός συστήματος αυτόματης
Η αρχική σχεδίαση του Grader είχε σκοπό τη δημιουργία ενός συστήματος αυτόματης
αξιολόγησης για διαγωνισμούς πληροφορικής, για να χρησιμοποιηθεί κυρίως από την
ΕΠΥ. Ως αποτέλεσμα, κάθε πρόβλημα αντιστοιχίζεται σε έναν μόνο διαγωνισμό και τόσο
οι διαγωνιζόμενοι όσο και οι υποβολές τους συνδέονται με το πρόβλημα. Για τη χρήση
του grader σε εργασίες προγραμματισμού, θα μας ήταν προτιμότερο να υπάρχει
του Grader σε εργασίες προγραμματισμού, θα μας ήταν προτιμότερο να υπάρχει
διαχωρισμός προβλήματος και υποβολών ώστε τα προβλήματα να μπορούν να
επαναχρησιμοποιηθούν ευκολότερα.
......@@ -222,16 +224,12 @@ languages, Certified code.
Επιπλέον, κρίθηκε σημαντικό να προστεθεί η Python στις διαθέσιμες γλώσσες
υποβολής καθώς πρόκειται για μια από τις πλέον δημοφιλείς γλώσσες και
χρησιμοποιείται ως εισαγωγική γλώσσα προγραμματισμού σε σημαντικά ακαδημαϊκά
ιδρύματα, όπως είναι το MIT και το Stanford (TODO citation needed). Τέλος, ήταν
απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του grader, να
προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας
χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν απαρχαιωμένα
(TODO obsolete, pws na to pw) εργαλεία/βιβλιοθήκες για την επίτευξη καλύτερης
απόδοσης και ασφάλειας.
\bigskip
(TODO μηπως αλλη μια summary παραγραφο εδω;;)
ιδρύματα, όπως είναι το MIT και το Stanford \cite{website:popularpython}.
Τέλος, ήταν απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του Grader,
να προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας
χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν
απαρχαιωμένα, χωρίς ενεργή ανάπτυξη εργαλεία/βιβλιοθήκες για την επίτευξη
καλύτερης απόδοσης και ασφάλειας.
\newpage
......@@ -240,36 +238,34 @@ languages, Certified code.
Η εργασία ακολουθεί την παρακάτω δομή:
\begin{itemize}
\item Κεφάλαιο 2: Συστήματα Αυτόματης Αξιολόγησης \\
\item \textbf{Κεφάλαιο 2}: Συστήματα Αυτόματης Αξιολόγησης \\
Παρουσιάζουμε κάποια γνωστά συστήματα αυτόματης αξιολόγησης με παρόμοια
λειτουργία και σκοπό όπως ο grader. Γίνεται επίσης μια σύγκριση με τις
λειτουργία και σκοπό όπως ο Grader. Γίνεται επίσης μια σύγκριση με τις
δυνατότητες του παρόντος συστήματος.
\item Κεφάλαιο 3: Υπάρχον Σύστημα \\
Περιγράφεται η υπάρχουσα δομή και λειτουργία του grader, αναλύοντας τα
\item \textbf{Κεφάλαιο 3}: Περιγραφή Grader - Kewii \\
Περιγράφεται η υπάρχουσα δομή και λειτουργία του Grader, αναλύοντας τα
διαφορετικά μέρη του και τις σχέσεις μεταξύ τους.
\item Κεφάλαιο 4: Προσθήκη Ομάδων Αρχείων Ελέγχου \\
\item \textbf{Κεφάλαιο 4}: Προσθήκη Ομάδων Αρχείων Ελέγχου \\
Αναλύεται η σχεδιαστική λογική και η υλοποίηση της νέας δυνατότητας του
συστήματος, για ομαδοποίηση των αρχείων ελέγχου των προβλημάτων.
\item Κεφάλαιο 5: Σχεδίαση για ανεξαρτητοποίηση Προβλημάτων από Διαγωνισμούς \\
\item \textbf{Κεφάλαιο 5}: Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών \\
Περιγράφεται η υλοποίηση της συγκεκριμένης τροποποίησης για την βελτίωση της
λειτουργίας του grader στο πλαίσιο προγραμματιστικών ασκήσεων.
\item Κεφάλαιο 6: Λοιπές Προσθήκες \\
λειτουργίας του Grader στο πλαίσιο προγραμματιστικών ασκήσεων.
\item \textbf{Κεφάλαιο 6}: Λοιπές Προσθήκες \\
Στο συγκεκριμένο κεφάλαιο παρατίθενται βελτιώσεις και προσθήκες μικρότερου
μεγέθους, όπως είναι η προσθήκη της Python και η αλλαγή της επέκτασης
MySQL σε PDO.
TODO: change this
\item Κεφάλαιο 7: Συμπεράσματα \\
μεγέθους.
\item \textbf{Κεφάλαιο 7}: Συμπεράσματα \\
Στο τελευταίο κεφάλαιο παρουσιάζονται κάποιες παρατηρήσεις σχετικά με τη
διπλωματική και αναφέρονται ιδέες για περαιτέρω δυνατότητες και βελτιώσεις.
διπλωματική και αναφέρονται ιδέες για περαιτέρω ανάπτυξη του συστήματος.
\end{itemize}
\chapter{Συστήματα Αυτόματης Αξιολόγησης}
Ο Grader έχει σκοπό τη διοργάνωση προγραμματιστικών διαγωνισμών ή εργασιών
O Grader έχει σκοπό τη διοργάνωση προγραμματιστικών διαγωνισμών ή εργασιών
με αυτόματο τρόπο υποβολής, εκτέλεσης και αξιολόγησης των λύσεων. Το παρόν
σύστημα είναι κλειστού κώδικα, όμως θα είχε σημασία να μελετήσουμε συστήματα
με παρόμοιο σκοπό ώστε να δούμε ομοιότητες και διαφορές με το δικό μας.
με παρόμοια λειτουργία ώστε να δούμε ομοιότητες και διαφορές με το δικό μας.
\bigskip
......@@ -280,11 +276,10 @@ Grader. Επιπλέον, είναι πιθανό να παρέχουν καλύ
οποιοσδήποτε μπορεί να ελέγξει τον κώδικα για ευπάθειες. Φυσικά, το τελευταίο
ισχύει υπό την προϋπόθεση ότι υπάρχει πρωτοβουλία για έλεγχο της ασφάλειας
(audit), αφού η απλή δημοσιοποίηση του κώδικα μπορεί να δίνει την ψευδαίσθηση
%της ασφάλειας. (Hansen, M., Köhntopp, K., & Pfitzmann, A. (2002). The Open
Source approach – opportunities and limitations with respect to security and
privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκριμένα συστήματα έχει μεγάλη
σημασία γιατί θα μπορούσε οποιοδήποτε από αυτά να τον αντικαταστήσει χωρίς
μεγάλο κόστος (κυρίως αυτό της μετάβασης) σε περίπτωση που θεωρηθεί ανώτερο.
(όπως αναφέρεται στο \cite{hansen2002open}). Τέλος, η σύγκριση του Grader με τα
συγκεκριμένα συστήματα έχει μεγάλη σημασία γιατί θα μπορούσε οποιοδήποτε από
αυτά να τον αντικαταστήσει χωρίς μεγάλο κόστος (κυρίως αυτό της μετάβασης) σε
περίπτωση που θεωρηθεί ανώτερο.
\bigskip
......@@ -314,10 +309,8 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του
μεγάλου αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του
σε όλες σχεδόν τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως
στόχο τη δημιουργία ενός
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL107.pdf
συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού και υλικού, ανοιχτού,
επεκτάσιμου και εύχρηστου.
στόχο τη δημιουργία ενός συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού
και υλικού, ανοιχτού, επεκτάσιμου και εύχρηστου.
\bigskip
......@@ -365,11 +358,15 @@ Public License), η οποία επιτρέπει εμπορική χρήση,
\bigskip
% https://www.mii.lt/olympiads_in_informatics/files/volume8.pdf#page=125
Όλες οι παραπάνω λειτουργίες αλληλεπιδρούν μεταξύ τους με τον τρόπο που φαίνεται
στην εικόνα που ακουλουθεί.
στην εικόνα 2.1.
(TODO: εικόνα συννεφο)
%(TODO: Draw this myself)
\begin{figure}
\centering
\includegraphics[scale=0.4]{Figures/cmsarchitecture.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\end{figure}
\bigskip
......@@ -427,12 +424,34 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη
Ακολουθούν φωτογραφίες από τις διεπαφές του διαγωνισμού, του Admin και της σελίδας
των αποτελεσμάτων.
\bigskip
\begin{figure}
\centering
\includegraphics[scale=0.3]{Figures/cmscontestant.png}
\caption[Οθοόνη προβλήματος CMS]{Η οθόνη ενός προβλήματος, όπως τη βλέπει ένας
διαγωνιζόμενος. Διακρίνονται τα στοιχεία του προβλήματος και όλα τα
επισυναπτόμενα.}
\end{figure}
\section{Mooshak 2.0}
\begin{figure}
\centering
\includegraphics[scale=0.3]{Figures/cmsranking.png}
\caption[Οθόνη βαθμολογιών CMS]{Η οθόνη της βαθμολογίας, με τη συνολική κατάταξη
και ανά διαγωνιζόμενο σε όλα τα προβλήματα.}
\end{figure}
% https://www.dcc.fc.up.pt/~zp/papers/mooshak-eunis.pdf
% https://www.dcc.fc.up.pt/~zp/papers/mooshak-spe.pdf
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL020.pdf
\begin{figure}
\centering
\includegraphics[scale=0.3]{Figures/cmsadmin.png}
\caption[Οθόνη διαχείρισης προβλήματος]{Η οθόνη της διαχείρισης ενός διαγωνισμού.
Διακρίνονται συνολικά στατιστικά για τις υποβολές, η κατάσταση της ουράς και των
Workers.}
\end{figure}
\FloatBarrier
\section{Mooshak 2.0}
Το Mooshak 2.0 είναι κι αυτό ένα σύστημα διαχείρισης διαγωνισμών με αυτόματη
αξιολόγηση για τις υποβολές. Αποτελεί τη νεότερη υλοποίηση του Mooshak, με μεταφορά
......@@ -459,7 +478,12 @@ H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000
\bigskip
(TODO: φωτο αρχιτεκτονικής)
%(TODO: draw this)
\begin{figure}
\centering
\includegraphics[scale=0.4]{Figures/mooshakarchitecture.png}
\caption[Η αρχιτεκτονική του Mooshak]{Η αρχιτεκτονική του Mooshak με τρεις εξυπηρετητές}
\end{figure}
\bigskip
......@@ -506,6 +530,8 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό
(TODO: Φωτογραφίες)
\FloatBarrier
\section{CATS}
To CATS είναι το τρίτο σύστημα που θα αναλυθεί. Αφορά και αυτό τη διεξαγωγή και
......@@ -541,27 +567,29 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί.
\bigskip
Η εφαρμογή αξιολόγησης εμπεριέχει διεπαφή μέσω της γραμμής εντολών για τη γρήγορη
δημιουργία και αξιολόγηση προβλημάτων από τους διαχειριστές. Αυτή διατίθεται και
ανεξάρτητα από το υπόλοιπο πρόγραμμα προς αντικατάσταση αντίστοιχων διαδικτυακών
εργαλείων όπως είναι το Polygon (TODO: link). Η δημιουργία των προβλημάτων γίνεται
με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML περιγραφή και
τα απαραίτητα αρχεία ελέγχου.
Η εφαρμογή αξιολόγησης εμπεριέχει διεπαφή μέσω της γραμμής εντολών για τη
γρήγορη δημιουργία και αξιολόγηση προβλημάτων από τους διαχειριστές. Αυτή
διατίθεται και ανεξάρτητα από το υπόλοιπο πρόγραμμα προς αντικατάσταση
αντίστοιχων διαδικτυακών εργαλείων όπως είναι το Polygon
\footnote{https://polygon.codeforces.com/}. Η δημιουργία των προβλημάτων
γίνεται με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML
περιγραφή και τα απαραίτητα αρχεία ελέγχου.
(TODO: xml format)
\lstinputlisting[caption=Παράδειγμα xml]{Listings/catsexample.xml}
\bigskip
Οι γλώσσες προγραμματισμού που υποστηρίζονται είναι οι C, C++, delphi, VB, Java,
C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
- https://github.com/klenin/cats-main
C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
%TODO mipws valw kai ta site twn sistimatwn
%TODO paper rozhkov
\subsection{Εγκατάσταση και Χρήση}
Η εγκατάσταση του CATS είναι αρκετά εύκολη, καθώς έχει πολύ λίγες εξαρτήσεις
και διαθέτει έτοιμα scripts για το deployment και την αρχική παραμετροποίηση.
Αφού τρέξουν αυτά και ρυθμιστεί η σύνδεση με τη βάση, το σύστημα είναι έτοιμο
να χρησιμοποιηθεί.
να χρησιμοποιηθεί.
\bigskip
......@@ -573,12 +601,12 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
TODO: Φωτογραφίες
\chapter{Υπάρχον Σύστημα}
\chapter{Περιγραφή Grader - Kewii}
Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της
εφαρμογής μας που λειτουργεί ως δαίμονας στον εξυπηρετητή με σκοπό την
μεταγλώττιση και αξιολόγηση των υποβολών που λαμβάνει, και από τη διαδικτυακή
εφαρμογή grader, η οποία αναλαμβάνει την αλληλεπίδραση με χρήστες και
εφαρμογή Grader, η οποία αναλαμβάνει την αλληλεπίδραση με χρήστες και
διαχειριστές, την (έμμεση) επικοινωνία με τον Kewii και τη συνολική υλοποίηση
της λογικής του συστήματος όσον αφορά στον τρόπο λειτουργίας των επιμέρους
στοιχείων του και τον τρόπο αξιολόγησης.
......@@ -631,26 +659,32 @@ Kewii και Grader, δηλαδή backend και frontend.
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου.
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν
σε χρώματα (tags). Αυτά είναι τα παρακάτω:
σε χρώματα (tags) και παρουσιάζονται στον Πίνακα 3.1.
\begin{itemize}
\item \textit{Πορτοκαλί} TODO μηπως φωτο εδω; \\
\begin{table}
\begin{tabular}{ | l | p{10cm} |}
\hline
Τύπος εκτέλεσης & Λειτουργία \\ \hline
Πορτοκαλί \includegraphics[scale=0.8]{Figures/tag_orange.png} &
Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα
αλλά δεν είναι ορατό στους χρήστες.
\item \textit{Κίτρινο} \\
αλλά δεν είναι ορατό στους χρήστες. \\ \hline
Κίτρινο \includegraphics[scale=0.8]{Figures/tag_yellow.png} &
Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα
και είναι ορατό στους χρήστες.
\item \textit{Πράσινο} \\
Το αρχείο ελέγχου χρησιμοποιείται μόνο κατά την τελική αξιολόγηση.
\item \textit{Μωβ} \\
Το αρχείο ελέγχου δεν χρησιμοποιείται.
\end{itemize}
και είναι ορατό στους χρήστες. \\ \hline
Πράσινο \includegraphics[scale=0.8]{Figures/tag_green.png} &
Το αρχείο ελέγχου χρησιμοποιείται μόνο κατά την τελική αξιολόγηση. \\ \hline
Μωβ \includegraphics[scale=0.8]{Figures/tag_purple.png} &
Το αρχείο ελέγχου δεν χρησιμοποιείται. \\ \hline
\end{tabular}
\caption{Τύποι εκτέλεσης αρχείων ελέγχου}
\end{table}
\bigskip
Σε επόμενο κεφάλαιο θα δημιουργηθεί άλλος ένας τύπος εκτέλεσης. Επιπλέον, θα
αλλάξει ριζικά ο τρόπος αξιολόγησης καθώς θα εισαχθεί η έννοια των ομάδων
αρχείων ελέγχου και τα αρχεία θα έχουν νόημα μόνο μέσα σε αυτές.
\subsection{Χρήστες/Διαγωνιζόμενοι}
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με
......@@ -689,18 +723,18 @@ Kewii και Grader, δηλαδή backend και frontend.
Ο Kewii είναι μια εφαρμογή γραμμένη σε γλώσσα C και τρέχει στον εξυπηρετητή
ελέγχοντας διαρκώς για νέες υποβολές. Για κάθε νέα υποβολή που εντοπίζει,
βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον grader μαζί με συγκεκριμένα
βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον Grader μαζί με συγκεκριμένα
μεταδεδομένα, μεταγλωττίζει τον κώδικα δημιουργώντας το εκτελέσιμο αρχείο και το
εκτελεί χρησιμοποιώντας τα απαραίτητα μέτρα ασφαλείας ώστε να συγκρίνει την έξοδο
για κάθε αρχείο ελέγχου με την σωστή. Μόλις τελειώσει η εκτέλεση ή ξεπεραστούν τα
όρια της, ενημερώνει τη βάση δεδομένων, με χρήση ενός PHP script, με την έκβαση της
εκτέλεσης και ειδοποιεί το grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο
εκτέλεσης και ειδοποιεί το Grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο
(callback) ώστε αυτός να αναλάβει την ανάλυση των αποτελεσμάτων.
\bigskip
Κάθε υποβολή έχει έναν μοναδικό κωδικό, ο οποίος χρησιμοποιείται για την
αλληλεπίδραση με το grader κατά το callback, όπως και έναν αύξοντα αριθμό που
αλληλεπίδραση με το Grader κατά το callback, όπως και έναν αύξοντα αριθμό που
χρησιμεύει στον Kewii για την διατήρηση της κατάστασης των εκτελέσεων. Τα
μεταδεδομένα που εμπεριέχονται σε κάθε υποβολή και είναι απαραίτητα για την
αξιολόγηση της είναι τα παρακάτω:
......@@ -847,7 +881,7 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου και blue tag}
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου}
Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η
τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων
......@@ -1358,15 +1392,15 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
Δεδομένης της δημοτικότητας της Python και της ευκολίας χρήσης της, είναι μια
απαραίτητη προσθήκη στο Grader που πιθανότατα θα εκτιμηθεί από διαγωνιζόμενους
μαθητές και φοιτητές. Η Python δε λείπει από κανένα (TODO: όντως;) από τα
συστήματα αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη
επιλογή στα κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά μαθήματα
των τμημάτων επιστήμης των υπολογιστών. (TODO: https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext)
Είναι μια από τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με στοιχεία του
Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/)
χάρη, κυρίως, στην καθιέρωση της σε πολλά προγράμματα προπτυχιακών σπουδών και
στην ανάπτυξη των τομέων της ανάλυσης δεδομένων και μηχανικής μάθησης, στους
οποίους κυριαρχεί ως εργαλείο (https://stackoverflow.blog/2017/09/14/python-growing-quickly/).
μαθητές και φοιτητές. Η Python δε λείπει από κανένα από τα συστήματα
αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη επιλογή στα
κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά μαθήματα των
τμημάτων επιστήμης των υπολογιστών \cite{website:popularpython}. Είναι μια από
τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με στοιχεία του Stack
Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέρωση της σε πολλά
προγράμματα προπτυχιακών σπουδών και στην ανάπτυξη των τομέων της ανάλυσης
δεδομένων και μηχανικής μάθησης, στους οποίους κυριαρχεί ως εργαλείο
\cite{website:whypython}.
\bigskip
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment