OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
MySQL + Γλώσσα Προγραμματισμού
Advertisements

Εργαστήριο Λειτουργικών Συστημάτων Φροντιστήριο 2– Εισαγωγή στη Bash Ντίρλης Νικόλαος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
JAVA και SQL Δαμιανός Χατζηαντωνίου
Εισαγωγικό Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
AJAX Asynchronous JavaScript and XML Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Google's Google App Engine and Google's Datastore API Andreas Manoli.
Άσκηση 1. Θεωρούμε το ακόλουθο κομμάτι κώδικα int i,j; double result, a[110][4]; for(i=0; i
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Syntax and Style.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
PHP 2. Στόχος της ώρας Εμβάθυνση στην PHP: Χωρισμός κώδικα σε αρχεία Εμβέλεια μεταβλητών Πίνακες foreach Συναρτήσεις αρχείων Χειρισμός ανεβασμένου αρχείου.
ORACLE PL/SQL Cursors Μέρος 2. Cursors 2 Cursors με παραμέτρους Εισαγωγή παραμέτρου κατά την εκτέλεση Πολλά ανοίγματα με διαφορετικές παραμέτρους.
Προσομοίωση Δικτύων 2n Άσκηση Δημιουργία, διαμόρφωση μελέτη επικοινωνιακών ζεύξεων.
Μάθημα 4 Server side προγραμματισμός Βάσεις δεδομένων PHP.
1 Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ.
Η καθημερινή ζωή στο Βυζάντιο Εργασία της μαθήτριας: Τζένη Αλουσάι στο μάθημα της Ιστορίας ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΗΤΡΙΑ:κα.Τσαούση.
Μάθημα 8 Session και Cookies. Session Το HTTP πρωτόκολλο είναι stateless. Άρα το HTTP δεν έχει μνήμη. Αυτό σημαίνει ότι εάν έχω μια μεταβλητή που την.
Πλατφόρμες Ηλεκτρονικής Μάθησης Η Πλατφόρμα OpeneClass Οφηλία Νεοφύτου Σταύρος Καουκάκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Μάθημα 1 ΔΙΑΔΙΚΤΥΟ Διευθύνσεις και Πρωτόκολλα. Διευθύνσεις Πως αποκωδικοποιούνται οι διευθύνσεις: Πρωτόκολλο://server.domain.
“Friends” Υποτιτλιστική δραστηριότητα εκμάθησης αγγλικών Πατήστε εδώ για να ξεκινήσετε (Για να μεταβείτε σε άλλες σελίδες αυτής της παρουσίασης, χρησιμοποιήστε.
Μαθαίνω με “υπότιτλους”
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού
Βασικά Web εργαλεία και τεχνολογίες
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Διευθύνσεις και Πρωτόκολλα στο διαδίκτυο
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Βάσεις Δεδομένων Ι Επανάληψη
Εισαγωγή στον Προγ/μό Υπολογιστών
Εφαρμογές Υπολογιστών
Ενότητα Εισαγωγή Είναι εύκολη στη χρήση και στην εκμάθηση.
Άθλημα Πετοσφαίρισης Βογιατζή Ίριδα-Βοϊλα Έφη.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Μάθημα 6 Φόρμες I.
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΚΑΡΑΓΚΙΟΖΗΣ Γνωρίσαμε τους ήρωες του ελληνικού θεάτρου σκιών καθώς και την ιστορία του Καραγκιόζη. πληροφορίες αντλήσαμε από το Σπαθάρειο μουσείο. Καραγκιοζοπαίχτης.
Βάσεις Δεδομένων ΙΙ Triggers
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Pipeline: Ένα παράδειγμα από ….τη καθημερινή ζωή
Γιορτάσαμε την ΕΙΡΗΝΗ.
Τα Βασικά δόγματα Γιώργος Λεπίδας Γ΄2.
«Από τη MicroWorlds Pro στην Python»
ΚΕΦΑΛΑΙΟ 2 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA
Σχεδιασμός με αναζήτηση στο χώρο πλάνων
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Η στήριξη και η κίνηση στους ζωικούς οργανισμούς
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Η Κωνσταντινα και οι αραχνεσ τησ
Σχεσιακεσ βασεισ δεδομενων
Βάσεις Δεδομένων ΙΙ Ενότητα 5: Μελέτη περιπτώσεως:
Συστάδα 2: Φυσικές Επιστήμες, Τεχνολογία, Φυσική Αγωγή και Υγεία
Ερωτήματα Επιλογής σε ACCESS
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον αλγεβρικό λογισμό
SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Κατανεμημένα Συστήματα
Server side προγραμματισμός Βάσεις δεδομένων PHP
Μεταγράφημα παρουσίασης:

OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»

Στόχος  Θα δημιουργήσουμε μια διασύνδεση του Openeclass με το API του hackerearth.com έτσι ώστε όταν ανεβαίνει μια εργασία με κατάληξη.py, αυτή να εκτελείται και το output να προστίθεται ως σχόλιο βαθμολογητή.  Στη συνέχεια θα τροποποιήσουμε το interface του εργαλείου εισαγωγής εργασίας, ώστε να υπάρχει ένα checkbox που θα επιτρέπει στον καθηγητή να ενεργοποιεί ή να απενεργοποιεί αυτή τη λειτουργία σε επίπεδο εργασίας.

Βήμα 1: Προετοιμασία  Προσθέτουμε το API key του hackerearth στο αρχείο config/config.php  $hackerEarthKey = 'ef34f0279e1af1fd967cbf7bd6562bece9e05041';  Δημιουργούμε τη στήλη auto_judge (INT(1) ή αλλιώς TINYINT) στον πίνακα assignments στη βάση δεδομένων του openeclass

Βήμα 2: Εύρεση κώδικα υποβολής νέας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση submit_work στη γραμμή 392:  function submit_work($id, $on_behalf_of = null) {  Στη συνέχεια βρίσκουμε το τέλος του if($submit_ok) { στη γραμμή 525

Βήμα 3: Προσθήκη λειτουργικότητας // Auto-judge: Send file to hackearth global $hackerEarthKey; $content = file_get_contents("$workPath/$filename"); //set POST variables $url = ' $fields = array('client_secret' => $hackerEarthKey, 'source' => $content, 'lang' => 'PYTHON'); //url-ify the data for the POST foreach($fields as $key=>$value) { $fields_string.= $key.'='.$value.'&'; } rtrim($fields_string, '&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //execute post $result = curl_exec($ch); $result = json_decode($result, true); $result['run_status']['output'] = trim($result['run_status']['output']); // Add the output as a comment submit_grade_comments($id, $sid, 10, 'Output: '.$result['run_status']['output'], false); // End Auto-judge

Βήμα 4: Εύρεση κώδικα φόρμας δημιουργίας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση new_assignment στη γραμμή 554:  function new_assignment() {  Η μεταβλητή $tool_content περιέχει τον κώδικα html που εμφανίζεται μέσα στο εργαλείο  Βρίσκουμε τον παρακάτω κώδικα στη γραμμή 596: $m[WorkAssignTo]: Όλους $m[WorkToUser]

Βήμα 5: Τροποποίηση φόρμας  Προσθέτουμε τα παρακάτω: Auto-judge:

Βήμα 6: Εύρεση κώδικα δημιουργίας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση add_assignment στη γραμμή 318:  function add_assignment() {  Οι μεταβλητές από τη φόρμα ανακτώνονται και φιλτράρονται στις γραμμές

Βήμα 7: Προσθήκη κώδικα δημιουργίας εργασίας  Στη γραμμή 329 προσθέστε:  $auto_judge = filter_input(INPUT_POST, 'auto_judge', FILTER_VALIDATE_INT);  Τροποποιούμε τη γραμμή 337 προσθέτοντας το νέο πεδίο auto_judge ώστε να καταχωρείται στη βάση

Βήμα 8: Προσθήκη ελέγχου στον κώδικα υποβολής εργασίας  Τροποποιούμε τη γραμμή 425  $row = Database::get()->querySingle("SELECT title, group_submissions FROM assignment WHERE course_id = ?d AND id = ?d", $course_id, $id);  Προσθέτουμε στο select το πεδίο auto_judge, δηλαδή SELECT title, group_submissions, auto_judge  2 γραμμές παρακάτω δημιουργούμε τη μεταβλητή: $auto_judge = $row->auto_judge;

Βήμα 8: Προσθήκη ελέγχου στον κώδικα υποβολής εργασίας  Επιστρέφουμε τον κώδικα του βήματος 3 και βάζουμε όλο το block μέσα σε ένα if  if($auto_judge) { … }

Ασκήσεις 1. Βελτιώστε τον κώδικα ώστε να λειτουργεί όχι μόνο για αρχεία Python αλλά για όλες τις γλώσσες που υποστηρίζει το hackerearth. Hint: Οι υποστηριζόμενες γλώσσες βρίσκονται στο documentation developer.hackerearth.comdeveloper.hackerearth.com 2. Προσθέστε τη δυνατότητα ο καθηγητής να επιλέγει, σε επίπεδο εργασίας, για ποιες γλώσσες θα είναι ενεργοποιημένη/απενεργοποιημένη η παραπάνω λειτουργικότητα.

Σας ευχαριστώ πολύ Ερωτήσεις; Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας