Γενικά

K08 - Εαρινό εξάμηνο 2020-21 - Τμήμα περιττών ΑΜ

Καθηγητής

Βαθμολογία
  • Εργαστήριο: 12%
  • Εργασίες: 48%
    • Στις εργασίες 1 & 2 απαιτείται βάση (50% μέσος όρος) για να δώσετε τελική εξέταση.
    • Οι βαθμοί σε εργαστήριο και εργασίες ισχύουν για την εξεταστική του Σεπτεμβρίου της ίδιας χρονιάς, αλλά όχι για τις επόμενες χρονίες.
    • Προφορική εξέταση για εργαστήριο & εργασίες στο τέλος.
  • Τελική εξέταση: 40%
    • Απαιτείται βάση (50%) για να περάσετε το μάθημα.
Forum για συζητήσεις και ανακοινώσεις (piazza)
  • Είσοδος (εγγραφή με το @di.uoa.gr email σας αυστηρά)
  • Η εγγραφή είναι υποχρεωτική, όλες οι ανακοινώσεις θα γίνονται στο piazza!
Νέα
  • Το design competition έχει ανοίξει. Δοκιμάστε τα παιχνίδια και ψηφίστε το καλύτερο!

Διαλέξεις

  • Δευτέρα & Τετάρτη, 15:00-17:00

  • Ταυτόχρονη μετάδοση

    • YouTube (επικοινωνία μέσω chat), με καταγραφή
    • Jitsi (επικοινωνία μέσω μικροφώνου, password: ilovesegfaults)

    Επιλέξτε ό,τι προτιμάτε (αν τα έχετε και τα δύο ανοικτά, οπωσδήποτε κάντε mute το YouTube).

Εισαγωγή & τεχνικές αποδοτικού προγραμματισμού
Εισαγωγήhtml  pdf  4up  youtube
Modules, Makefiles, Editors, Githtml  pdf  4up  youtube
Recap: memory allocation, pointers, structs, typedefshtml  pdf  4up  youtube
Code style, Naming convensions, Testshtml  pdf  4up  youtube
Αφηρημένοι Τύποι Δεδομένων και εφαρμογές
Εισαγωγή στους Αφηρημένους Τύπους Δεδομένωνhtml  pdf  4up  youtube
Vectors, Λίστες, Στοίβες, Ουρέςhtml  pdf  4up  youtube
Ουρές προτεραιότητας, Maps, Σύνολαhtml  pdf  4up  youtube
Φροντιστήριο 1 - Game of Lifeyoutube
Φροντιστήριο 2 - Game of Life & IPLyoutube
Δομές δεδομένων
Εισαγωγή την υλοποίηση ΑΤΔ, Συνδεδεμένες λίστεςyoutube
Ανάλυση αλγορίθμων, πολυπλοκότηταhtml  pdf  4up  youtube
Δυναμικοί Πίνακεςhtml  pdf  4up  youtube  [2]
Εξαρτημένες Δομέςyoutube
Δέντρα, σωροίhtml  pdf  4up  youtube  [2]
Δυαδικά δέντρα αναζήτησηςhtml  pdf  4up  youtube  [2]
AVL δέντραhtml  pdf  4up
Δέντρα αναζήτησης m δρόμων, δέντρα 2-3, δέντρα 2-3-4html  pdf  4up
B-δέντραhtml  pdf  4up
Κατακερματισμόςhtml  pdf  4up
Γράφοιhtml  pdf  4up
Γράφοι με βάρηhtml  pdf  4up
Visualizations
  • Σε διαφάνειες που περιέχουν visualizations, μπορείτε να τα εκτελείτε βήμα-βήμα πατώντας space
  • Interactive εκδόσεις υπάρχουν εδώ (και για πολλές ακόμα δομές)

Εργαστήρια

Πρόγραμμα
  • 5 βασικά εργαστήρια, με ασκήσεις που πρέπει να λύσετε και να παραδώσετε μέσω github.

    • Πέμπτη & Παρασκευή, 9:00-11:00 & 11:00-13:00 (4 ομάδες).
    • Ημερομηνίες: 4-5/3, 18-19/3, 1-2/4, 15-16/4, 13-14/5.
    • Γραφτείτε στην ομάδα που σας βολεύει (πριν συμπληρωθεί).
    • Οι ασκήσεις μπορούν να λυθούν μέσα στο 2ωρο του εργαστηρίου, αλλά μπορείτε να τις παραδώσετε και αργότερα, μέχρι και το τέλος της επόμενη εβδομάδας από το εργαστήριο (ακριβείς ημερομηνίες στις εκφωνήσεις των εργαστηρίων).
    • Οι παρουσία είναι υποχρεωτική μόνο για τους πρωτοετείς, αλλά όλοι πρέπει να υποβάλλουν τις ασκήσεις μέσα στην προθεσμία.
  • 7 βοηθητικά εργαστήρια για τις εργασίες του μαθήματος, τη χρήση των εργαλείων, κλπ.

    • Παρασκευή 10:00-13:00 (τις εβδομάδες που δεν υπάρχουν βασικά εργαστήρια).
    • Μπορείτε να χρησιμοποιήσετε τις 3 ώρες του εργαστηρίου για να προχωρήσετε την αντίστοιχη εργασία, υπό την καθοδήγηση των διδασκόντων και βοηθών.
Θέματα Εργαστηρίων

Εργασίες

Διαβάσετε προσεκτικά τις οδηγίες (κοινές για όλες τις εργασίες).

Κώδικας

Εργαλεία

Στο μάθημα χρησιμοποιείται ο editor VS Code (χωρίς να απαγορεύεται η χρήση άλλων editors), καθώς και τα εργαλεία gcc, make, git και valgrind.

Σημείωση: το c_programs directory που δημιουργείται όταν εκτελέσετε τις οδηγίες αφορά την Εισαγωγή στον Προγραμματισμό και δεν χρησιμοποιείται στο μάθημα.

Sample Project

Παράδειγμα δομής ενός C project, για χρήση στις πρώτες 2 ενότητες του μαθήματος. Επιδεικνύει modules, Makefiles και tests, καθώς και τη χρήση των ADTs που διδάσκονται στο μάθημα.

Για να το χρησιμοποιήσετε:

  • Κάντε clone το sample-project μέσω git (διαφάνειες) στον υπολογιστή σας.

    (Το project είναι αυτόνομο, μην το βάλετε μέσα σε κάποιο άλλο, πχ στο c_programs.)

  • Aνοίξτε το sample-project directory από το VS Code : File / Open Folder / <sample-project>.

  • Kάντε compile με Ctrl-Shift-B (διαφάνειες) ή τρέχοντας make στο αντίστοιχο directory.

Κώδικας διαλέξεων

Ο βασικός κώδικας που χρησιμοποιείται στις διαλέξεις της τρίτης ενότητας του μαθήματος. Περιέχει υλοποιήσεις από όλους τους ADTs που διδάσκονται στο μάθημα.

Βιβλιογραφία

Η βασική ύλη του μαθήματος περιλαμβάνεται στις διαφάνειες των διαλέξεων και τον κώδικα που διδάσκεται στο μάθημα. Τα παρακάτω βασικά συγγράμματα χρησιμοποιούνται βοηθητικά στο μάθημα.

Βασικά συγγράμματα

  • Robert Sedgewick: Αλγόριθμοι σε C, Εκδόσεις Κλειδάριθμος, 2006. [Εύδοξος]

  • Thomas A. Standish: Data Structures, Algorithms and Software Principles in C, Addison-Wesley. 1995.

Πλήρης λίστα προτεινόμενων συγγραμμάτων στην υπηρεσία Εύδοξος

  • Robert Sedgewick: Αλγόριθμοι σε C, Εκδόσεις Κλειδάριθμος, 2006. [Εύδοξος] (προτεινόμενο)

  • Michael T. Goodrich, Roberto Tamassia: Δομές Δεδομένων & Αλγόριθμοι σε JAVA, Εκδόσεις Δίαυλος, 2013. [Εύδοξος]

  • Bruno R. Preiss: Δομές Δεδομένων και Αλγόριθμοι με Αντικειμενοστρεφή Σχεδιαστικά Μορφήματα στη C++, Εκδόσεις Πεδίο, 2016. [Εύδοξος]

  • Ν. Μισυρλής: Δομές Δεδομένων με C. [Εύδοξος]

Άλλα βιβλία διαθέσιμα online

  • Kyle Loudon, Mastering Algorithms with C, O'Reilly, 1999. [pdf]

  • Clifford A. Shaffer: Data Structures and Algorithm Analysis, Dover, 2013. [pdf]

Team

Καθηγητής

Υπεύθυνος εργαστηρίων

  • Σαράντης Πασκαλής (paskalis@di….)

Μεταπτυχιακοί συνεργάτες

  • Ηλίας Αλεβίζος
  • Πάρις Λάφτσης-Σκρέτας
  • Μανώλης Παπιομύτογλου

Προπτυχιακοί συνεργάτες

  • Δημήτρης Βερλέκης
  • Νίκος Γαλάνης
  • Κωνσταντίνος Γεωργίου
  • Βαγγέλης Δανιάς
  • Ιωάννης Δραβίλας
  • Ιωάννης Ζαπάντης
  • Σέργιος-Ανέστης Κεφαλίδης
  • Άγγελος Κορακίτης
  • Χρήστος Λασπιάς
  • Άκης Λιονής
  • Χάρης Μαραζιάρης
  • Κώστας Μαυρόγαλος
  • Βησσαρίων Μουτάφης
  • Μιχαήλ Μπακαλιάνος
  • Ιωάννα Οικονόμου
  • Δημήτρης Ράμμος
  • Μαρία Σκευοφύλακα
  • Γιώργος Σίττας
  • Σοφοκλής Στρόμπολας
  • Βασιλική Τσαντήλα
  • Στέλλα Φραγκιαδάκη
  • Σπύρος Χαλκιάς

Προηγούμενα Έτη

Διαλέξεις και εργασίες περασμένων ετών