Γενικά

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

Καθηγητής

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

Το design competition έχει ανοίξει!

Διαλέξεις

Πρόγραμμα
  • Δευτέρα & Τετάρτη, 15:00-17:00, στο Αμφιθέατρο
  • Ζωντανή μετάδοση και καταγραφή στο delos
    • Οι μεταδόσεις που έγιναν στο webex το διάστημα που το τμήμα ήταν κλειστό δεν καταγράφηκαν, το βασικό υλικό του μαθήματος για το διάστημα αυτό είναι οι αντίστοιχες διαλέξεις στο YouTube (οι οποίες είναι πολύ καλύτερης ποιότητας).
Εισαγωγή & τεχνικές αποδοτικού προγραμματισμού
Εισαγωγήhtml  pdf  4up  youtube
Modules, Makefiles, Editors, Githtml  pdf  4up  youtube
Recap: memory allocation, pointers, structs, typedefshtml  pdf  4up  youtube  [2]
Code style, Naming convensions, Testshtml  pdf  4up  youtube
Αφηρημένοι Τύποι Δεδομένων και εφαρμογές
Εισαγωγή στους Αφηρημένους Τύπους Δεδομένωνhtml  pdf  4up  youtube
Vectors, Λίστες, Στοίβες, Ουρέςhtml  pdf  4up  youtube
Ουρές προτεραιότητας, Maps, Σύνολαhtml  pdf  4up  youtube
Φροντιστήριο
Δομές δεδομένων
Εισαγωγή την υλοποίηση ΑΤΔ, Συνδεδεμένες λίστες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  youtube  [2]
Δέντρα αναζήτησης m δρόμων, δέντρα 2-3, δέντρα 2-3-4html  pdf  4up  youtube
B-δέντραhtml  pdf  4up  youtube
Κατακερματισμόςhtml  pdf  4up  youtube  [2]  [3]
Γράφοιhtml  pdf  4up  youtube  [2]  [3]
Γράφοι με βάρηhtml  pdf  4up  youtube  [2]
Visualizations
  • Σε διαφάνειες που περιέχουν visualizations, μπορείτε να τα εκτελείτε βήμα-βήμα πατώντας space
  • Interactive εκδόσεις υπάρχουν εδώ (και για πολλές ακόμα δομές)

Εργαστήρια

Πρόγραμμα
  • Ένα εισαγωγικό εργαστήριο, χωρίς βαθμολόγηση.
  • 5 εργαστήρια με ασκήσεις που πρέπει να λύσετε και να παραδώσετε μέσω github.
    • Οι ασκήσεις μπορούν να λυθούν μέσα στο 2ωρο του εργαστηρίου, αλλά μπορείτε να τις παραδώσετε και αργότερα, μέχρι και το τέλος της επόμενη εβδομάδας από το εργαστήριο (ακριβείς ημερομηνίες στις εκφωνήσεις των εργαστηρίων).
    • Οι παρουσίες είναι υποχρεωτικές μόνο για τους πρωτοετείς, αλλά όλοι πρέπει να υποβάλλουν τις ασκήσεις μέσα στην προθεσμία.
  • Πέμπτη & Παρασκευή, 9:00-11:00 & 11:00-13:00 ανά 2 εβδομάδες (8 τμήματα).
Θέματα Εργαστηρίων

Εργασίες

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

Κώδικας

Εργαλεία

Στο μάθημα χρησιμοποιείται ο 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….)

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

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

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

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