Περιεχόμενο Μαθήματος



Δείκτες και δυναμική καταχώριση μνήμης. Αναφορές. Μεταβίβαση παραμέτρων κατά τιμή, μέσω δεικτών, μέσω αναφορών. Συναρτήσεις που επιστρέφουν δείκτες ή αναφορές. Υπερφόρτωση συναρτήσεων. Σχεδιότυπα (templates) συναρτήσεων. Ρεύματα εισόδου και εξόδου. Πολλαπλά αρχεία πηγαίου κώδικα, αρχεία κεφαλίδας, αντικειμενικός και εκτελέσιμος κώδικας. Χώροι ονομάτων. Κλάσεις και δυναμική καταχώριση μνήμης, κατασκευαστές αντιγράφου, καταστροφείς. Υπερφόρτωση τελεστών. Κληρονομικότητα, εικονικές και μη εικονικές μέθοδοι, πολυμορφισμός, αφηρημένες κλάσεις. Σχεδιότυπα κλάσεων. Υλοποίηση απλών δομών δεδομένων με σχεδιότυπα κλάσεων, δείκτες και δυναμική καταχώριση μνήμης. Στοιχεία των καθιερωμένων βιβλιοθηκών της C++. Εξαιρέσεις. Κυριότερες διαφορές της C από τη C++.

Ανθρώπινο Δυναμικό



Διδάσκων:

  • Γεώργιος Παπαϊωάννου (http://www.aueb.gr/users/gepap/). Ώρες γραφείου: Δευτέρα 16:00-18:00, Πέμπτη 11:00-13:00. 

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

  • Σπήλιος Σπηλιόπουλος (spilios [at] aueb.gr). Ώρες γραφείου: ΔΕΥΤΕΡΑ: 11.00-13.00 & ΤΕΤΑΡΤΗ: 15.00-17.00 (Κοδριγκτώνος 12, 4ος όρ., τηλ: 210-8203.494)
  • Νικόλαος Βίτσας (vitsas [at] aueb.gr)

Βοηθήματα



Προτεινόμενα βιβλία:

  • Deitel, H.M. και Deitel, P.J., «C++ Προγραμματισμός», 9η έκδοση, Εκδόσεις Μ. Γκιούρδας, 2010.
  • Liberty, J. και Jones,B., «Πλήρες Εγχειρίδιο της C++», 5η έκδοση, Εκδόσεις Μ. Γκιούρδας, 2006.
  • Schildt, H., «Μάθετε τη C++ από το Μηδέν», 3η έκδοση, Κλειδάριθμος, 2004.
  • Schildt, H., «C++ Βήμα προς Βήμα», 2η έκδοση, Εκδόσεις Μ. Γκιούρδας, 2005.

Μέθοδοι διδασκαλίας

Μέθοδοι διδασκαλίας

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

Τρόποι αξιολόγησης / εξέτασης



Η εξέταση του μαθήματος γίνεται α) με γραπτή ηλεκτρονική εξέταση στο τέλος του εξαμήνου, β) με παράδοση και εξέταση προγραμματιστικής εργασίας. 

Οι προγραμματιστική εργασία βαθμολογείται από τους βοηθούς του μαθήματος και η διαδικασία περιλαμβάνει σύντομη ατομική προφορική εξέταση. Οι προγραμματιστικές εργασίες είναι υποχρεωτικές και ο βαθμός τους αποτελεί το 40% του τελικού βαθμού, με το βαθμό των γραπτών εξετάσεων να αποτελεί το υπόλοιπο 60%. Αν, όμως, ο βαθμός των γραπτών εξετάσεων είναι μικρότερος του 2.5/6.0, οι βαθμοί των εργασιών δεν προσμετρώνται και ο τελικός βαθμός ισούται με το βαθμό των γραπτών εξετάσεων.

Σε ότι αφορά στις εργασίες, ισχύουν τα ακόλουθα:

Οι φοιτητές που παρέδωσαν τις εργασίες του έτους 2013-14 και μετά, δικαιούνται να κρατήσουν το βαθμό των εργασιών, προσαρμοσμένο ανάλογα με την παλαιότητα της εργασίας και με συντελεστή που αντιστοιχίζει το μέγιστο βαθμό των εργασιών κατά το έτος παράδοσης στο τρέχον βαθμολογικό σύστημα. Το ίδιο δεν ισχύει για τις παλαιότερες εργασίες, οι οποίες δεν προσμετρώνται.

Από το ακαδημαϊκό έτος 2018-19 ισχύει το μοντέλο "εξασθένησης" των παλαιότερων βαθμών σύμφωνα με τον τύπο που ακολουθεί στο παρακάτω σχήμα. Αυτό σημαίνει ότι οι βαθμοί των εργασιών όπως αυτές βαθμολογούνται κατά την εξέτασή τους ισχύουν μόνο για το τρέχον ακαδημαϊκό έτος. Στα επόμενα έτη, ναι μεν ο βαθμός δεν καταργείται, αλλά σταδιακά μετράει ολοένα και λιγότερο στη συνολική βαθμολογία.  

 

Στον παραπάνω τύπο, y_c είναι η τρέχουσα ακαδημαϊκή χρονιά που διενεργείται η εξέταση (π.χ. εξεταστική Φεβ 2019 ή Σεπ 2019 --> 2019) και y_d είναι το έτος που παραδόθηκαν οι εργασίες (π.χ. 2017-18 --> 2018).

Για παράδειγμα, αν ένας φοιτητής παρέδωσε εργασίες το ακαδημαϊκό έτος 2019-20 και έχει πάρει συνολικό βαθμό εργασιών 2.0, αν εξεταστεί γραπτά το Φεβρουάριο 2021 (δηλαδή κατά το ακαδημαϊκό έτος 2020-21), ο βαθμός του θα προσαρμοστεί σε: 0.8 * 2.0 = 1.6. Και επειδή ο μέγιστος βαθμός το ακαδ. έτος 2019-20 ήταν 3 ενώ το 2020-21 είναι 4, ο τελικός βαθμός της εργασίας γίνεται 1.6 Χ 4/3 = 2.14/4.0. 

 

Συμπληρωματικά Στοιχεία



Το μάθημα απευθύνεται σε φοιτητές που έχουν παρακολουθήσει επιτυχώς τα μαθήματα Εισαγωγή στον Προγραμματισμό Υπολογιστών (1ου εξαμήνου) και Προγραμματισμός Υπολογιστών με Java (2ου εξαμήνου). Μηχανισμοί που είναι κοινοί στην Java και τη C++ θεωρούνται γνωστοί.

Ένα μέρος του μαθήματος εξετάζει πώς μπορούν να υλοποιηθούν σε C++ δομές δεδομένων, σε χαμηλότερο επίπεδο από ό,τι στο μάθημα των Δομών Δεδομένων (3ου εξαμήνου), όπου χρησιμοποιείται Java και το οποίο θεωρείται ότι οι φοιτητές παρακολουθούν παράλληλα.