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, @misc{website:popularpython,
author="A. Church", author = "Philip Guo",
title="A Set of Postulates for the Foundations of Logic", title = "Python Is Now the Most Popular Introductory Teaching Language at Top U.s. Universities",
journal="Annals of Mathematics", month = "July",
volume=33, year = "2014",
pages="346--366", note = "https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext"
number=1, }
year=1932
} @misc{website:pythongrowth,
author = "David Robinson",
@article{church-1933-spfl, title = "The Incredible Growth of Python",
author="A. Church", month = "September",
title="A Set of Postulates for the Foundations of Logic", year = "2017",
journal="Annals of Mathematics", note = "https://stackoverflow.blog/2017/09/06/incredible-growth-python/"
volume=34, }
pages="839--864",
number=2, @misc{website:whypython,
year=1933 author = "David Robinson",
} title = "Why is Python Growing So Quickly?",
month = "September",
@phdthesis{girard-1972-ifecaos, year = "2017",
author="J.-Y. Girard", note = "https://stackoverflow.blog/2017/09/14/python-growing-quickly/"
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", @article{hansen2002open,
year=1972 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},
@article{girard-1989-pt, volume={21},
author="J.-Y. Girard and Y. Lafont and P. Taylor", number={5},
title="Proofs and Types", pages={461--471},
journal="Tracks in Theoretical Computer Science", year={2002},
year=1989 publisher={Elsevier}
} }
@inproceedings{reynolds-1974-ttts, @article{maggiolo2012introducing,
author="John. C. Reynolds", title={Introducing CMS: A Contest Management System.},
title="Towards a Theory of Type Systems", author={Maggiolo, Stefano and Mascellani, Giovanni},
booktitle="Lecture Notes in Computer Science", journal={Olympiads in Informatics},
year=1974, volume={6},
editor="Ehring et al.", year={2012}
volume=19, }
pages="408--425",
publisher="Springer-Verlag" @article{maggiolo2014cms,
} title={CMS: a Growing Grading System.},
author={MAGGIOLO, Stefano and MASCELLANI, Giovanni and WEHRSTEDT, Luca},
@article{boehm-1985-astlpta, journal={Olympiads in Informatics},
author="C. B{\"o}hm and A. Bernarducci", volume={8},
title="Automatic Synthesis of Typed $\lambda$-Programs on Term " year={2014}
# "Algebras", }
journal="Theoretical Computer Science",
volume=39, @article{leal2003mooshak,
number="2--3", title={Mooshak: A Web-based multi-site programming contest system},
pages="135--154", author={Leal, Jos{\'e} Paulo and Silva, Fernando},
month=aug, journal={Software: Practice and Experience},
year=1985 volume={33},
} number={6},
pages={567--581},
@phdthesis{paulin-1989-epscc, year={2003},
author="C. Paulin-Mohring", publisher={Wiley Online Library}
title="Extraction de Programmes Dans le Calcul des Constructions", }
month=jan,
school="Universit{\'e} Paris 7", @inproceedings{leal2008using,
year=1989, title={Using Mooshak as a competitive learning tool},
url="http://www.lri.fr/~paulin/these.ps.gz" author={Leal, Jos{\'e} Paulo and Silva, Fernando},
} booktitle={The 2008 Competitive Learning Symposium, ACM-ICPC World Finals},
year={2008}
@inproceedings{pfenning-1990-pmfps, }
author="F. Pfenning and C. Paulin-Mohring",
booktitle="Proceedings of Mathematical Foundations of " @article{ribeiro2008early,
# "Programming Semantics", title={Early introduction of competitive programming},
note="technical report CMU-CS-89-209", author={Ribeiro, Pedro and Guerreiro, Pedro},
publisher="Springer-Verlag", journal={Olympiads in Informatics},
address = "Berlin", volume={2},
series="Lecture Notes in Computer Science", pages={149--162},
volume=442, year={2008}
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
} }
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
\usepackage{listings} \usepackage{listings}
\usepackage[section]{placeins}
%%% %%%
%%% The document %%% The document
%%% %%%
...@@ -23,7 +24,6 @@ ...@@ -23,7 +24,6 @@
\supervisor{Νικόλαος Παπασπύρου} \supervisor{Νικόλαος Παπασπύρου}
\supervisorpos{Αν. Καθηγητής Ε.Μ.Π.} \supervisorpos{Αν. Καθηγητής Ε.Μ.Π.}
%%% TODO change middle names?
\committeeone{Νικόλαος Παπασπύρου} \committeeone{Νικόλαος Παπασπύρου}
\committeeonepos{Αν. Καθηγητής Ε.Μ.Π.} \committeeonepos{Αν. Καθηγητής Ε.Μ.Π.}
\committeetwo{Αριστείδης Παγουρτζής} \committeetwo{Αριστείδης Παγουρτζής}
...@@ -90,8 +90,8 @@ ...@@ -90,8 +90,8 @@
παραδειγμάτων στη γλώσσα με απόδειξη μερικής ορθότητας. παραδειγμάτων στη γλώσσα με απόδειξη μερικής ορθότητας.
\begin{keywordsgr} \begin{keywordsgr}
Συστήματα αυτόματης αξιολόγησης, CMS, Grader, PHP, Python, Ανάπτυξη Λογισμικού, Συστήματα αξιολόγησης, Συστήματα διαχείρισης διαγωνισμών, CMS, Grader, PHP,
Ανοιχτός Κώδικας, Ελεύθερο λογισμικό. Python, Ανάπτυξη Λογισμικού, Λογισμικό ανοιχτού κώδικας, Ελεύθερο λογισμικό.
\end{keywordsgr} \end{keywordsgr}
\end{abstractgr} \end{abstractgr}
...@@ -143,8 +143,8 @@ ...@@ -143,8 +143,8 @@
As evidence of the practicality of our design, we provide a number of As evidence of the practicality of our design, we provide a number of
examples in our language with full semi-correctness proofs. examples in our language with full semi-correctness proofs.
\begin{keywordsen} \begin{keywordsen}
Programming languages, Programming with proofs, Secure programming Evaluation Systems, Contest management systems, CMS, Grader, PHP, Python,
languages, Certified code. Software development, Free and open source software.
\end{keywordsen} \end{keywordsen}
\end{abstracten} \end{abstracten}
...@@ -183,16 +183,18 @@ languages, Certified code. ...@@ -183,16 +183,18 @@ languages, Certified code.
\section{Σκοπός} \section{Σκοπός}
Ο σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός Ο σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός και η υλοποίηση
και η υλοποίηση νέων δυνατοτήτων σε ένα σύστημα αυτόματης αξιολόγησης νέων δυνατοτήτων σε ένα σύστημα αυτόματης αξιολόγησης προγραμματιστικών
προγραμματιστικών ασκήσεων. Το σύστημα που τροποποιήθηκε, όπως θα περιγραφεί ασκήσεων. Το σύστημα που τροποποιήθηκε, όπως θα περιγραφεί παρακάτω,
παρακάτω, χρησιμοποιείται τόσο από το Εργαστήριο Τεχνολογίας Λογισμικού (ΤODO links edw??) χρησιμοποιείται τόσο από το Εργαστήριο Τεχνολογίας
όσο και από την Ελληνική Εταιρεία Επιστημόνων και Επαγγελματιών Πληροφορικής Λογισμικού\footnote{http://grader.softlab.ntua.gr} όσο και από την Ελληνική
και Επικοινωνιών (ΕΠΥ) για τη διοργάνωση των Πανελλήνιων Διαγωνισμών Πληροφορικής. Εταιρεία Επιστημόνων και Επαγγελματιών Πληροφορικής και Επικοινωνιών
(ΕΠΥ)\footnote{http://hellenico.gr/grader} για τη διοργάνωση των Πανελλήνιων
Διαγωνισμών Πληροφορικής.
\bigskip \bigskip
Το σύστημα αυτόματης αξιολόγησης (grader) δέχεται τις υποβολές των Το σύστημα αυτόματης αξιολόγησης (Grader) δέχεται τις υποβολές των
διαγωνιζομένων σε συγκεκριμένα προβλήματα που ανήκουν σε διαγωνισμούς, διαγωνιζομένων σε συγκεκριμένα προβλήματα που ανήκουν σε διαγωνισμούς,
ώστε να τις χαρακτηρίσει ενεργές ή όχι, αξιολογώντας ώστε να τις χαρακτηρίσει ενεργές ή όχι, αξιολογώντας
το αποτέλεσμα και την απόδοση τους σε συγκεκριμένα αρχεία ελέγχου. το αποτέλεσμα και την απόδοση τους σε συγκεκριμένα αρχεία ελέγχου.
...@@ -201,7 +203,7 @@ languages, Certified code. ...@@ -201,7 +203,7 @@ languages, Certified code.
\bigskip \bigskip
Ο grader, στην πρότερη κατάσταση του, επέτρεπε μόνο τη δημιουργία Ο Grader, στην πρότερη κατάσταση του, επέτρεπε μόνο τη δημιουργία
μεμονωμένων αρχείων ελέγχου και όχι συνδυαστικών ομάδων καθιστώντας μεμονωμένων αρχείων ελέγχου και όχι συνδυαστικών ομάδων καθιστώντας
δύσκολη τη δημιουργία προβλημάτων με δυαδικά αποτελέσματα, π.χ. σωστό/λάθος. δύσκολη τη δημιουργία προβλημάτων με δυαδικά αποτελέσματα, π.χ. σωστό/λάθος.
Επιπροσθέτως, δεν υπήρχε η επιλογή για προσθήκη αρχείων ελέγχου αξιολόγησης Επιπροσθέτως, δεν υπήρχε η επιλογή για προσθήκη αρχείων ελέγχου αξιολόγησης
...@@ -209,11 +211,11 @@ languages, Certified code. ...@@ -209,11 +211,11 @@ languages, Certified code.
\bigskip \bigskip
Η αρχική σχεδίαση του grader είχε σκοπό τη δημιουργία ενός συστήματος αυτόματης Η αρχική σχεδίαση του Grader είχε σκοπό τη δημιουργία ενός συστήματος αυτόματης
αξιολόγησης για διαγωνισμούς πληροφορικής, για να χρησιμοποιηθεί κυρίως από την αξιολόγησης για διαγωνισμούς πληροφορικής, για να χρησιμοποιηθεί κυρίως από την
ΕΠΥ. Ως αποτέλεσμα, κάθε πρόβλημα αντιστοιχίζεται σε έναν μόνο διαγωνισμό και τόσο ΕΠΥ. Ως αποτέλεσμα, κάθε πρόβλημα αντιστοιχίζεται σε έναν μόνο διαγωνισμό και τόσο
οι διαγωνιζόμενοι όσο και οι υποβολές τους συνδέονται με το πρόβλημα. Για τη χρήση οι διαγωνιζόμενοι όσο και οι υποβολές τους συνδέονται με το πρόβλημα. Για τη χρήση
του grader σε εργασίες προγραμματισμού, θα μας ήταν προτιμότερο να υπάρχει του Grader σε εργασίες προγραμματισμού, θα μας ήταν προτιμότερο να υπάρχει
διαχωρισμός προβλήματος και υποβολών ώστε τα προβλήματα να μπορούν να διαχωρισμός προβλήματος και υποβολών ώστε τα προβλήματα να μπορούν να
επαναχρησιμοποιηθούν ευκολότερα. επαναχρησιμοποιηθούν ευκολότερα.
...@@ -222,16 +224,12 @@ languages, Certified code. ...@@ -222,16 +224,12 @@ languages, Certified code.
Επιπλέον, κρίθηκε σημαντικό να προστεθεί η Python στις διαθέσιμες γλώσσες Επιπλέον, κρίθηκε σημαντικό να προστεθεί η Python στις διαθέσιμες γλώσσες
υποβολής καθώς πρόκειται για μια από τις πλέον δημοφιλείς γλώσσες και υποβολής καθώς πρόκειται για μια από τις πλέον δημοφιλείς γλώσσες και
χρησιμοποιείται ως εισαγωγική γλώσσα προγραμματισμού σε σημαντικά ακαδημαϊκά χρησιμοποιείται ως εισαγωγική γλώσσα προγραμματισμού σε σημαντικά ακαδημαϊκά
ιδρύματα, όπως είναι το MIT και το Stanford (TODO citation needed). Τέλος, ήταν ιδρύματα, όπως είναι το MIT και το Stanford \cite{website:popularpython}.
απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του grader, να Τέλος, ήταν απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του Grader,
προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας να προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας
χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν απαρχαιωμένα χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν
(TODO obsolete, pws na to pw) εργαλεία/βιβλιοθήκες για την επίτευξη καλύτερης απαρχαιωμένα, χωρίς ενεργή ανάπτυξη εργαλεία/βιβλιοθήκες για την επίτευξη
απόδοσης και ασφάλειας. καλύτερης απόδοσης και ασφάλειας.
\bigskip
(TODO μηπως αλλη μια summary παραγραφο εδω;;)
\newpage \newpage
...@@ -240,36 +238,34 @@ languages, Certified code. ...@@ -240,36 +238,34 @@ languages, Certified code.
Η εργασία ακολουθεί την παρακάτω δομή: Η εργασία ακολουθεί την παρακάτω δομή:
\begin{itemize} \begin{itemize}
\item Κεφάλαιο 2: Συστήματα Αυτόματης Αξιολόγησης \\ \item \textbf{Κεφάλαιο 2}: Συστήματα Αυτόματης Αξιολόγησης \\
Παρουσιάζουμε κάποια γνωστά συστήματα αυτόματης αξιολόγησης με παρόμοια Παρουσιάζουμε κάποια γνωστά συστήματα αυτόματης αξιολόγησης με παρόμοια
λειτουργία και σκοπό όπως ο grader. Γίνεται επίσης μια σύγκριση με τις λειτουργία και σκοπό όπως ο Grader. Γίνεται επίσης μια σύγκριση με τις
δυνατότητες του παρόντος συστήματος. δυνατότητες του παρόντος συστήματος.
\item Κεφάλαιο 3: Υπάρχον Σύστημα \\ \item \textbf{Κεφάλαιο 3}: Περιγραφή Grader - Kewii \\
Περιγράφεται η υπάρχουσα δομή και λειτουργία του grader, αναλύοντας τα Περιγράφεται η υπάρχουσα δομή και λειτουργία του Grader, αναλύοντας τα
διαφορετικά μέρη του και τις σχέσεις μεταξύ τους. διαφορετικά μέρη του και τις σχέσεις μεταξύ τους.
\item Κεφάλαιο 4: Προσθήκη Ομάδων Αρχείων Ελέγχου \\ \item \textbf{Κεφάλαιο 4}: Προσθήκη Ομάδων Αρχείων Ελέγχου \\
Αναλύεται η σχεδιαστική λογική και η υλοποίηση της νέας δυνατότητας του Αναλύεται η σχεδιαστική λογική και η υλοποίηση της νέας δυνατότητας του
συστήματος, για ομαδοποίηση των αρχείων ελέγχου των προβλημάτων. συστήματος, για ομαδοποίηση των αρχείων ελέγχου των προβλημάτων.
\item Κεφάλαιο 5: Σχεδίαση για ανεξαρτητοποίηση Προβλημάτων από Διαγωνισμούς \\ \item \textbf{Κεφάλαιο 5}: Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών \\
Περιγράφεται η υλοποίηση της συγκεκριμένης τροποποίησης για την βελτίωση της Περιγράφεται η υλοποίηση της συγκεκριμένης τροποποίησης για την βελτίωση της
λειτουργίας του grader στο πλαίσιο προγραμματιστικών ασκήσεων. λειτουργίας του Grader στο πλαίσιο προγραμματιστικών ασκήσεων.
\item Κεφάλαιο 6: Λοιπές Προσθήκες \\ \item \textbf{Κεφάλαιο 6}: Λοιπές Προσθήκες \\
Στο συγκεκριμένο κεφάλαιο παρατίθενται βελτιώσεις και προσθήκες μικρότερου Στο συγκεκριμένο κεφάλαιο παρατίθενται βελτιώσεις και προσθήκες μικρότερου
μεγέθους, όπως είναι η προσθήκη της Python και η αλλαγή της επέκτασης μεγέθους.
MySQL σε PDO. \item \textbf{Κεφάλαιο 7}: Συμπεράσματα \\
TODO: change this
\item Κεφάλαιο 7: Συμπεράσματα \\
Στο τελευταίο κεφάλαιο παρουσιάζονται κάποιες παρατηρήσεις σχετικά με τη Στο τελευταίο κεφάλαιο παρουσιάζονται κάποιες παρατηρήσεις σχετικά με τη
διπλωματική και αναφέρονται ιδέες για περαιτέρω δυνατότητες και βελτιώσεις. διπλωματική και αναφέρονται ιδέες για περαιτέρω ανάπτυξη του συστήματος.
\end{itemize} \end{itemize}
\chapter{Συστήματα Αυτόματης Αξιολόγησης} \chapter{Συστήματα Αυτόματης Αξιολόγησης}
Ο Grader έχει σκοπό τη διοργάνωση προγραμματιστικών διαγωνισμών ή εργασιών O Grader έχει σκοπό τη διοργάνωση προγραμματιστικών διαγωνισμών ή εργασιών
με αυτόματο τρόπο υποβολής, εκτέλεσης και αξιολόγησης των λύσεων. Το παρόν με αυτόματο τρόπο υποβολής, εκτέλεσης και αξιολόγησης των λύσεων. Το παρόν
σύστημα είναι κλειστού κώδικα, όμως θα είχε σημασία να μελετήσουμε συστήματα σύστημα είναι κλειστού κώδικα, όμως θα είχε σημασία να μελετήσουμε συστήματα
με παρόμοιο σκοπό ώστε να δούμε ομοιότητες και διαφορές με το δικό μας. με παρόμοια λειτουργία ώστε να δούμε ομοιότητες και διαφορές με το δικό μας.
\bigskip \bigskip
...@@ -280,11 +276,10 @@ Grader. Επιπλέον, είναι πιθανό να παρέχουν καλύ ...@@ -280,11 +276,10 @@ Grader. Επιπλέον, είναι πιθανό να παρέχουν καλύ
οποιοσδήποτε μπορεί να ελέγξει τον κώδικα για ευπάθειες. Φυσικά, το τελευταίο οποιοσδήποτε μπορεί να ελέγξει τον κώδικα για ευπάθειες. Φυσικά, το τελευταίο
ισχύει υπό την προϋπόθεση ότι υπάρχει πρωτοβουλία για έλεγχο της ασφάλειας ισχύει υπό την προϋπόθεση ότι υπάρχει πρωτοβουλία για έλεγχο της ασφάλειας
(audit), αφού η απλή δημοσιοποίηση του κώδικα μπορεί να δίνει την ψευδαίσθηση (audit), αφού η απλή δημοσιοποίηση του κώδικα μπορεί να δίνει την ψευδαίσθηση
%της ασφάλειας. (Hansen, M., Köhntopp, K., & Pfitzmann, A. (2002). The Open (όπως αναφέρεται στο \cite{hansen2002open}). Τέλος, η σύγκριση του Grader με τα
Source approach – opportunities and limitations with respect to security and συγκεκριμένα συστήματα έχει μεγάλη σημασία γιατί θα μπορούσε οποιοδήποτε από
privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκριμένα συστήματα έχει μεγάλη αυτά να τον αντικαταστήσει χωρίς μεγάλο κόστος (κυρίως αυτό της μετάβασης) σε
σημασία γιατί θα μπορούσε οποιοδήποτε από αυτά να τον αντικαταστήσει χωρίς περίπτωση που θεωρηθεί ανώτερο.
μεγάλο κόστος (κυρίως αυτό της μετάβασης) σε περίπτωση που θεωρηθεί ανώτερο.
\bigskip \bigskip
...@@ -314,10 +309,8 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ ...@@ -314,10 +309,8 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του
μεγάλου αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του μεγάλου αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του
σε όλες σχεδόν τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως σε όλες σχεδόν τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως
στόχο τη δημιουργία ενός στόχο τη δημιουργία ενός συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL107.pdf και υλικού, ανοιχτού, επεκτάσιμου και εύχρηστου.
συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού και υλικού, ανοιχτού,
επεκτάσιμου και εύχρηστου.
\bigskip \bigskip
...@@ -365,11 +358,15 @@ Public License), η οποία επιτρέπει εμπορική χρήση, ...@@ -365,11 +358,15 @@ Public License), η οποία επιτρέπει εμπορική χρήση,
\bigskip \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 \bigskip
...@@ -427,12 +424,34 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη ...@@ -427,12 +424,34 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη
Ακολουθούν φωτογραφίες από τις διεπαφές του διαγωνισμού, του Admin και της σελίδας Ακολουθούν φωτογραφίες από τις διεπαφές του διαγωνισμού, του 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 \begin{figure}
% https://www.dcc.fc.up.pt/~zp/papers/mooshak-spe.pdf \centering
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL020.pdf \includegraphics[scale=0.3]{Figures/cmsadmin.png}
\caption[Οθόνη διαχείρισης προβλήματος]{Η οθόνη της διαχείρισης ενός διαγωνισμού.
Διακρίνονται συνολικά στατιστικά για τις υποβολές, η κατάσταση της ουράς και των
Workers.}
\end{figure}
\FloatBarrier
\section{Mooshak 2.0}
Το Mooshak 2.0 είναι κι αυτό ένα σύστημα διαχείρισης διαγωνισμών με αυτόματη Το Mooshak 2.0 είναι κι αυτό ένα σύστημα διαχείρισης διαγωνισμών με αυτόματη
αξιολόγηση για τις υποβολές. Αποτελεί τη νεότερη υλοποίηση του Mooshak, με μεταφορά αξιολόγηση για τις υποβολές. Αποτελεί τη νεότερη υλοποίηση του Mooshak, με μεταφορά
...@@ -459,7 +478,12 @@ H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000 ...@@ -459,7 +478,12 @@ H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000
\bigskip \bigskip
(TODO: φωτο αρχιτεκτονικής) %(TODO: draw this)
\begin{figure}
\centering
\includegraphics[scale=0.4]{Figures/mooshakarchitecture.png}
\caption[Η αρχιτεκτονική του Mooshak]{Η αρχιτεκτονική του Mooshak με τρεις εξυπηρετητές}
\end{figure}
\bigskip \bigskip
...@@ -506,6 +530,8 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό ...@@ -506,6 +530,8 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό
(TODO: Φωτογραφίες) (TODO: Φωτογραφίες)
\FloatBarrier
\section{CATS} \section{CATS}
To CATS είναι το τρίτο σύστημα που θα αναλυθεί. Αφορά και αυτό τη διεξαγωγή και To CATS είναι το τρίτο σύστημα που θα αναλυθεί. Αφορά και αυτό τη διεξαγωγή και
...@@ -541,27 +567,29 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί. ...@@ -541,27 +567,29 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί.
\bigskip \bigskip
Η εφαρμογή αξιολόγησης εμπεριέχει διεπαφή μέσω της γραμμής εντολών για τη γρήγορη Η εφαρμογή αξιολόγησης εμπεριέχει διεπαφή μέσω της γραμμής εντολών για τη
δημιουργία και αξιολόγηση προβλημάτων από τους διαχειριστές. Αυτή διατίθεται και γρήγορη δημιουργία και αξιολόγηση προβλημάτων από τους διαχειριστές. Αυτή
ανεξάρτητα από το υπόλοιπο πρόγραμμα προς αντικατάσταση αντίστοιχων διαδικτυακών διατίθεται και ανεξάρτητα από το υπόλοιπο πρόγραμμα προς αντικατάσταση
εργαλείων όπως είναι το Polygon (TODO: link). Η δημιουργία των προβλημάτων γίνεται αντίστοιχων διαδικτυακών εργαλείων όπως είναι το Polygon
με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML περιγραφή και \footnote{https://polygon.codeforces.com/}. Η δημιουργία των προβλημάτων
τα απαραίτητα αρχεία ελέγχου. γίνεται με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML
περιγραφή και τα απαραίτητα αρχεία ελέγχου.
(TODO: xml format) \lstinputlisting[caption=Παράδειγμα xml]{Listings/catsexample.xml}
\bigskip \bigskip
Οι γλώσσες προγραμματισμού που υποστηρίζονται είναι οι C, C++, delphi, VB, Java, Οι γλώσσες προγραμματισμού που υποστηρίζονται είναι οι C, C++, delphi, VB, Java,
C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL. C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
- https://github.com/klenin/cats-main
%TODO mipws valw kai ta site twn sistimatwn
%TODO paper rozhkov
\subsection{Εγκατάσταση και Χρήση} \subsection{Εγκατάσταση και Χρήση}
Η εγκατάσταση του CATS είναι αρκετά εύκολη, καθώς έχει πολύ λίγες εξαρτήσεις Η εγκατάσταση του CATS είναι αρκετά εύκολη, καθώς έχει πολύ λίγες εξαρτήσεις
και διαθέτει έτοιμα scripts για το deployment και την αρχική παραμετροποίηση. και διαθέτει έτοιμα scripts για το deployment και την αρχική παραμετροποίηση.
Αφού τρέξουν αυτά και ρυθμιστεί η σύνδεση με τη βάση, το σύστημα είναι έτοιμο Αφού τρέξουν αυτά και ρυθμιστεί η σύνδεση με τη βάση, το σύστημα είναι έτοιμο
να χρησιμοποιηθεί. να χρησιμοποιηθεί.
\bigskip \bigskip
...@@ -573,12 +601,12 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL. ...@@ -573,12 +601,12 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
TODO: Φωτογραφίες TODO: Φωτογραφίες
\chapter{Υπάρχον Σύστημα} \chapter{Περιγραφή Grader - Kewii}
Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της
εφαρμογής μας που λειτουργεί ως δαίμονας στον εξυπηρετητή με σκοπό την εφαρμογής μας που λειτουργεί ως δαίμονας στον εξυπηρετητή με σκοπό την
μεταγλώττιση και αξιολόγηση των υποβολών που λαμβάνει, και από τη διαδικτυακή μεταγλώττιση και αξιολόγηση των υποβολών που λαμβάνει, και από τη διαδικτυακή
εφαρμογή grader, η οποία αναλαμβάνει την αλληλεπίδραση με χρήστες και εφαρμογή Grader, η οποία αναλαμβάνει την αλληλεπίδραση με χρήστες και
διαχειριστές, την (έμμεση) επικοινωνία με τον Kewii και τη συνολική υλοποίηση διαχειριστές, την (έμμεση) επικοινωνία με τον Kewii και τη συνολική υλοποίηση
της λογικής του συστήματος όσον αφορά στον τρόπο λειτουργίας των επιμέρους της λογικής του συστήματος όσον αφορά στον τρόπο λειτουργίας των επιμέρους
στοιχείων του και τον τρόπο αξιολόγησης. στοιχείων του και τον τρόπο αξιολόγησης.
...@@ -631,26 +659,32 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -631,26 +659,32 @@ Kewii και Grader, δηλαδή backend και frontend.
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου. που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου.
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν
σε χρώματα (tags). Αυτά είναι τα παρακάτω: σε χρώματα (tags) και παρουσιάζονται στον Πίνακα 3.1.
\begin{itemize} \begin{table}
\item \textit{Πορτοκαλί} TODO μηπως φωτο εδω; \\ \begin{tabular}{ | l | p{10cm} |}
\hline
Τύπος εκτέλεσης & Λειτουργία \\ \hline
Πορτοκαλί \includegraphics[scale=0.8]{Figures/tag_orange.png} &
Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα
αλλά δεν είναι ορατό στους χρήστες. αλλά δεν είναι ορατό στους χρήστες. \\ \hline
\item \textit{Κίτρινο} \\ Κίτρινο \includegraphics[scale=0.8]{Figures/tag_yellow.png} &
Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα Το αρχείο ελέγχου χρησιμοποιείται σε κάθε υποβολή για το συγκεκριμένο πρόβλημα
και είναι ορατό στους χρήστες. και είναι ορατό στους χρήστες. \\ \hline
\item \textit{Πράσινο} \\ Πράσινο \includegraphics[scale=0.8]{Figures/tag_green.png} &
Το αρχείο ελέγχου χρησιμοποιείται μόνο κατά την τελική αξιολόγηση. Το αρχείο ελέγχου χρησιμοποιείται μόνο κατά την τελική αξιολόγηση. \\ \hline
\item \textit{Μωβ} \\ Μωβ \includegraphics[scale=0.8]{Figures/tag_purple.png} &
Το αρχείο ελέγχου δεν χρησιμοποιείται. Το αρχείο ελέγχου δεν χρησιμοποιείται. \\ \hline
\end{itemize} \end{tabular}
\caption{Τύποι εκτέλεσης αρχείων ελέγχου}
\end{table}
\bigskip
Σε επόμενο κεφάλαιο θα δημιουργηθεί άλλος ένας τύπος εκτέλεσης. Επιπλέον, θα Σε επόμενο κεφάλαιο θα δημιουργηθεί άλλος ένας τύπος εκτέλεσης. Επιπλέον, θα
αλλάξει ριζικά ο τρόπος αξιολόγησης καθώς θα εισαχθεί η έννοια των ομάδων αλλάξει ριζικά ο τρόπος αξιολόγησης καθώς θα εισαχθεί η έννοια των ομάδων
αρχείων ελέγχου και τα αρχεία θα έχουν νόημα μόνο μέσα σε αυτές. αρχείων ελέγχου και τα αρχεία θα έχουν νόημα μόνο μέσα σε αυτές.
\subsection{Χρήστες/Διαγωνιζόμενοι} \subsection{Χρήστες/Διαγωνιζόμενοι}
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με
...@@ -689,18 +723,18 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -689,18 +723,18 @@ Kewii και Grader, δηλαδή backend και frontend.
Ο Kewii είναι μια εφαρμογή γραμμένη σε γλώσσα C και τρέχει στον εξυπηρετητή Ο Kewii είναι μια εφαρμογή γραμμένη σε γλώσσα C και τρέχει στον εξυπηρετητή
ελέγχοντας διαρκώς για νέες υποβολές. Για κάθε νέα υποβολή που εντοπίζει, ελέγχοντας διαρκώς για νέες υποβολές. Για κάθε νέα υποβολή που εντοπίζει,
βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον grader μαζί με συγκεκριμένα βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον Grader μαζί με συγκεκριμένα
μεταδεδομένα, μεταγλωττίζει τον κώδικα δημιουργώντας το εκτελέσιμο αρχείο και το μεταδεδομένα, μεταγλωττίζει τον κώδικα δημιουργώντας το εκτελέσιμο αρχείο και το
εκτελεί χρησιμοποιώντας τα απαραίτητα μέτρα ασφαλείας ώστε να συγκρίνει την έξοδο εκτελεί χρησιμοποιώντας τα απαραίτητα μέτρα ασφαλείας ώστε να συγκρίνει την έξοδο
για κάθε αρχείο ελέγχου με την σωστή. Μόλις τελειώσει η εκτέλεση ή ξεπεραστούν τα για κάθε αρχείο ελέγχου με την σωστή. Μόλις τελειώσει η εκτέλεση ή ξεπεραστούν τα
όρια της, ενημερώνει τη βάση δεδομένων, με χρήση ενός PHP script, με την έκβαση της όρια της, ενημερώνει τη βάση δεδομένων, με χρήση ενός PHP script, με την έκβαση της
εκτέλεσης και ειδοποιεί το grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο εκτέλεσης και ειδοποιεί το Grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο
(callback) ώστε αυτός να αναλάβει την ανάλυση των αποτελεσμάτων. (callback) ώστε αυτός να αναλάβει την ανάλυση των αποτελεσμάτων.
\bigskip \bigskip
Κάθε υποβολή έχει έναν μοναδικό κωδικό, ο οποίος χρησιμοποιείται για την Κάθε υποβολή έχει έναν μοναδικό κωδικό, ο οποίος χρησιμοποιείται για την
αλληλεπίδραση με το grader κατά το callback, όπως και έναν αύξοντα αριθμό που αλληλεπίδραση με το Grader κατά το callback, όπως και έναν αύξοντα αριθμό που
χρησιμεύει στον Kewii για την διατήρηση της κατάστασης των εκτελέσεων. Τα χρησιμεύει στον Kewii για την διατήρηση της κατάστασης των εκτελέσεων. Τα
μεταδεδομένα που εμπεριέχονται σε κάθε υποβολή και είναι απαραίτητα για την μεταδεδομένα που εμπεριέχονται σε κάθε υποβολή και είναι απαραίτητα για την
αξιολόγηση της είναι τα παρακάτω: αξιολόγηση της είναι τα παρακάτω:
...@@ -847,7 +881,7 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως ...@@ -847,7 +881,7 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου και blue tag} \chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου}
Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η
τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων
...@@ -1358,15 +1392,15 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα ...@@ -1358,15 +1392,15 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
Δεδομένης της δημοτικότητας της Python και της ευκολίας χρήσης της, είναι μια Δεδομένης της δημοτικότητας της Python και της ευκολίας χρήσης της, είναι μια
απαραίτητη προσθήκη στο Grader που πιθανότατα θα εκτιμηθεί από διαγωνιζόμενους απαραίτητη προσθήκη στο Grader που πιθανότατα θα εκτιμηθεί από διαγωνιζόμενους
μαθητές και φοιτητές. Η Python δε λείπει από κανένα (TODO: όντως;) από τα μαθητές και φοιτητές. Η Python δε λείπει από κανένα από τα συστήματα
συστήματα αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη επιλογή στα
επιλογή στα κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά μαθήματα κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά μαθήματα των
των τμημάτων επιστήμης των υπολογιστών. (TODO: https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext) τμημάτων επιστήμης των υπολογιστών \cite{website:popularpython}. Είναι μια από
Είναι μια από τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με στοιχεία του τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με στοιχεία του Stack
Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/) Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέρωση της σε πολλά
χάρη, κυρίως, στην καθιέρωση της σε πολλά προγράμματα προπτυχιακών σπουδών και προγράμματα προπτυχιακών σπουδών και στην ανάπτυξη των τομέων της ανάλυσης
στην ανάπτυξη των τομέων της ανάλυσης δεδομένων και μηχανικής μάθησης, στους δεδομένων και μηχανικής μάθησης, στους οποίους κυριαρχεί ως εργαλείο
οποίους κυριαρχεί ως εργαλείο (https://stackoverflow.blog/2017/09/14/python-growing-quickly/). \cite{website:whypython}.
\bigskip \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