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

Υποχρεωτικό Μάθημα Πυρήνα, Γ’ εξάμηνο, 8 μονάδες ECTS

Διδάσκων: Αναπληρωτής Καθηγητής Γεώργιος Παπαϊωάννου

URL: https://eclass.aueb.gr/courses/INF232/

Περιεχόμενο

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

Μαθησιακά Αποτελέσματα               

Μετά την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές θα είναι σε θέση:

  • Να αναλύουν ένα υπολογιστικό πρόβλημα ή διαδικασία με βάση τις δυνατότητες των γλωσσών C και C++.
  • Να κατανοούν και να γράφουν κώδικα και εκτελέσιμες εφαρμογές σε C και C++, εφαρμόζοντας καλές πρακτικές ανάπτυξης.
  • Να κατανοούν το κόστος εκτέλεσης του παραγόμενου κώδικα μηχανής κατά τη δημιουργία εφαρμογών σε C / C++.
  • Να ελέγχουν και να αποτιμούν την ορθότητα ενός προγράμματος γραμμένου σε C / C++ και να διορθώνουν σφάλματα σε αυτό.
  • Να επεκτείνουν και να βελτιστοποιούν κώδικα γραμμένο σε C++ και να προτείνουν εναλλακτικές υλοποιήσεις κάνοντας χρήση πολυμορφισμού, τελεστών, σχεδιοτύπων κλάσεων και συναρτήσεων.
  • Να συνδυάζουν κώδικα γραμμένο από τους ίδιους/τις ίδιες με κώδικα άλλων για τη δημιουργία μεγάλων εφαρμογών.
  • Να χρησιμοποιούν επαγγελματικά εργαλεία ανάπτυξης εφαρμογών υψηλών επιδόσεων για τη συγγραφή κώδικα.

Προαπαιτούμενα Μαθήματα

Για να εγγραφεί στο μάθημα, ο φοιτητής πρέπει να έχει εξεταστεί επιτυχώς σε προηγούμενο εξάμηνο είτε στο μάθημα «Εισαγωγή στον Προγραμματισμό Υπολογιστών» είτε στο μάθημα «Προγραμματισμός Υπολογιστών με JAVA». Συνιστάται στους φοιτητές να έχουν εξεταστεί επιτυχώς σε προηγούμενο εξάμηνο και στα δύο άνω μαθήματα, καθώς και στο μάθημα «Εισαγωγή στην Επιστήμη των Υπολογιστών».

Συνιστώμενη Βιβλιογραφία

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

Διδακτικές και Μαθησιακές Μέθοδοι

Διαλέξεις (2 διαλέξεις των 2 ωρών εβδομαδιαίως), εργαστήριο μαθήματος (1 εργαστήριο των 2 ωρών εβδομαδιαίως), και 2 ή 3 (εξαρτάται από τη δυσκολία) προγραμματιστικές εργασίες κατ’ οίκον σε ομάδες μέχρι των 2 ατόμων.

Μέθοδοι Αξιολόγησης/Βαθμολόγησης

Ο τελικός βαθμός ισούται με τον βαθμό της γραπτής τελικής εξέτασης (που έχει άριστα το 7), αν αυτός είναι κάτω του 3,5, και, σε διαφορετική περίπτωση, με τον βαθμό της γραπτής τελικής εξέτασης προσαυξημένο μέχρι κατά 3 μονάδες, ανάλογα με την επίδοση στις κατ’ οίκον εργασίες. Η εξέταση των εργασιών κατ’ οίκον γίνεται προφορικά στο εργαστήριο.