Section outline

  • Καλωσήλθατε στη σελίδα του μαθήματος Προγραμματιστικές Τεχνικές (2ο εξ. κορμού) της Σχολής Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Εθνικού Μετσοβίου Πολυτεχνείου για το ακαδημαϊκό έτος 2024-25.

    • Εδώ αναρτώνται οι γενικές ανακοινώσεις από τους διδάσκοντες προς τους εγγεγραμμένους φοιτητές, οι οποίοι τις λαμβάνουν και στην ηλεκτρονική τους διεύθυνση.

    • Στο forum του μαθήματος μπορείτε να υποβάλετε ερωτήσεις σχετικές με την ύλη του μαθήματος (π.χ. απορίες στη θεωρία και τις εργαστηριακές ασκήσεις). Μερικές καλές πρακτικές χρήσης του forum:

      • Πριν υποβάλετε το ερώτημά σας, κάντε μια μικρή αναζήτηση στο διαδίκτυο, μπορεί να υπάρχει προφανής απάντηση.
      • Παρά τη χρήση του όρου "forum", μην απαντάτε σε ερωτήματα συναδέλφων σας, θα το κάνουν οι διδάσκοντες.
      • Δεν στέλνουμε κώδικα από εργασίες σε εξέλιξη.
      • Καταβάλετε προσπάθεια το ερώτημά σας να είναι συνοπτικό και καθαρά διατυπωμένο.
      • Για γενική συζήτηση και ερωτήματα σε θέματα που άπτονται γενικότερα του μαθήματος μπορείτε να χρησιμοποιείτε και αυτό το forum για Ερωτήσεις και Απαντήσεις (Q&A)

  • Για να επικοινωνήσετε με τους διδάσκοντες, στείλτε mail στο progtech@courses.softlab.ntua.gr.

    Παρακαλούμε, μη στέλνετε προσωπικά μηνύματα, ούτε μηνύματα μέσω του Helios!

    • Ώρες γραφείου
      • Βασίλης Βεσκούκης: Δευτέρα και Πέμπτη 09:00-10:00, στο Εργαστήριο Τεχνολογίας Λογισμικού, 1.1.25, (Παλαιό) Κτήριο Ηλεκτρολόγων.
      • Νίκος Παπασπύρου: Παρασκευή 12:00-13:00, στο Εργαστήριο Τεχνολογίας Λογισμικού, 1.1.25, (Παλαιό) Κτήριο Ηλεκτρολόγων.
      • Άρης Παγουρτζής: θα ανακοινωθεί.
      • Νίκος Λεονάρδος: θα ανακοινωθεί.
      • Πέτρος Ποτίκας: θα ανακοινωθεί, στο γραφείο 1.1.30, (Παλαιό) Κτήριο Ηλεκτρολόγων.
      • Γιώργος Σιόλας: θα ανακοινωθεί.
      • Σωτήρης Κοκόσης: θα ανακοινωθεί.
    • Γενικές Πληροφορίες
      • Περιγραφή του μαθήματος, πρόγραμμα εργαστηρίου και διαδικαστικά θέματα:
      • Οι διαλέξεις του μαθήματος γίνονται κάθε Παρασκευή, 13:45 - 16:30, στα Αμφιθέατρα 1 και 3, στο Νέο Κτήριο της Σχολής ΗΜΜΥ.
      • Το εργαστήριο του μαθήματος γίνεται στα PCLAB, στον 1ο όροφο του Νέου Κτηρίου της Σχολής ΗΜΜΥ. Κάθε φοιτητής παρακολουθεί 2 ώρες εργαστηρίου κάθε εβδομάδα.  
      • Ιστοσελίδα ερωτήσεων και απαντήσεων σχετικά με το μάθημα και το εργαστήριο του ακαδ. έτους 2020-2021 (κατηγορία progtech).
      • Βιντεοσκοπημένες διαλέξεις του ακαδημαϊκού έτους 2020-2021.
    • Ύλη

      Εισαγωγή στον αντικειμενοστρεφή προγραμματισμό και τις δομές δεδομένων με τη γλώσσα προγραμματισμού C++. Κλάσεις και αντικείμενα, πεδία και μέθοδοι, κατασκευαστές και καταστροφείς, κληρονομικότητα, κανόνες προσπέλασης, επισκίαση μεθόδων, πολυμορφισμός, εικονικές μέθοδοι, υπερφόρτωση τελεστών, υπερφόρτωση συναρτήσεων και μεθόδων, function και class templates, εξαιρέσεις. Αφηρημένοι τύποι δεδομένων, ιεραρχίες κλάσεων, σχεδιαστικά πρότυπα. Η βιβλιοθήκη STL, περιέκτες (containers) και επαναλήπτες (iterators). Σχεδίαση και υλοποίηση δομών δεδομένων. Πίνακες ως αφηρημένοι τύποι δεδομένων. Συνδεδεμένες λίστες: απλά και διπλά συνδεδεμένες λίστες, στοίβες, ουρές, κυκλικές λίστες, ταξινομημένες λίστες. Ουρές προτεραιότητας: σωροί, δυαδικοί σωροί, ταξινόμηση με σωρό. Δένδρα: αναπαράσταση και διάσχιση, δυαδικά δένδρα, δυαδικά δένδρα αναζήτησης, ισοζυγισμένα δένδρα, δένδρα AVL, red-black trees, splay trees, δένδρα αναζήτησης m-οδεύσεων, Β-δένδρα. Γράφοι: αναπαράσταση και διάσχιση (κατά βάθος, κατά πλάτος), εντοπισμός κύκλων, μονοπάτια και κύκλοι Euler, τοπολογική ταξινόμηση, διαχείριση συνεκτικών συνιστωσών, union-find. Κατακερματισμός: συναρτήσεις και πίνακες κατακερματισμού, ανοιχτή και κλειστή διευθυνσιοδότηση.

      Εργαστήριο: Μια σειρά προβλημάτων που θα λυθούν σε C++.

    • Ιστοσελίδες Παλαιοτέρων Ετών

      Links στην ιστοσελίδα του μαθήματος για τα ακαδημαϊκά έτη: 2023-24, 2022-232021-22.

    • Διάλεξη 1 — 14/2
      • Θέματα διεξαγωγής του μαθήματος και του εργαστηρίου
      • Σκοπός του μαθήματος και εισαγωγή
      • Σύντομη επανάληψη ύλης του 1ου εξαμήνου
      • Ξεχωριστή μεταγλώττιση
      • Αναφορές και δείκτες
      • Χώροι ονομάτων

    • Διάλεξη 2 — 21/2
      • Αντικειμενοστρεφής σχεδίαση και προγραμματισμός
        • Προσδιοριστές ορατότητας
        • Κατασκευαστές, καταστροφείς
        • Μέθοδοι getter / setter
        • Φίλες συναρτήσεις
        • Υπερφόρτωση συναρτήσεων, μεθόδων και τελεστών
        • Μέθοδοι const
        • Στατικά πεδία και μέθοδοι

    • Διάλεξη 3 — 28/2*
      • C++ templates
        • Function templates
        • Class templates
      • Κληρονομικότητα
        • Απλή κληρονομικότητα
        • Ορατότητα πεδίων

    • Διάλεξη 4 — 7/3*
      • Κληρονομικότητα (συνέχεια)
        • Πολλαπλή κληρονομικότητα
        • Επισκίαση μεθόδων
        • Εικονικές μέθοδοι
        • Πολυμορφισμός
        • Αφηρημένες μέθοδοι και κλάσεις
        • Εικονικές κλάσεις
      • Εξαιρέσεις

    • Διάλεξη 5 — 15/3
      • Πίνακες ως αφηρημένοι τύποι δεδομένων
        • Γενικά
        • Πίνακες συγκεκριμένης μορφής (τριγωνικοί, συμμετρικοί, κ.λπ.)
        • Αραιοί πίνακες
        • Υλοποίηση μονοδιάστατων πινάκων
        • Υλοποίηση διδιάστατων πινάκων
      • Εισαγωγή στην STL
        • Γενικά
        • Συμβολοσειρές (string)
        • Απλοί containers: array

    • Διάλεξη 6 — 21/3
      • Εισαγωγή στην STL (επανάληψη και συνέχεια)
        • Απλοί containers: array, vector
        • Iterators
        • Περισσότεροι containers και adapters: list, stack, queue
        • Ζεύγη και πλειάδες
        • Σύνολα: set, multiset
        • Χάρτες: map, multimap
        • Memoization
        • Χρήσιμοι αλγόριθμοι: αναζήτηση, ταξινόμηση, κ.λπ.

    • Διάλεξη 7 — 28/3
      • Εισαγωγή στην STL (ολοκλήρωση και παραδείγματα)
        • Αλγόριθμοι στην STL
        • Function objects
        • Παράδειγμα 1 STL: phonetic alphabet
        • Παράδειγμα 2 STL: διαγωνισμοί προμηθειών 
        • Παράδειγμα 3 STL: αγορά ηλεκτρικής ενέργειας

    • Διάλεξη 8 — 4/4
      • Δένδρα
        • Γενικά δένδρα
        • Διάσχιση κατά βάθος και κατά πλάτος
        • Δυαδικά δένδρα αναζήτησης
        • Δένδρα AVL
        • Υλοποίηση γενικών, δυαδικών και AVL δένδρων
        • Δένδρα πολλαπλών οδεύσεων
        • Δένδρα 2-3
        • Β-δένδρα