Εισαγωγή στον αντικειμενοστρεφή προγραμματισμό. Η γλώσσα προγραμματισμού Java, ομοιότητες και διαφορές με τη γλώσσα C. Τύποι μεταβλητών. Τελεστές. Βρόχοι. Διακλαδώσεις. Κλάσεις και αντικείμενα. Μέθοδοι. Υπερφόρτωση μεθόδων. Δημιουργοί. Ενθυλάκωση. Τυπικές μέθοδοι. Αναφορές. Πίνακες. Κληρονομικότητα. Αφηρημένες κλάσεις και μέθοδοι. Διεπαφές. Πολυμορφισμός. Πρότυπα σχεδίασης. Κατασκευή και χρήση πακέτων (βιβλιοθηκών). Κατασκευή τεκμηρίωσης. Ολοκληρωμένα περιβάλλοντα ανάπτυξης εφαρμογών. Γενικευμένες κλάσεις και μέθοδοι. Λίστες. Εσωτερικές κλάσεις. Εξαιρέσεις. Αρχεία. Γραφικές διεπαφές χρήστη. Μικροεφαρμογές. Πολυνηματισμός. Ανάπτυξη ολοκληρωμένων εφαρμογών με αξιοποίηση εξωτερικών πακέτων. Άλλες γλώσσες αντικειμενοστρεφούς προγραμματισμού, π.χ., C++, C#. Εφαρμογές Android.
Στόχος του μαθήματος είναι η εξοικείωση των φοιτητών με τις έννοιες του αντικειμενοστρεφούς προγραμματισμού, και η παροχή θεωρητικής και πρακτικής γνώσης αναφορικά με μεθόδους και εργαλεία που χρησιμοποιούνται για την ανάπτυξη αντικειμενοστρεφώς σχεδιασμένου επαναχρησιμοποιήσιμου και επεκτάσιμου λογισμικού. Το μάθημα έχει τόσο θεωρητικές όσο και πρακτικές συνιστώσες. Οι φοιτητές έχουν την ευκαιρία να γνωρίσουν τεχνικές αντικειμενοστρεφους σχεδιασμού και ανάπτυξης λογισμικού, και πολλά παραδείγματα με τη χρήση γλωσσών αντικειμενοστρεφούς προγραμματισμού όπως C++ και Java.
Με την επιτυχή ολοκλήρωση του μαθήματος οι φοιτητές θα πρέπει να είναι σε θέση να: