Πληροφορική II (MATH211)

Μιχάλης Δρακόπουλος

Περιγραφή

Αντικειμενοστραφής προγραμματισμός με Java

Object Oriented Programming with Java

CC - Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή
Περιεχόμενο μαθήματος

  • Βασικά στοιχεία της Java (σύνταξη, πρωτογενείς τύποι δεδομένων, τελεστές, ροή ελέγχου, λογικές σχέσεις, συγκρίσεις, μετατροπές τύπων).
  • Κλάσεις, τύποι μεθόδων, κατασκευαστές, αντικείμενα.
  • Πακέτα.
  • Κληρονομικότητα και άλλες βασικές αρχές αντικειμενοστραφούς προγραμματισμού.
  • Στατικές δομές δεδομένων.
  • Δυναμικές δομές δεδομένων.
  • Χειρισμός εξαιρέσεων.
  • Ροές και είσοδος/έξοδος αρχείων.
  • Παραθυρικά περιβάλλοντα.
  • Applets.
Μαθησιακοί στόχοι

Το μάθημα έχει 4 ώρες θεωρία και ένα 2ωρο εργαστήριο (προαιρετικό) την εβδομάδα.

Υπάρχουν 2 τμήματα θεωρίας και 4 τμήματα εργαστηρίων.

Η επιλογή τμήματος θα γίνει μέσω της eclass (Ομάδες Χρηστών). Όσοι ενδιαφέρονται να παρακολουθήσουν τα εργαστήρια πρέπει να εγγραφούν στην Ομάδα Χρηστών του τμήματος που επιθυμούν, με την προϋπόθεση ότι θα υπάρχουν κενές θέσεις.

Πληροφορίες για τα Εργαστήρια

Τα εργαστήρια του μαθήματος "Πληροφορική ΙΙ" είναι προαιρετικά και μπορούν να τα παρακολουθήσουν και να βαθμολογηθούν σε αυτά όλοι οι φοιτητές, ανεξαρτήτως έτους φοίτησης, με βάση τις προϋποθέσεις που περιγράφονται παρακάτω.

Στόχος των εργαστηρίων

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

Πρόγραμμα εργαστηρίων

Τα εργαστήρια είναι εβδομαδιαία (2 ώρες την εβδομάδα ανά τμήμα). Σκοπός είναι να πραγματοποιηθούν 8-10 εργαστήρια όλο το εξάμηνο.

Βιβλιογραφία

  1. W. Savitch. Απόλυτη Java. Εκδόσεις Ίων, 2008.
  2. T. Gaddis. Ξεκινώντας με την Python. Εκδόσεις Da Vinci, 2015.
Μέθοδοι διδασκαλίας

  • Διδασκαλία καθ΄ έδρας και συμπληρωματική-ενισχυτική εκπαίδευση μέσω ασύγχρονης πλατφόρμας.
  • Εργαστήριο.
Μέθοδοι αξιολόγησης

Εξετάσεις Βαθμολογία των εργαστηρίων και τελική βαθμολόγηση του μαθήματος

Ο βαθμός του εργαστηρίου θα δοθεί με βάση την τελική εξέταση που θα πραγματοποιηθεί στο εργαστήριο την τελευταία εβδομάδα των μαθημάτων. Ο βαθμός θα είναι στην κλίμακα 0-2 και θα μετράει μόνο εάν αυξάνει τον τελικό βαθμό και μόνο για όσους γράψουν στην εξέταση του μαθήματος βαθμό μεγαλύτερο ή ίσο του 5.

Δικαίωμα στην τελική εξέταση του εργαστηρίου έχουν όσοι συμπληρώσουν παρουσία πάνω από 70% στο σύνολο των εργαστηρίων που θα πραγματοποιηθούν.

Δηλαδή, αν:

exam : ο βαθμός του γραπτού (0-10)

lab : ο βαθμός του εργαστηρίου (0-2)

final : ο τελικός βαθμός του μαθήματος (0-10)

totalLabs: συνολικός αριθμός εργαστηρίων που θα γίνουν στη διάρκεια του εξαμήνου

parousies: σύνολο εργαστηρίων που παρακολουθήσατε.

Τότε:

if (exam >= 5 && parousies/totalLabs >= 0.7)

    final = Math.min(Math.max(exam, 0.85*exam+lab), 10);

else

    final = exam;

Προαπαιτούμενα

Προετοιμασία για τα εργαστήρια:

Ο τρόπος διεξαγωγής των εργαστηρίων διαφέρει αρκετά από αυτόν των εργαστηρίων του μαθήματος "Πληροφορική Ι". Βασικός στόχος δεν είναι πλέον η αλγοριθμική επίλυση μαθηματικών προβλημάτων, αλλά ο σωστός προγραμματισμός και η αντικειμενοστραφής προσέγγιση στην επίλυση πιο ολοκληρωμένων προβλημάτων, με χρήση της Java. Έμφαση δίνεται όχι τόσο στην κατασκευή του όσο το δυνατόν αποδοτικότερου αλγόριθμου, αλλά στη σωστή χρήση των δυνατοτήτων της συγκεκριμένης γλώσσας προγραμματισμού.

Διδάσκοντες

Δρακόπουλος Μιχάλης

Επίκουρος Καθηγητής

Ερευνητικά Ενδιαφέροντα : Υπολογιστική Επιστήμη, Παράλληλη Επεξεργασία, Πεπερασμένα Στοιχεία, Αριθμητική Βελτιστοποίηση.

e-mail : mdraco@math.uoa.gr

 

Προσωπική Ιστοσελίδα:

http://users.uoa.gr/~mdraco/

 

Michael C. Dracopoulos 

Dept. of Mathematics, University of Athens

Panepistimioupolis, 157 84 Athens, Greece

e-mail : mdraco@math.uoa.gr

Background

  • Diploma in Civil Engineering, National Technical University of Athens, 1989.
  • PhD (Computational Mathematics/Mechanics), Imperial College, London, 1993.
  • ERCIM Fellow at RAL, Oxon and CWI, Amsterdam, 1993--1994.
  • Research Officer, Oxford University Computing Laboratory, 1994--1997.
  • Lecturer, Dept. of Mathematics, University of Athens, 1999--2003.
  • Assistant Professor, Dept. of Mathematics, University of Athens, 2003--present.

Research

Scientific and parallel computing, numerical analysis, finite elements, numerical optimization, simulation and modelling.

Publications

Teaching

  • Computer Science I (UG, Fall Term)
  • Computational Mathematics I (PG, Fall Term)
  • Computer Science II (UG, Spring Term)
  • Computational Science and Technology (PG, Spring Term)

Publications

http://users.uoa.gr/~mdraco/publications.html

Ομάδα στόχος

Προπτυχιακοί φοιτητές του τμήματος Μαθηματικών.

Undergraduate students of University of Athens Department of Mathematics

Προτεινόμενα συγγράμματα

Βοηθήματα:

  •  W. Savitch. Απόλυτη Java. Εκδόσεις Ίων, 2008.
  • T. Gaddis. Ξεκινώντας με την Python. Εκδόσεις Da Vinci, 2015.
  • Bruce Eckel "Thinking in Java", 3rd ed.
    Προχωρημένο βιβλίο Java.
  • H. Winston και S. Narasimhan, "On To Java"
  • The Java Tutorials
    Πιο σημαντικά για το μάθημα τα Getting Started και Learning the Java Language
Περισσότερα

Απαιτήσεις μαθήματος

Για να επιτευχθούν οι στόχοι αυτοί, τα προγραμματιστικά προβλήματα που θα απασχολήσουν τα εργαστήρια είναι πιο σύνθετα από αυτά της Πληροφορικής Ι. Για να είναι δυνατή η επίλυσή τους μέσα στο πλαίσιο ενός εργαστηριακού μαθήματος, είναι απαραίτητη η γνώση του φυσικού τουλάχιστον αντικειμένου του κάθε προβλήματος από τους φοιτητές πριν το εργαστήριο. Είναι επομένως απολύτως απαραίτητο για την παρακολούθηση και συμμετοχή στο εργαστήριο να έχετε παρακολουθήσει και κατανοήσει τη θεωρία που θα έχει διδαχθεί μέχρι εκείνη τη στιγμή ή/και να έχετε διαβάσει και καταλάβει τις σημειώσεις της θεωρίας. Στο εργαστήριο θα θεωρείται γνωστό ό,τι έχει διδαχθεί στη θεωρία και δεν θα επιλύονται σχετικές απορίες, ούτε θα επαναλαμβάνονται θέματα που έχουν διδαχθεί στη θεωρία. Επιπλέον, τα θέματα που θα σας ζητηθούν σε κάθε εργαστήριο θα ανακοινώνονται στην eclass πριν από το αντίστοιχο εργαστήριο έτσι ώστε να είναι δυνατή η έγκαιρη προετοιμασία σας.

  • Ώρες γραφείου: Μετά από συνεννόηση (email)
  • Διαλέξεις: 2 φορές την εβδομάδα, από 2 ώρες
  • Εργαστήρια: 2 ώρες την εβδομάδα

-------------------------------------------------------------------------------------------------------------

  • Office hours: After agreement (email)
  • Lectures: 2 times a week, 2 hours
  • Laboratory: 2 hours per week

Ενότητες

  • Αλγόριθμος. Πρόγραμμα
  • Γλώσσες προγραμματισμού 
  • Το πλεονέκτημα της Java. Βασικά χαρακτηριστικά της Java
  • Ανάπτυξη εφαρμογής σε Java
  • Παράδειγμα μιας απλής εφαρμογής
  • Γενική μορφή ενός προγράμματος Java
  • Σφάλματα προγραμματισμού
  • Μεταβλητές (variables)
  • Βασικοί κανόνες σύνταξης
  • Πρωτογενείς τύποι μεταβλητών (primitive types)

Λέξεις – κλειδιά: java

  • Είσοδος από το πληκτρολόγιο
  • Τελεστής εκχώρησης ή ανάθεσης ( = )
  • Ειδικοί τελεστές εκχώρησης (ή ανάθεσης)
  • Συμβατότητες εκχώρησης και αυτόματη μετατροπή τύπου
  • Αριθμητικοί τελεστές και αυτόματη μετατροπή τύπου
  • Μετατροπή τύπου (type casting)
  • Κανόνες προτεραιότητας πράξεων
  • Μαθηματικές συναρτήσεις
  • Η Κλάση String
  • Σύγκριση μεταβλητών
  • Λογικές σχέσεις

Λέξεις – κλειδιάΕίσοδος, Τελεστής εκχώρησης ή ανάθεσης, Αριθμητικοί τελεστές, String, Λογικές σχέσεις

  • Έλεγχος ροής προγράμματος
  • switch
  • for
  • Διάγραμμα Ροής του for-loop
  • while
  • do/while
  • Διαγράμματα Ροής του while και του do/while

Λέξεις – κλειδιά: Έλεγχος ροής

  • Αντικειμενοστραφής Προγραμματισμός (Μέθοδοι, Κλάσεις, Αντικείμενα)
  • Μέθοδοι
  • Ορισμός μεθόδων
  • Η εντολή return
  • Κλάση
  • Τύποι
  • Δομή κλάσης
  • Τύποι μεθόδων
  • Η κλάση εφαρμογής
  • Κλήση μεθόδου του αντικειμένου μιας κλάσης

Λέξεις – κλειδιά: Μέθοδοι, κλάση

  • Κατασκευαστές
  • H λέξη static
  • Μέθοδοι που δέχονται ή/και επιστρέφουν αντικείμενα
  • Παράδειγμα με την κλάση Complex
  • Overloading μεθόδων

Λέξεις – κλειδιά: Κατασκευαστές

  • Pass-by-value και φαινομενικό pass-by-reference
  • Η Κλάση String
  • Τρόποι δημιουργίας συμβολοσειρών
  • Βασικές μέθοδοι της κλάσης String
  • Μέθοδοι σύγκρισης
  • Μέθοδοι ελέγχου αρχής/τέλους
  • Μέθοδοι δημιουργίας νέων αντικειμένων String
  • Μετατροπές από/σε String
  • Η Κλάση StringBuffer
  • Μετατροπές String / StringBuffer

Λέξεις – κλειδιά: String

  • Πίνακες (Arrays)
  • Γενική δήλωση και δημιουργία μονοδιάστατου πίνακα
  • Δήλωση και δημιουργία δισδιάστατου πίνακα (2-D)
  • Δημιουργία και αρχικοποίηση σε συγκεκριμένες τιμές διαφορετικές του μηδενός
  • Αντιγραφή πινάκων
  • Πίνακες αντικειμένων
  • Μέθοδοι πρόσβασης που επιστρέφουν πίνακες
  • Μέθοδοι που δέχονται πίνακες σαν παράμετρο εισόδου

Λέξεις – κλειδιά: Πίνακες

  • Πακέτα (Packages)
  • Αρχείο ClassOne.java
  • Αρχείο ClassTwo.java
  • Αρχείο Class1.java
  • Αρχείο Class2.java
  • Αρχείο MyClass1.java
  • Αρχείο MyClass2.java
  • Περί ορατότητας μεταβλητών και μεθόδων
  • Κλάσεις με το ίδιο όνομα σε διαφορετικά πακέτα

Λέξεις – κλειδιά: Πακέτα, ορατότητας μεταβλητών και μεθόδων

  • Κληρονομικότητα (Inheritance)
  • Η ορατότητα protected
  • Προχωρημένα θέματα κληρονομικότητας
  • Μετατροπή τύπου αντικειμένων
  • Αλλαγή ορατότητας υπερκαλυμμένης (overriden) μεθόδου
  • Αλλαγή τύπου υπερκαλυμμένης (overriden) μεθόδου
  • Βασικός λόγος που τα private πεδία δεν είναι ορατά στους απογόνους
  • Η κλάση  Object
  • Ο τελεστής instanceof και η μέθοδος getClass()
  • Η λέξη final

Λέξεις – κλειδιά: Κληρονομικότητα, ορατότητα

  • Exceptions handling (Χειρισμός εξαιρέσεων)
  • Exception
  • Error
  • Παράδειγμα “try-throw-catch”
  • Δημιουργία κλάσης εξαίρεσης
  • Δήλωση εξαιρέσεων σε μέθοδο

Λέξεις – κλειδιά: Exception, Error

  • Vectors (διανύσματα)
  • Χρήση των vectors
  • Δημιουργία vector
  • Κατασκευαστές της Vector
  • Μέθοδοι της Vector
  • Προσθήκη στοιχείου
  • Αντικατάσταση (υπάρχοντος) στοιχείου
  • Διαγραφή στοιχείου
  • Πρόσβαση σε στοιχείο
  • Μέθοδοι αναζήτησης
  • Άλλες μέθοδοι
  • Παράδειγμα χρήσης vector

Λέξεις – κλειδιά: διανύσματα

  • Ροές και είσοδος/έξοδος αρχείων
  • Έξοδος σε αρχείο κειμένου
  • Είσοδος από αρχείο κειμένου
  • Εισαγωγή ονόματος αρχείου και διαδρομής (path)
  • Η κλάση StringTokenizer

Λέξεις – κλειδιά: Ροές, είσοδος/έξοδος αρχείων

Ανοικτό Ακαδ. Μάθημα

Ανοικτά Ακαδημαϊκά Μαθήματα
Επίπεδο: A-

Αρ. Επισκέψεων :  0
Αρ. Προβολών :  0

Ημερολόγιο

Ανακοινώσεις

  • - Δεν υπάρχουν ανακοινώσεις -