Το μάθημα της Πληροφορικής στοχεύει στο να καλλιεργήσει την ικανότητα επίλυσης προβλημάτων με τη βοήθεια Η/Υ. Στο πέρας του μαθήματος οι φοιτητές θα πρέπει να είναι σε θέση να χρησιμοποιήσουν έναν Η/Υ για την επίλυση προβλημάτων, αλλά και για την ανάλυση δεδομένων και τη δημιουργία βασικών προσομοιώσεων. Ειδικότερα, θα πρέπει να είναι σε θέση να αναλύουν θεωρητικά ένα πρόβλημα, να διαμορφώνουν τον αλγόριθμο επίλυσης, και να το επιλύουν πρακτικά αναπτύσσοντας ένα κατάλληλο πρόγραμμα Η/Υ, ακολουθώντας τις βασικές αρχές προγραμματισμού.
Το μάθημα περιλαμβάνει: (i) διαλέξεις θεωρίας και παραδόσεις ασκήσεων, (ii) υποχρεωτικά εργαστήρια, (iii) θέματα και ασκήσεις προς εκπόνηση, και υποστηρίζεται από εκπαιδευτικά video, διαδραστικές διδικτυακές ασκήσεις και συμπληρωματικό ηλεκτρονικό υλικό.
Η τελική βαθμολογία διαμορφώνεται βάσει εξετάσεων αλλά και από τη βαθμολογία των θεμάτων και των ασκήσεων προς εκπόνηση. Για το μάθημα χρησιμοποιείται το υπολογιστικό περιβάλλον και γλώσσα προγραμματισμού Matlab/Octave, ενώ περιλαμβάνονται και στοιχεία Fortran. Το πλήρες περιεχόμενο, το υποστηρικτικό υλικό, ο αναλυτικός προγραμματισμός του μαθήματος καθώς και όποια άλλη πληροφορία το αφορά, είναι διαθέσιμα στον διαδικτυακό τόπο https://elearning.auth.gr/. Το μάθημα επίσης φιλοξενεί κάποιες χρονιές διαλέξεις που σχετίζονται με το αντικείμενό του, ενώ υποστηρίζει και εθελοντικές δραστηριότητες δημιουργικού προγραμματισμού.
ΕΒΔΟΜΑΔΙΑΙΟ ΠΡΟΓΡΑΜΜΑ ΜΑΘΗΜΑΤΩΝ:
Εβδομάδα.#01: Επίλυση προβλημάτων με Η/Υ-εισαγωγή
Στην πρώτη εβδομάδα κάνουμε μία εισαγωγή στην επίλυση προβλημάτων με τη βοήθεια Η/Υ. Κατόπιν εξηγούμε τη διαδικασία επίλυσης προβλήματος, διατυπώνοντας και χαρακτηρίζοντας τα βήματά της και αναγνωρίζοντας την ανάγκη γενίκευσής της, φτάνοντας έτσι στην έννοια του αλγορίθμου. Την εβδομάδα αυτή γνωρίζουμε τις βασικές διαδικασίες και τα εργαλεία του μαθήματος της Πληροφορικής στο Τμήμα Μηχανολόγων Μηχανικών
ΑΠΘ. Στο τέλος της εβδομάδας θα πρέπει να έχετε πετύχει τα εξής:
- Να αναγνωρίζετε και να διατυπώνετε τα βασικά βήματα επίλυσης ενός απλού προβλήματος
- Εγκατάσταση του περιβάλλοντος εργασίας (χρησιμοποιούμε το λογισμικό ανοικτού κώδικα Octave) στον προσωπικό σας υπολογιστή
- Εκτέλεση ενός απλού προγράμματος στο περιβάλλον που εγκαταστήσατε
Εβδομάδα.#02: Βασικά στοιχεία Matlab/Octave
Την εβδομάδα αυτή θα γνωρίσουμε μερικά βασικά δομικά στοιχεία αλγορίθμων (επαναλήψεις, έλεγχοι, σειριακή εκτέλεση, κλπ.), καθώς και βασικά στοιχεία προγραμματισμού στο περιβάλλον Octave/Matlab (μεταβλητές, συναρτήσεις & γραφήματα). Στο τέλος της εβδομάδας θα πρέπει:
- Να έχετε σαφή εικόνα των δομικών στοιχείων των αλγορίθμων
- Να μπορείτε να αναπτύξετε το δικό σας απλό πρόγραμμα σε Matlab/Octave
Εβδομάδα.#03: Συναρτήσεις
Την εβδομάδα αυτή θα δούμε τον τρόπο με τον οποίο μπορούμε να αναπτύσσουμε και να χρησιμοποιούμε συναρτήσεις στο Matlab/Octave. Θα γνωρίσουμε την έννοια της εμβέλειας μίας μεταβλητής και θα συζητήσουμε για την αρχιτεκτονική προγραμμάτων και τον επιμερισμό τους σε συναρτήσεις. Στο τέλος της εβδομάδας θα πρέπει:
- Να μπορείτε να αναπτύσσετε τη δική σας συνάρτηση σε Matlab/Octave
- Να μπορείτε να επιμερίσετε τη λύση ενός προβλήματος σε μικρότερα τμήματα που μπορούν να επιλυθούν ανεξάρτητα
Εβδομάδα.#04: Δομές Προγραμματισμού
Την εβδομάδα αυτή θα γνωρίσουμε τις βασικές δομές προγραμματισμού (δομές επανάληψης & ελέγχου). Με τις δομές αυτές θα είσαστε σε θέση να αναπτύξετε πολύ πιο σύνθετα προγράμματα, να κάνετε λογικούς ελέγχους, να επαναλαμβάνετε διαδικασίες και να υλοποιείτε σύνθετους αλγορίθμους. Στο τέλος της εβδομάδας θα πρέπει:
- Να μπορείτε να αναπτύξετε ένα μικρό πρόγραμμα που συνδυάζει δομές ελέγχου και επανάληψης
Εβδομάδα.#05: Περισσότερα για Δομές Προγραμματισμού
Εδώ θα γνωρίσουμε περισσότερες εντολές για την υλοποίηση δομών προγραμματισμού καθώς και μία σειρά από μεθόδους επίλυσης προβλημάτων που μπορούν να υλοποιηθούν με δομές επανάληψης, όπως η μέθοδος της διχοτόμησης, η μέθοδος της εξαντλητικής αναζήτησης κ.α. Τέλος, θα δούμε μερικά παραδείγματα σε μία άλλη γλώσσα προγραμματισμού (Fortran) για να αναγνωρίσουμε ομοιότητες και διαφορές μεταξύ γλωσσών προγραμματισμού. Στο τέλος της τρέχουσας εβδομάδας θα πρέπει:
- Να είσαστε σε θέση να υλοποιήσετε τη μέθοδο της διχοτόμησης και της εξαντλητικής αναζήτησης σε προβλήματα
- Να αναγνωρίζετε δομές προγραμματισμού και να τις χρησιμοποιείτε απρόσκοπτα
Εβδομάδα.#06: Αποδοτικός Προγραμματισμός
Γγνωρίσουμε μία σειρά τεχνικών που μας επιτρέπουν να κάνουμε τον κώδικά μας πιο αποδοτικό. Συγκρίνουμε τις τεχνικές αυτές με τη χρήση δομών προγραμματισμού. Γνωρίσουμε τρόπους για να αποφεύγουμε δομές επανάληψης, θα δούμε τους λογικούς δείκτες και μία σειρά εγγενών “διανυσματικών” συναρτήσεων. Στο τέλος της εβδομάδας θα πρέπει να είσαστε σε θέση:
- Να σχεδιάζετε και να υλοποιείτε αλγορίθμους που χρησιμοποιούν δομές προγραμματισμού και ελέγχου με ευχέρεια
- Να χρησιμοποιείτε τα εργαλεία που παρέχει το Matlab/Octave για να κάνετε τον κώδικά σας πιο αποδοτικό και πιο συνοπτικό
Εβδομάδα.#07: Μελέτη Αλγορίθμων
Η τρέχουσα εβδομάδα είναι αφιερωμένη στην επανάληψη εννοιών που έχουν διδαχθεί μέχρι τώρα και στη μελέτη αλγορίθμων. Στο τέλος της εβδομάδας θα πρέπει:
- Να μπορείτε να αντιστοιχίσετε τμήματα κώδικα σε συγκεκριμένες οικογένειες υπολογιστικής πολυπλοκότητας
- Να μπορείτε να συγκρίνετε δύο διαφορετικούς αλγορίθμους επίλυσης του ίδιου προβλήματος ως προς την πολυπλοκότητα και την ταχύτητα εκτέλεσης
- Με τη βοήθεια του εργαστηρίου, να εντοπίσετε γνωσιακά και άλλα προβλήματα και να τα επιλύσετε
Εβδομάδα.#08: Αναδρομικότητα - πολυπλοκότητα - γραφικά
Ασχολούμαστε με θέματα αναδρομικότητας και υπολογισμού πολυπλοκότητας, ενώ θα περιδιαβούμε βασικά στοιχεία δημιουργίας γραφημάτων σε Matlab/Octave. Στο τέλος της εβδομάδας θα πρέπει να είσαστε σε θέση:
- Να δημιουργείτε αναδρομικές συναρτήσεις
- Να εκτιμάτε την υπολογιστική πολυπλοκότητα ενός αλγορίθμου
- Να κατασκευάζετε γραφήματα
Εβδομάδα.#09: Τυχαίοι αριθμοί, Προσομοιώσεις, μέθοδος Monte Carlo
Στην 9η εβδομάδα θα παρουσιαστούν βασικά στοιχεία τυχαίων αριθμών και θα εξηγηθεί ο τρόπος με τον οποίο μπορούμε να τους “δημιουργήσουμε”. Κατόπιν θα παρουσιαστεί η έννοια της προσομοίωσης για μηχανολογικά και άλλα συστήματα και προβλήματα. Μετά θα εξηγηθεί το πως μπορούμε να χρησιμοποιήσουμε τυχαίους αριθμούς για να προσομοιώσουμε φαινόμενα στοχαστικού χαρακτήρα, και να επιλύσουμε σχετικά προβλήματα. Στο τέλος αυτής της εβδομάδας θα πρέπει να είσαστε σε θέση:
- Να δημιουργήσετε και να χρησιμοποιήσετε τυχαίους αριθμούς (εφαρμογή σε Matlab/Octave)
- Να αναγνωρίζετε απλά προβλήματα στοχαστικού χαρακτήρα
- Να διαμορφώσετε έναν βασικό αλγόριθμο για την προσομοίωση και επίλυση προβλημάτων στοχαστικού χαρακτήρα με τη βοήθεια τυχαίων αριθμών
- Να αναγνωρίζετε και να χρησιμοποιείτε τη μέθοδο Monte Carlo (π.χ. σε προβλήματα όπως οι κινήσεις μορίων, η ζήτηση εποχικών προϊόντων, η αντοχή μηχανολογικής κατασκευής)
Εβδομάδα.#10: Εφαρμογές Προσομοίωσης και Matlab/Octave για "καθημερινή χρήση"
Εξετάζουμε απλά παραδείγματα προσομοίωσης και εστιάζουμε στη χρήση Matlab/Octave για την επίλυση προβλημάτων που άπτονται των σπουδών ενός φοιτητή μηχανικού. Στο τέλος αυτής της εβδομάδας θα πρέπει να είσαστε σε θέση να επιλύετε προβλήματα όπως:
- Ο υπολογισμός ορισμένων και αόριστων ολοκληρωμάτων και παραγώγων συναρτήσεων
- Η επίλυση πολυωνυμικών ή άλλων εξισώσεων
- Η επίλυση γραμμικών συστημάτων με χρήση απλής άλγεβρας πινάκων-οριζουσών (όχι αριθμητικά)
- Η πολυωνυμική προσέγγιση αριθμητικών δεδομένων (πολυωνυμική παρεμβολή)
- Η αριθμητική παραγώγιση και ολοκλήρωση (σε εισαγωγικό επίπεδο)
Στα παραπάνω θα πρέπει να μπορείτε να χρησιμοποιήσετε τις εγγενείς συναρτήσεις του Matlab/Octave
Εβδομάδα.#11: Εισαγωγή στις διαφορικές εξισώσεις με Matlab/Octave, εισαγωγή στη Simulink
Κάνουμε μία εισαγωγή σε εξισώσεις που περιλαμβάνουν την ανεξάρτητη μεταβλητή μαζί με μία συνάρτηση και παραγώγους της (απλές διαφορικές εξισώσεις). Με τον τρόπο αυτό θα περιγράψουμε ένα χαρακτηριστικό πρόβλημα Μηχανολόγου Μηχανικού όπου η συμπεριφορά του μελετώμενου συστήματος μεταβάλλεται με το χρόνο (απλή αρμονική ταλάντωση χωρίς απόσβεση αλλά και με απόσβεση).
Επίσης θα κάνουμε μία εισαγωγή στο αλληλεπιδραστικό προσομοιωτικό περιβάλλον προγραμματισμού και μελέτης συμπεριφοράς δυναμικών συστημάτων Simulink, εξετάζοντας παραδείγματα όπως η απλή αρμονική ταλάντωση.
Στο τέλος της εβδομάδας θα πρέπει να είσαστε σε θέση:
- Να επιλύετε μία απλή διαφορική εξίσωση συμβολικά στο Matlab
- Να μπορείτε να δημιουργήσετε μία απλή προσομοίωση δυναμικού συστήματος μέσω Simulink
- Να χρησιμοποιείτε αρχεία δεδομένων στο Matlab, και να κάνετε υπολογισμούς, αναλύσεις και γραφικές παραστάσεις με αυτά
Εβδομάδα.#12: Ανάλυση δεδομένων σε Matlab και Fortran
Θα παρουσιαστεί μία διαδικασία ανάγνωσης δεδομένων από αρχείο εισόδου, επεξεργασίας τους και ανάλυσής τους, με στόχο την απόκτηση δεξιοτήτων σε Matlab και Fortran και τη σύγκριση λειτουργιών.
Εβδομάδα.#13: Γενική επανάληψη
Γίνεται μία γενική επανάληψη εστιάζοντας στα σημαντικότερα σημεία του μαθήματος. Θα επιδιωχθεί να αποτιμήσουμε την εργασία που επιτελέστηκε κατά τη διάρκεια του εξαμήνου, και να εκτιμήσουμε το κατά πόσο έχουν επιτευχθεί οι στόχοι του μαθήματος, όπως αυτοί τέθηκαν στην αρχή του εξαμήνου.