ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε.Ι ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: ΑΝΙΧΝΕΥΣΗ ΟΜΟΙΟΤΗΤΑΣ ΠΡΟΓΡΑΜΜΑΤΩΝ C++ ΓΕΩΡΓΟΠΟΥΛΟΣ ΑΝΤΩΝΗΣ



Σχετικά έγγραφα
Ηλεκτρονικοί Υπολογιστές

Πληροφορική 2. Γλώσσες Προγραμματισμού

Ανάπτυξη και Σχεδίαση Λογισμικού

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Πληροφορική 2. Αλγόριθμοι

Δομημένος Προγραμματισμός

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Εισαγωγή στην Αριθμητική Ανάλυση

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

Τύποι δεδομένων, τελεστές, μεταβλητές

Οντοκεντρικός Προγραμματισμός

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Προγραμματισμός Υπολογιστών με C++

Στοιχειώδης προγραμματισμός σε C++

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στην επιστήμη των υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

του προγράμματος diagrama_rohs.zip )

Προγραμματισμός Υπολογιστών με C++

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Βασικές Αρχές Προγραμματισμού

Άσκηση 1. Ποια από τα κάτω αλφαριθμητικά είναι αποδεκτά ως ονόματα μεταβλητών σε έναν αλγόριθμο i. Τιμή

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 10/04/2018

Υπολογιστικά Mαθηματικά II

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΔΙΔΑΣΚΑΛΙΑ ΓΝΩΣΤΙΚΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ Δρ. Ζαφειριάδης Κυριάκος Οι ικανοί αναγνώστες χρησιμοποιούν πολλές στρατηγικές (συνδυάζουν την

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

Χωρική Βάση δεδοµένων Autocad

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

Δομές Δεδομένων & Αλγόριθμοι

Προγραμματισμός ΙI (Θ)

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΘΕΜΑ Α. Μονάδες 10 Α2.

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Δομημένος Προγραμματισμός (ΤΛ1006)

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Οντοκεντρικός Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Ηλεκτρονικοί Υπολογιστές

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Ενδεικτικές λύσεις και στατιστικά

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Υπολογισμός - Εντολές Ελέγχου

Αντικειμενοστραφής Προγραμματισμός

Υπολογισμός - Εντολές Επανάληψης

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Ψευδοκώδικας. November 7, 2011

ΑΕΠΠ Ερωτήσεις θεωρίας

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

Θερμοδυναμική - Εργαστήριο

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

8 FORTRAN 77/90/95/2003

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Transcript:

Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: ΑΝΙΧΝΕΥΣΗ ΟΜΟΙΟΤΗΤΑΣ ΠΡΟΓΡΑΜΜΑΤΩΝ C++ ΓΕΩΡΓΟΠΟΥΛΟΣ ΑΝΤΩΝΗΣ ΕΠΙΒΛΕΠΩΝ: ΠΑΠΑΔΑΚΗΣ ΣΤΕΛΙΟΣ ΚΑΒΑΛΑ 2010

ΠΕΡΙΛΗΨΗ Το θέμα της αντιγραφής / λογοκλοπής είναι ένα φαινόμενο που εμφανίζεται συνέχεια στον ακαδημαϊκό χώρο και αποτελεί ένα από τα σημαντικότερα προβλήματα που αντιμετωπίζει το εκπαιδευτικό προσωπικό για την σωστή και ορθή αξιολόγηση των εργασιών που παραδίδονται από τους φοιτητές. Σήμερα υπάρχουν αρκετά προγράμματα που μπορούν να βοηθήσουν στην εύρεση των ομοιοτήτων, όπου το καθένα κάνει διαφορετική προσέγγιση του προβλήματος. Στην εργασία παρουσιάζεται ένας διαφορετικός τρόπος εύρεσης αντιγραφών / λογοκλοπών, του FIN (Fuzzy Interval Numbers). Στο πρώτο μέρος της εργασίας γίνεται παρουσίαση των διαφόρων προγραμμάτων ευρέσεων ομοιοτήτων, μετά γίνεται παρουσίαση της έννοιας του FIN και τέλος παρουσίαση των λεπτομερειών ανάπτυξης εφαρμογής ευρέσεως ομοιοτήτων σε προγράμματα πηγαίου κώδικα που κάνει χρήση του FIN. 1

ΕΥΧΑΡΙΣΤΙΕΣ Καταρχήν θα ήθελα να ευχαριστήσω τον επιβλέπων καθηγητή μου Παπαδάκη Στέλιο για την βοήθεια που μου παρείχε για την ομαλή εκπόνηση της πτυχιακής καθώς και όλους τους καθηγητές μου στο τμήμα της Βιομηχανικής πληροφορικής για τα εφόδια που μου έδωσαν. Την οικογένειά και του φίλους μου που με υποστήριξε καθ' όλη την διάρκεια της συγγραφής της πτυχιακής μου εργασίας. Επίσης θέλω να ευχαριστήσω την γραμματεία της σχολής για την γραμματειακή υποστήριξη που μου παρείχε και που βοήθησε να ξεπεραστούν όλα τα διαδικαστικά θέματα που συναντήθηκαν. Γεωργόπουλος Αντώνης 2

ΠΕΡΙΕΧΟΜΕΝΑ ΣΚΟΠΟΣ 4 ΣΤΟΧΟΣ 4 ΤΙ ΕΙΝΑΙ ΛΟΓΟΚΛΟΠΗ 5 FUZZY INTERVAL NUMBERS - ΑΣΑΦΗ ΣΥΝΟΛΑ ΑΡΙΘΜΩΝ 10 ΑΠΑΙΤΗΣΕΙΣ 15 ΠΡΟΔΙΑΓΡΑΦΕΣ 15 ΔΙΑΔΙΚΑΣΙΕΣ ΚΑΙ ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ 16 ΠΕΡΙΓΡΑΦΗ ΚΩΔΙΚΑ 27 ΒΙΒΛΙΟΓΡΑΦΙΑ 32 3

Σκοπός Πολλές φορές οι σπουδαστές κάνουν χρήση πηγαίου κώδικα που το έχουν γράψει άλλοι συνάδελφοί τους, πραγματοποιώντας μερικές αλλαγές όπως αλλάζοντας τα ονόματα των μεταβλητών ή την σειρά με την οποία εμφανίζονται οι διάφορες συναρτήσεις. Συχνά αυτές οι αλλαγές δεν μπορούν να εντοπιστούν με οπτικό έλεγχο ή το μέγεθος του κώδικά κάνει αδύνατο τον έλεγχο. Για αυτό τον λόγο κρίνεται απαραίτητη η δημιουργία ενός εργαλείου που θα μπορεί βοηθήσει τον καθηγητή στην εύρεση των ομοίων πηγαίων κωδίκων. Να σημειωθεί ότι είναι εργαλείο και τα αποτελέσματα από το πρόγραμμα δεν θα πρέπει ποτέ να θεωρηθούν απόλυτα. Μπορεί να υπάρχουν κώδικες που μπορεί να είναι όμοιοι αλλά δεν σημαίνει ότι ο ένας είναι αντιγραφή του άλλου. Το πρόγραμμα μέσω σημασιολογικού και όχι λεξικογραφικού ελέγχου θα προσπαθήσει να ελέγξει και να βρει πηγαίους κώδικες που είναι όμοιοι μεταξύ τους και που μπορεί να θεωρηθούν αντιγραφή. Στόχος Για να γίνει εφικτή ο σωστός έλεγχος των αρχείων πηγαίου κώδικα θα γίνει χρήση της τεχνολογίας των FIN, που σε σχέση με την απόσταση που έχουν τα FIN του κάθε αρχείου πηγαίου κώδικα μπορούν να εντοπιστούν οι όμοιοι μεταξύ τους. Δηλαδή, θα γίνεται μία σημασιολογική έρευνα μέσα στον κώδικα για να χωριστεί σε σημασιολογικές έννοιες και μετά βάση των αποτελεσμάτων της έρευνας θα εξάγεται το FIN του κάθε αρχείου. Υπολογίζοντας την απόσταση των FIN μεταξύ τους μπορούμε να διαπιστώσουμε ποιοι πηγαίοι κώδικες μπορούν να θεωρηθούν όμοιοι μεταξύ τους. 4

Τι είναι λογοκλοπή Λογοκλοπή είναι η ηθελημένη ή αθέμιτη αναπαραγωγή (αντιγραφή, παράφραση, προσαρμογή κτλ) δουλειάς που έχει παραχθεί από άλλο πρόσωπο χωρίς την απαιτούμενη αναγνώριση με σκοπό την ακαδημαϊκό συμφέρον. Επιτρέποντας θεμιτά ή αθέμιτα τέτοια αναπαραγωγή να συμβεί μπορεί επίσης να θεωρηθεί λογοκλοπή. Τι είναι Λογοκλοπή εαυτού Λογοκλοπή εαυτού συμβαίνει όταν ένας φοιτητής επαναχρησιμοποιήσει μέρος ή ολόκληρη εργασία που προηγουμένως είχε δοθεί για ακαδημαϊκή βαθμολογία και την παραδίδει σαν μέρος μίας άλλης εργασίας Παραδείγματα για το πως οι φοιτητές διαπράττουν λογοκλοπή Σε φυσική γλώσσα (έκθεση) εργασία, οι φοιτητές είναι υποχρεωμένοι να αναγνωρίσουν την πηγή και την και να αναφέρουν το συγγραφέα του υλικού που δεν είχε αρχικά συγγραφεί από αυτούς, χρησιμοποιώντας εισαγωγικά όπου είναι σωστό και ορθό αναφοράς. Εδώ αναφέρονται μερικά παραδείγματα λογοκλοπής σε εκθέσεις. Αντιγραφή δουλειάς ενός άλλου φοιτητή (ή μέρος αυτής) και παραδίδοντάς την σαν δική τους. Ένας φοιτητής που επιτρέπει έναν άλλο φοιτητή να αντιγράψει την δουλειά τους είναι επίσης υποκείμενος για λογοκρισία. Αντιγράφοντας υλικό από μία ή περισσότερες πηγές χωρίς ορθή αναγνώριση. Παραφράζοντας κείμενο από μία ή περισσότερες πηγές χωρίς την σωστή απαιτούμενη ένδειξη και αναγνώριση. Κλέβοντας κάποιου άλλου δουλειά και παραδίδοντάς την σαν δική τους. Βάζοντας κάποιον άλλο να κάνει την δουλειά, ή αγοράζοντας μία έκθεση από μία τράπεζα εκθέσεων στο διαδίκτυο. 5

Επαναπαράδοση εργασίας που είχε παλιά κατατεθεί για ακαδημαϊκή βαθμολογία. Συνεργασία μεταξύ δύο ή περισσοτέρων φοιτητών για να φτιάξουν μία εργασία όταν δεν επιτρέπεται. Παραδείγματα για το πως οι φοιτητές διαπράττουν λογοκλοπή σε προγράμματα υπολογιστών Σε εργασίες πηγαίου κώδικα, οι φοιτητές ζητούνται να αναγνωρίσουν την πηγή και πατρότητα του πηγαίου κώδικα που δεν είχε αρχικά εκδοθεί από αυτούς, μέσα στον κώδικα (σαν σχόλιο) και στην απαιτούμενη βιβλιογραφία. Παρακάτω αναφέρονται μερικά παραδείγματα λογοκλοπής σε κώδικα πηγής εργασίες που αναγνωρίστηκαν από τους Cosma και Joy (2006). Αναπαραγωγή/αντιγραφή πηγαίου κώδικα χωρίς να γίνουν αλλαγές και παροχή ορθή αναγνώρισης. Ελάχιστα ή μέτρια προσαρμογή πηγαίου κώδικα που έχει συγγραφεί από κάποιον άλλο χωρίς την παροχή ορθή αναγνώρισης. Μετατρέποντας ολόκληρο ή μέρος ενός άλλου πηγαίου κώδικα σε όμοια προγραμματιστική γλώσσα. Χρησιμοποιώντας προγράμματα που παράγουν κώδικα για την δημιουργία κώδικα χωρίς την παροχή αναγνώρισης αυτής της πληροφορίας Πληρώνοντας κάποιον άλλο να φτιάξει το πρόγραμμα. Συνεργασία με κάποιον άλλο φοιτητή για όταν αυτό δεν επιτρέπεται. Προγράμματα ανάλυσης κειμένου Παρακάτω αναφέρονται μερικά προγράμματα που μπορούν να χρησιμοποιηθούν για να βρουν αντιγραφή / λογοκλοπή σε απλό κείμενο (όπως εκθέσεις) 6

Εμπορικά εργαλεία Turnitin είναι μία υπηρεσία ανίχνευσης αντιγραφής/λογοκλοπής στο διαδίκτυο, που ηλεκτρονικά ελέγχει εργασίες φοιτητών με άλλες ηλεκτρονικές πηγές συμπεριλαμβάνοντας εργασίες άλλων φοιτητών. Είναι η επίσημη υπηρεσία ευρέσεως λογοκλοπής του JISC (Joint Information Systems Committee). MyDropBox είναι μία σουίτα από εργαλεία στο διαδίκτυο που περιέχει ένα σύστημα εντοπισμού λογοκλοπής, ένα εργαλείο για σημείωση και σχολιασμό. CopyCatch Gold χρησιμοποιείται σε πολλά εκπαιδευτικά ιδρύματα για πολλά χρόνια. Στοχεύει περισσότερο σε εύρεση συμπαιγνίας. Το CopyChecker, που έρχεται δωρεάν μαζί με το CopyCatch Gold, είναι σχεδιασμένο να χρησιμοποιείτε από του φοιτητές για να μάθουν το πως να χρησιμοποιούν πηγές κατάλληλα. Essay Verification Engine (EVE ) Είναι ένα εργαλείο που βρίσκεται στο Διαδίκτυο από την CaNexus που συγκρίνει εργασίες φοιτητών με άλλες σελίδες και επιστρέφει δεσμούς από τους οποίους οι φοιτητές μπορεί να έχουν λογοκοπήσει. Το Eve δεν είναι δωρεάν υπηρεσία. Glatt Plagiarism Screening Program είναι λογισμικό ευρέσεων λογοκλοπής διαθέσιμο για αγορά μόνο σε CD. Αποθηκεύει πληροφορίες για το ύφος σύνταξης του κάθε φοιτητή και χρησιμοποιεί αυτή την πληροφορία για να καθορίσει αυτούς που έχουν διαπράξει λογοκλοπή από τους μη. Αυτό το λογισμικό μπορεί να είναι χρήσιμο σε περιπτώσεις όπου η αρχική πηγή δεν μπορεί να βρεθεί. Δωρεάν Εργαλεία PRAISE (Plotted Ring of Analysed Information for Similarity Exploration) Είναι δωρεάν εργαλείο για εντοπισμό ομοιοτήτων μεταξύ εγγράφων. Το PRAISE λειτουργεί μαζί με το VAST και ζευγάρια 7

από όμοια έγγραφα που έχουν ανιχνευτεί από το PRAISE μπορούν να διαλεχτούν για περαιτέρω ερεύνα στο VAST. VAST είναι ένα δωρεάν λογισμικό που δημιουργεί διαδραστικές οπτικοποίησεις για να μπορεί κάποιος να δει ομοιότητες μεταξύ δύο εγγράφων. Είναι σχεδιασμένο να χρησιμοποιείτε με άλλα εργαλεία εντοπισμού για να βοηθήσει στην έρευνα για το μέγεθος και την βαρύτητα της ομοιότητας που έχει εντοπιστεί από εργαλεία όπως το PRAISE. Εργαλεία εύρεσης ομοιοτήτων σε πηγαίο κώδικα Παρακάτω αναφέρονται τα διασημότερα προγράμματα ευρέσεως ομοιοτήτων για πηγαίο κώδικα. JPlag υπόσχεται να βρει ομοιότητες μεταξύ πολλαπλών αρχείων πηγαίου κώδικα. Το JPlag αναπτύχθηκε από τον Guido Malpohl το 1996. Τώρα υποστηρίζει Java, C#, C, C++, Scheme και κείμενο φυσικής γλώσσας. Το JPlag είναι δωρεάν αλλά οι χρήστες του χρειάζεται να δημιουργήσουν έναν λογαριασμό. Το JPlag χρησιμοποιεί μία παραλλαγή του αλγορίθμου σύγκρισης Karp-Rabin που αναπτύχθηκε από την Wise, αλλά έχουν προστεθεί διάφορες βελτιστοποιήσεις για να βελτιώσει την αποδοτικότητα του χρόνου εκτέλεσης. MOSS (Measure Of Software Similarity) αναπτύχθηκε από τον Alex Aiken το 1994. Το MOSS ψάχνει ομοιότητες σε διαφορετικές γλώσσες προγραμματισμού όπως: C, C++, Java, Pascal, Ada, ML, Lisp, και Scheme. Το MOSS είναι δωρεάν αλλά οι χρήστες πρέπει να δημιουργήσουν έναν λογαριασμό. ΤΟ PMD είναι ένα ανοιχτού κώδικα εργαλείο που παρέχει ένα ανιχνευτή Αντιγραφής/Επικόλλησης (Copy/Paste Detector CPD) για να βρίσκει πιστό αντίγραφο κώδικα και χρησιμοποιεί τον Karp-Rabin αλγόριθμο. Λειτουργεί με Java, JSP, C, C++, Fortan και PHP κώδικες. Επίσης παρέχει καθοδήγηση για το πως μπορούν να προστεθούν άλλες γλώσσες προγραμματισμού στο εργαλείο. Σε αντίθεση με τα JPlag, MOSS, και Sherlock αυτό το εργαλείο δεν στοχεύει αποκλειστικά στο να βρίσκει ομοιότητες σε 8

εργασίες φοιτητών αλλά λειτουργεί καλά εάν χρησιμοποιηθεί. Ομοίως με το Jplag, το CPD χρησιμοποιεί μία διαφοροποίηση του Karp-Rabin αλγορίθμου ανεπτυγμένου από την Wise. Οι σχεδιαστές του PMD παρέχουν άριστη υποστήριξη και τεκμηρίωση για το εργαλείο. Επειδή είναι ένας ανιχνευτής αντιγραφής κώδικα, αυτό το εργαλείο ψάχνει τα αρχεία για ίδιο κώδικα, επιστρέφοντας κώδικα που είναι ίδιος μέσα στο ίδιο το αρχείο. Αλλά, είναι επιτυχές στο να επιστρέφει όμοιο κώδικα που βρίσκεται σε διαφορετικά αρχεία και μπορεί να χρησιμοποιηθεί σαν εργαλείο για να ελέγχει ομοιότητες σε πηγαίου κώδικα αρχεία. CodeMatch είναι ένας εμπορικός ανιχνευτής πηγαίου κώδικα που ισχυρίζεται ότι έχει καλύτερο αλγόριθμο σε σχέση με τα προαναφερθέντα προγράμματα. Το CodeMatch αυτή την στιγμή υποστηρίζει της παρακάτω γλώσσες προγραμματισμού: Basic, C, C++, C#, Delphi, Flash ActionScropt, Java, JavaScript, MASM, Pascal, Perl, PHP, PowerBuilder, Ruby, SQL, Verilog και VHDL. 9

Fuzzy Interval Numbers - Ασαφή Σύνολα Αριθμών FIN (Fuzzy Interval Numbers) στα ελληνικά Ασαφή Σύνολα Αριθμών μοιάζουν με ασαφή σύνολα αλλά δεν είναι ασαφή σύνολα. Τα FIN παρουσιάστηκαν από τον Κύριο Καμπουρλάζο σαν εργαλεία για την μοντελοποίηση περίπλοκων συστημάτων. Γενικευμένα σύνολα Ένα γενικευμένο σύνολο του ύψους h((0,1]) είναι μία χαρτογράφηση που δίνεται από 1. Αν x 1 < x 2 (θετικά γενικευμένο σύνολο) τότε h [ x 1, x ] h, x1 x x2 ( x) ώ 0, 2. Αν x 1 > x 2 (αρνητικά γενικευμένο σύνολο) τότε h [ x 1, x ] h, x1 x x2 ( x) ώ 0, 3. Αν x 1 = x 2 (εκφυλισμένο γενικευμένο σύνολο) τότε { h, h} x 1 ( x) 0, διαφορετικά x [ x h 1, x ] Το σύνολο από όλα τα γενικευμένα θετικά σύνολα του ύψους h υποδηλώνεται από από όλα τα αρνητικά γενικευμένα σύνολα από h M h M, το σύνολο, το σύνολο από όλα τα εκφυλισμένο γενικευμένα σύνολα από h M 0 και το σύνολο από όλων των γενικευμένων συνόλων από M h M h - M h 0 M h. Δύο συναρτήσεις, που πρόκειται να χρησιμοποιηθούν αργότερα,ορίζονται: Συνάρτηση support χαρτογραφεί ένα γενικευμένο σύνολο στο αντίστοιχα συμβατικό σύνολο, support([x 1,x 2 ] h )= [x 1,x 2 ] για θετικά, support([x 1,x 2 ] h )= [x 2, x 1 ] για αρνητικά και support([x 1,x 2 ] h )= {x 1 } για εκφυλισμένο γενικευμένο σύνολα. Συνάρτηση sign: M h { 1,0, 1} χαρτογραφεί ένα θετικά γενικευμένο σύνολο στο +1, ένα αρνητικά γενικευμένο σύνολο στο -1 και ένα εκφυλισμένο γενικευμένο σύνολο στο 0. 10

Fuzzy Interval Numbers: Ορισμός και Ερμηνεία Ένα θετικό Fuzzy Interval Number (FIN) είναι μία συνεχόμενη συνάρτηση F: ( 0, 1} h M σύνολο από όλους τους θετικούς FIN υποδηλώνεται από F +. Ομοίως υποδηλώνονται τα εκφυλισμένα και αρνητικά FINs.. Το Έστω έναν πληθυσμό (ένα διάνυσμα) x = [x 1,x 2,,x N ] από πραγματικούς αριθμούς, ταξινομημένους σε αύξουσα σειρά, ένα FIN μπορεί να υπολογιστεί εφαρμόζοντας τον CALFIN αλγόριθμο που δίδεται παρακάτω. Στο παρακάτω σχέδιο παρουσιάζεται ένα FIN, υπολογισμένο από τον πληθυσμό 86 τιμών. Έστω ένα FIN, ένα «κόψιμο» σε ένα δεδομένο ύψος h ((0,1 ]) ορίζει έναν γενικευμένο σύνολο, υποδηλωμένο από F(h). Στο σχέδιο παρακάτω, F(0,25) είναι το γενικευμένο σύνολο[a,b] 0,25 αναπαριστώμενο από Oacbdx. Ένα επακόλουθο του αλγόριθμου CALFIN είναι το επόμενο: Έστω F(1) = {m 1 }, περίπου Ν/2 από τις τιμές είναι μικρότερες από m 1 και Ν/2 είναι μεγαλύτερες από m 1. Έστω ότι F(0,5) = [p 1/2,q 1,2 ] 0,5, περίπου Ν/4 των τιμών του x βρίσκονται μέσα στο [p 1/2,m 1 ] και Ν/4 στο [m 1,q 1/2 ]. Γενικότερα: για κάθε h ((0,1]) περίπου 100(1-h)% από τις Ν τιμές του x βρίσκονται μέσα στην support(f(h)). 11

Αλγόριθμος CALFIN Έστω ένα διάνυσμα από πραγματικούς αριθμούς x = [x 1,x 2,..,x N ] έτσι x 1 x... 2 x n. Ένα FIN μπορεί να κατασκευαστεί από τον παρακάτω αλγόριθμο CALFIN, όπου dim(x) υποδηλώνει την διάσταση του διανύσματος π.χ. dim([2,-1])= 2, dim([-3,4,0,-1,7]) = 5 κοκ. 1. Έστω x ένα διάνυσμα από πραγματικούς αριθμούς 2. Ταξινόμησε κατά αύξουσα σειρά τους αριθμούς στο διάνυσμα x. 3. Αρχικά διάνυσμα pts είναι κενό. 4. Συνάρτηση calfin(x){ 5. while (dim(x) 1) 6. medi := median(x) 1 7. Εισήγαγε medi μέσα στον διάνυσμα pts 8. x_left := στοιχεία μέσα στο διάνυσμα x που είναι μικρότερα από τον αριθμό του median(x) 9. x_right := στοιχεία μέσα στο διάνυσμα x που είναι μεγαλύτερα από τον αριθμό του median(x) 10. calfin(x_left) 11. calfin(x_right) 12. endwhile 13. }//function calfin(x) 14. Ταξινόμησε το διάνυσμα pts κατά αύξουσα σειρά 15. Αποθήκευσε στο διάνυσμα val, dim(pts)/2 αριθμούς από το 0 μέχρι το 1 με βήμα 2/dim(pts) ακολουθούμενο από άλλο ένα dim(pts)/2 αριθμούς από το 1 μέχρι το 0 με βήμα 2/dim(pts) 1 O median(x) του διανύσματος x = [x1,x2,..,xn] ορίζεται έτσι ώστε να είναι ένας αριθμός όπου οι μισοί αριθμοί του Ν, [x1,x2,..,xn ] να είναι μικρότεροι από το median (x) και οι άλλοι μισοί αριθμοί να είναι μεγαλύτεροι από το median(x). Για παράδειγμα, ο median(x1,x2,x3) με x1 x.x 2 3 ισούται με x x2, ενώ ο median(x1,x2,x3,x4) με 1 x2. x3 x4 υπολογίζεται median(x1,x2,x3,x4) = (x2 + x3,)/2. 12

FIN απεικόνιση πηγαίου κώδικα Η απεικόνιση του πηγαίου κώδικα σε FIN γίνεται ακολούθως. Πρώτα από όλα πρέπει να γίνει ένα σημασιολογικός διαχωρισμός του κώδικά. Πρέπει να διαχωριστούν όλα τα στιγμιότυπα τύπου (Token) που υπάρχουν μέσα στον κώδικα. Στιγμιότυπο τύπου μπορεί να είναι: 1. Τελεστές π.χ. +, -, <<,? κτλ 2. Οποιοσδήποτε συνδυασμός από αριθμούς και γράμματα που μπορεί να θεωρηθεί σωστός από τον μεταγλωττιστή πχ int, cout, for, i, ChAr1 3. Εισαγωγές βιβλιοθηκών όπως #include <iostream> αλλά το #include θεωρείται από μόνο του ένα στιγμιότυπο τύπου και οτιδήποτε περιέχεται μέσα < > θεωρείται ξεχωριστό στιγμιότυπο τύπου. 4. Οι αριθμοί π.χ. 15, 2005,.05464 5. Όλοι οι ορμαθοί χαρακτήρα θεωρούνται στιγμιότυπα τύπου πχ Hello World Όλα τα σχόλια παραλείπονται δηλαδή οτιδήποτε μετά από // και μεταξύ /* */. Αφότου γίνει ο διαχωρισμός όλως των στιγμιότυπων τύπου γίνεται απαρίθμηση των επαναλήψεων τους μέσα στον κώδικα. Έστω ο παρακάτω κώδικας: #include <iostream.h> main () { int a = 5, b = 2; for (int i = 0; i < 10; i++) cout << (a + b + i) << endl; cout << Hello World << endl; } 13

Τα στιγμιότυπα τύπου του κώδικα είναι τα εξής: #include ( ) + ++, 0 10 2 5 ; < << <iostream.h> = a b cout endl for i int main { } Hello World Αφού γίνει η απαρίθμηση του κάθε στιγμιότυπο θα γίνει εφαρμογή του αλγορίθμου CALFIN πάνω στα αποτελέσματα. 14

Απαιτήσεις Token Δημιουργία Token Διαχωρισμός σημασιολογικών εννοιών Διαχωρισμός Token FIN Δημιουργία FIN Γραφική απεικόνιση FIN Επέκταση FIN Προδιαγραφές Δημιουργία FIN Σύνθεση FIN Σύνθεση Σημείων FIN Επέκταση FIN Εκτύπωση Fin Εύρεση τελεστή Εύρεση διπλού τελεστή: Εύρεση Token Αποθήκευση Token 15

Διαδικασίες και Διαγράμματα Ροής Create_Fin Είσοδος: Το αρχείο πηγαίου κώδικα Έξοδος: To Fin του αρχείου. Προδιαγραφή: Δημιουργία Fin του προγράμματος. Η Create_Fin χωρίζει τον πηγαίο κώδικα σε token. Καλεί όποτε χρειάζεται την Save_Token για αποθηκεύσει το token που έχει βρει. Στο τέλος συνθέτει τον Fin καλώντας την MakeFin. Διάγραμμα Ροής 16

MakeFIN Είσοδος: Πίνακας με τους αριθμούς συχνότητας του κάθε Token. Έξοδος: Ο Fin του προγράμματος Προδιαγραφή: Δημιουργία Fin. Η MakeFIN καλεί την MakeFINPts για να δημιουργήσει τα x της γραφικής παράστασης του πηγαίου κώδικα και στην συνέχεια συμπληρώνει τα y. Διάγραμμα Ροής 17

makefinpts Είσοδος: Πίνακας με τους αριθμούς συχνότητας του κάθε Token. Έξοδος: Προδιαγραφή: Δημιουργία Fin. Η makefinpts κάνει χρήση του αλγόριθμου CALFIN για να δημιουργήσει τα x της γραφικής παράστασης του FIN του πηγαίου κώδικα. Διάγραμμα Ροής 18

ExpandFIN Είσοδος: Τον FIN που πρέπει να αλλαχθεί, Το μέγιστο μήκος FIN Έξοδος: Ο καινούργιος FIN Προδιαγραφή: Επέκταση FIN. H ExpandFIN καλείται όταν υπάρχουν FIN με διαφορετικό μήκος, όπου συμπληρώνει τα ενδιάμεσα στοιχεία που λείπουν από τον μικρότερα FIN σε σχέση με τον μεγαλύτερο, για να γίνει σωστά η σύγκριση μεταξύ τους. Διάγραμμα Ροής 19

CallCreateFin Είσοδος: Πίνακας με τα αρχεία προς έλεγχο. Έξοδος:- Προδιαγραφή: Δημιουργία FIN. Η CallCreateFin καλείται καλεί την CreateFIN για να συνθέσει τον FIN του κάθε αρχείου, στην συνέχεια αν χρειάζεται επεκτείνει τους μικρότερου μήκους FIN στον μεγαλύτερο με την ExpandFIN. Τέλος εκτυπώνει τον FIN στο Excel. Διάγραμμα Ροής 20

PublishFin Είσοδος: Τα FIN του κάθε πηγαίου κώδικα. Έξοδος: Γραφικές παραστάσεις στο Excel Προδιαγραφή: Γραφική απεικόνιση του κάθε FIN. H PublishFin δημιουργεί την γραφική απεικόνιση του κάθε FIN στο Excel Διάγραμμα Ροής: 21

MakeRange: Είσοδος: Οι γραμμές και οι στήλες στο Excel: Έξοδος: Το εύρος τιμών του διαγράμματος στο Excel Προδιαγραφή: Γραφική απεικόνιση του κάθε FIN. Η MakeRange καλείται για να δημιουργήσει το εύρος τιμών του διαγράμματος στο Excel. Διάγραμμα Ροής: 22

Save_Token Είσοδος: Το Token που έχει βρεθεί Έξοδος; - Προδιαγραφή: Διαχωρισμός Token. Η Save_Token αποθηκεύει τα token που βρίσκονται σε έναν vector και παράλληλα απαριθμεί την συχνότητα εμφάνισής τους. Διάγραμμα Ροής 23

isoperator: Είσοδος: Χαρακτήρας από το αρχείο πηγαίου κώδικα. Έξοδος: Αληθές η Ψευδές Απαίτηση: Δημιουργία Token Προδιαγραφή: Διαχωρισμός σημασιολογικών εννοιών Η isoperator ελέγχει αν ένας χαρακτήρας είναι operator ή όχι και επιστρέφει το ανάλογο αποτέλεσμα. Διάγραμμα Ροής 24

isdoperator: Είσοδος: Χαρακτήρας από το αρχείο πηγαίου κώδικα. Έξοδος: Αληθές η Ψευδές Προδιαγραφή: Διαχωρισμός σημασιολογικών εννοιών H isdoperator ελέγχει αν ένας συνδυασμός χαρακτήρων είναι διπλός operator ή όχι και επιστρέφει το ανάλογο αποτέλεσμα. Διάγραμμα Ροής 25

FindToken Είσοδος: Αρχή Πίνακα, Τέλος Πίνακα, Τιμή αναζήτησης. Έξοδος: Θέση αναζητούμενης τιμής. Προδιαγραφή: Διαχωρισμός Token Η FindToken ψάχνει να βρει το ζητούμενο Token. Αν δεν το βρει επιστρέφει την πρώτη θέση του πίνακα. Διάγραμμα Ροής 26

Περιγραφή Κώδικα Στην συγκεκριμένη εφαρμογή του FIN μετράμε την συχνότητα εμφάνισης του κάθε token που υπάρχει μέσα στον πηγαίο κώδικα C++. Τα token που το πρόγραμμα έχει φτιαχτεί να αναγνωρίζει είναι: όλοι οι τελεστές της C++, οποιοσδήποτε συνδυασμός γραμμάτων ή αριθμών που θα μπορούσε να θεωρηθεί μεταβλητή, αριθμός, όνομα συνάρτησης κτλ. Όλα τα σχόλια παραλείπονται δηλαδή ότι βρίσκεται μετά από // ή ενδιάμεσα /* */, τα κενά και οι αλλαγές γραμμής. Μερικά παραδείγματα token: Void, int, double Giwrgos5, x, antwnhs, prgmxptn ++, -, >, (, ; 185, 0,.567, c, \n #include, <iostream.h> «Hello World» Στην συνέχεια δημιουργείται ένας πίνακας με τις συχνότητες εμφάνισης του κάθε Token, παραδείγματος χάριν για τον παρακάτω κώδικα #include <iostream.h> main () { int a = 5, b = 2; for (int i = 0; i < 10; i++) } cout << (a + b + i) << endl; 27

Μετά τον χωρισμό token θα δημιουργηθεί ο παρακάτω πίνακας. #include 1 ( 3 ) 3 + 2 ++ 1, 1 0 1 10 1 2 1 5 1 ; 4 < 1 << 2 <iostream.h> 1 = 3 a 2 b 2 cout 1 endl 1 for 1 i 4 int 2 main 1 { 1 } 1 28

Στην συνέχεια γίνεται εφαρμογή του αλγόριθμου CALFIN στον παραπάνω πίνακα και δημιουργείται η παρακάτω γραφική παράσταση. Κώδικας 1 1,2 1 0,8 0,6 Κώδικας 1 0,4 0,2 0 0 1 2 3 4 5 6 Η χρησιμότητα των FIN μπορεί να γίνει περισσότερο ευδιάκριτη στο παρακάτω παράδειγμα. Έστω ότι έχουμε δύο κώδικες, ο πρώτος είναι κώδικας που έχουμε αναφέρει παραπάνω (Κώδικας 1) και παρακάτω παραθέτουμε έναν παρόμοιο κώδικα. #include <iostream.h> main() { int timh1 = 5, timh2 = 2; for (int step=0;step<10;step++) cout<<(timh1+timh2+step)<<endl; } Θα μπορούσαμε να εξάγουμε το συμπέρασμα ότι αυτοί οι δύο κώδικες είναι διαφορετικοί μεταξύ τους, αλλά αν γίνει εφαρμογή του προγράμματος στους δύο κώδικες θα τα καταλήξουμε με τους εξής πίνακες συχνοτήτων. 29

Πίνακες συχνοτήτων Κώδικας 1 #include 1 #include 1 ( 3 ( 3 ) 3 ) 3 + 2 + 2 ++ 1 ++ 1, 1, 1 0 1 0 1 10 1 10 1 2 1 2 1 5 1 5 1 ; 4 ; 4 < 1 < 1 << 2 << 2 <iostream.h> 1 <iostream.h> 1 = 3 = 3 a 2 cout 1 b 2 endl 1 cout 1 for 1 endl 1 int 2 for 1 main 1 i 4 step 4 int 2 timh1 2 main 1 timh2 2 { 1 { 1 } 1 } 1 30

Μετά την εφαρμογή και στους δύο πίνακες εμφάνισης συχνοτήτων του κάθε κώδικα του αλγορίθμου CALFIN παίρνουμε τις παρακάτω γραφικές παραστάσεις 1,2 1 0,8 0,6 Κώδικας 1 Κώδικας 2 0,4 0,2 0 0 1 2 3 4 5 6 Ενώ στην αρχή φαίνεται ότι οι δύο κώδικες είναι διαφορετικοί μεταξύ τους, στο φαίνεται ότι είναι όμοιοι, απλά έχουν διαφορετική σύνταξη. Η εφαρμογή των FIN στην ανίχνευση ομοίων πηγαίων κωδίκων, έχει ακαδημαϊκό ενδιαφέρον γιατί μπορεί να χρησιμοποιηθεί από το εκπαιδευτικό προσωπικό για τυχόν αντιγραφές που μπορεί να έχουν κάνει οι φοιτητές. Να σημειωθεί ότι τα αποτελέσματα της εφαρμογής πότε δεν μπορούν να χρησιμοποιηθούν σαν απόδειξη ότι ένας ή περισσότεροι πηγαίοι κώδικες είναι αντιγραφή μεταξύ τους. Η εφαρμογή έχει περισσότερο ρόλο να λειτουργήσει ως ένα εργαλείο για το εκπαιδευτικό προσωπικό στην ένδειξη πιθανών αντιγραφών. 31

Βιβλιογραφία Ιστότοποι http://plagiarism.org/index.html http://theory.stanford.edu/~aiken/moss/ http://www.canexus.com/eve/ http://www.plagiarism.com/index.htm http://www.turnitin.com/static/index.html http://plagiarism.phys.virginia.edu/ http://en.wikipedia.org/wiki/plagiarism http://www.plagiarismadvice.org/ http://www.csmonitor.com/2006/0511/p14s01-lire.html?s=hns http://www.ics.heacademy.ac.uk/resources/assessment/plagiarism/index.html http://wwwipd.ira.uka.de:2222/ http://theory.stanford.edu/~aiken/moss/ http://www.plagiarism.org/index.html http://www.canexus.com/eve/ http://www.plagiarism.com/index.htm http://plagiarism.phys.virginia.edu/ Άρθα http://iiu.teikav.edu.gr/users/vgkabs/papadakismkt2004.pdf http://iiu.teikav.edu.gr/users/vgkabs/2006kaburlasosp.pdf http://sites.google.com/site/pbelsis/c.15 BCI07.pdf http://pci2007.upatras.gr/proceedings/pci2007_volb/b_255-264_alevizos.pdf http://sites.google.com/site/pbelsis/c.14_c2_733_belsisiceis2007.pdf 32

Εφαρμογές Word 2003 Κειμενογράφος Εργασίας Smart Draw 2010 Δημιουργία Διαγραμμάτων Ροής Excel 2003 Παρουσίαση Γραφικών Παραστάσεων Borland C++ Builder 6 Ανάπτυξη Κώδικα 33