Πληροφορική

Κωνσταντίνος Καρατζάς

Περιγραφή

Γιατί χρειαζόμαστε το μάθημα της Πληροφορικής;

Τι είναι ένα πρόγραμμα και τι αλγόριθμος; Πόσο γρήγορα εκτελούνται τα προγράμματα στους υπολογιστές; Πως μπορούμε να αναπτύξουμε προγράμματα για να να ελέγχουμε ρομπότ, να προβλέπουμε την ατμοσφαιρική ρύπανση, να επεξεργαζόμαστε εικόνες και να κρυπτογραφούμε μηνύματα; Τι σχέση έχει ένα ρουλεμάν, η ποιότητα του περιβάλλοντος, και μία γραμμή παραγωγής προϊόντων; Όλα προϋποθέτουν τον υπολογισμό, την προσομοίωση και την πρόγνωση της συμπεριφοράς τους με τη βοήθεια κατάλληλων αλγορίθμων και προγραμμάτων Η/Υ!

Στοιχεία μαθήματος

Σε ποιούς απευθύνεται; Το μάθημα της Πληροφορικής απευθύνεται σε φοιτητές Μηχανολόγους Μηχανικούς, αλλά και σε φοιτητές άλλων Τμημάτων και Σχολών, καθώς και σε κάθε ενδιαφερόμενο για θέματα Πληροφορικής και Προγραμματισμού Η/Υ.

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

Περισσότερα  
CC - Αναφορά - Παρόμοια Διανομή
Διδάσκοντες

Ο Κώστας Καρατζάς είναι Καθηγητής στο Τμήμα Μηχανολόγων Μηχανικών ΑΠΘ, και επικεφαλής της Ερευνητικής Ομάδας Περιβαλλοντικής Πληροφορικής. Διδάσκει Πληροφορική, Περιβαλλοντική Πληροφορική και Διερεύνηση Περιβαλλοντικών Επιπτώσεων σε προπτυχιακό επίπεδο, και Υπολογιστικά Πρότυπα Φυσικής ΠεριβάλλοντοςΜοντελοποίηση Περιβαλλοντικών Δεδομένων και Ανάπτυξη Ηλεκτρονικών Υπηρεσιών Ενημέρωσης και Ατμοσφαιρική Ρύπανση στα μεταπτυχιακά προγράμματα Υπολογιστικής Φυσικής, Φυσικής Περιβάλλοντος και Προστασίας περιβάλλοντος και Βιώσιμης Ανάπτυξης ΑΠΘ. Έχει επίσης διδάξει Experimental Methods in Vibrations στο υπό παύση λειτουργίας μεταπτυχιακό TURST-Aeromechanics. Ταυτόχρονα έχει συνεργαστεί ως επισκέπτης καθηγητής με το Φινλανδικό Μετεωρολογικό Ινστιτούτο και έχει διδάξει σε μεταπτυχιακά σεμινάρια στα Πανεπιστήμια Eastern Finland και Aalto της Φινλανδίας, στο Polytecnico di Torino της Ιταλίας, στο Oldenburg University της Γερμανίας και στο Διεθνές Πανεπιστήμιο Θεσσαλονίκης. Τα ερευνητικά του ενδιαφέροντα περιλαμβάνουν

Είνει συγγραφέας πλέον των 200 δημοσιεύσεων σε διεθνή περιοδικά και πρακτικά συνεδρίων (Google Scholar).

 

Ομάδα Υποστήριξης Διαμόρφωσης Περιεχομένου: Δημήτρης Βουκάντσης

 

Συνεργάτις Ανάπτυξης Περιεχομένου opencourses: Άννα Μπίσμπα
Βιντεοσκόπηση - Μοντάζ: Βουλγαράκης Χρήστος

Ομάδα στόχος

Το μάθημα απευθύνεται κυρίως στους πρωτοετείς φοιτητές του τμήματος Μηχανολόγων Μηχανικών ΑΠΘ. Αφορά όμως και φοιτητές άλλων τμημάτων και σχολών (Πολυτεχνικών, Θετικών Επιστημών κλπ), αλλά και οποιονδήποτε ενδιαφέρεται για την Πληροφορική, την επίλυση προβλημάτων και τον προγραμματισμό Η/Υ. Μπορεί να μελετηθεί συνολικά ή και ανά ενότητα, από φοιτητές, σπουδαστές αλλά και μαθητές λυκείων και αποφοίτους που θέλουν να "φρεσκάρουν" τις γνώσεις τους στο αντικείμενο του μαθήματος.

Μαθησιακοί στόχοι

Το μάθημα της Πληροφορικής στοχεύει στο να καλλιεργήσει την ικανότητα επίλυσης προβλημάτων με τη βοήθεια Η/Υ, στα πλαίσια ενός Πανεπιστημιακού ακαδημαϊκού περιβάλλοντος. Στο πέρας του μαθήματος οι φοιτητές θα πρέπει να είναι σε θέση να χρησιμοποιήσουν υπολογιστικά περιβάλλοντα και προγραμματισμό Η/Υ για την επίλυση προβλημάτων, αλλά και για την ανάλυση δεδομένων και τη δημιουργία βασικών προσομοιώσεων. Ειδικότερα, θα πρέπει να είναι σε θέση:

  • να αναλύουν θεωρητικά ένα πρόβλημα
  • να διαμορφώνουν τον αλγόριθμο επίλυσης
  • να το επιλύουν πρακτικά αναπτύσσοντας ένα κατάλληλο πρόγραμμα Η/Υ, ακολουθώντας τις βασικές αρχές προγραμματισμού

Για το σκοπό αυτό θα πρέπει να μπορούν να χρησιμοποιούν προγραμματιστικές δομές και σύγχρονα υπολογιστικά περιβάλλοντα και γλώσσες όπως το Matlab.

 

O εκπαιδευόμενος αναμένεται μετά την επιτυχή ολοκλήρωση του μαθήματος να μπορεί να:

  1. Αναλύει ένα πρόβλημα και να σχεδιάζει μία λύση, διαμορφώνοντας τον κατάλληλο αλγόριθμο
  2. Αναπτύσσει δομημένα, αποδοτικά, κατανοητά και επαναχρησιμοποιήσιμα προγράμματα Η/Υ που επιλύουν συγκεκριμένα προβλήματα ή οικογένειες προβλημάτων, με χρήση μία γλώσσας προγραμματισμού όπως Matlab/Octave
  3. Κατανοήσει πολύπλοκα προγράματα που έχουν γράψει άλλοι
  4. Προβεί σε ανάλυση και οπτικοποίηση δεδομένων και δημιουργία βασικών προσομοιώσεων
Προαπαιτούμενα

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

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

1. Εισαγωγή 

  • Επίλυση προβλημάτων με Η/Υ

2. Αλγόριθμοι, βασικά στοιχεία χρήσης Matlab/Octave

  • Μεταβλητές
  • Τελεστές, σφάλματα υπολογισμών
  • Εγγενείς συναρτήσεις
  • Δομές προγραμματισμού (εισαγωγή)

3. Συναρτήσεις

  • Δομή συναρτήσεων
  • Βασική λειτουργία
  • Είσοδος-έξοδος
  • Εμβέλεια μεταβλητών
  • Συχνά λάθη

4. Δομές προγραμματισμού

  • Λογικές μεταβλητές και παραστάσεις
  • Λογικοί τελεστές
  • Δομές επανάληψης
  • Δομές ελέγχου

5. Μέθοδοι επίλυσης προβλημάτων

  • Αλγόριθμοι επίλυσης και δομές προγραμματισμού
  • Η μέθοδος της διχοτόμησης
  • Η μέθοδος του τραπεζίου

6. Αποδοτικός προγραμματισμός

  • Εγγενείς "διανυσματικές" συναρτήσεις
  • Λογικοί δείκτες 
  • Αποφυγή δομών επανάληψης

7. Πολυπλοκότητα αλγορίθμων

  • Αναδρομικότητα
  • Εϊδη και οικογένειες υπολογιστικής πολυπλοκότητας

8. Εφαρμογές πολυπλοκότητας

  • Αναδρομικότητα-εμβάθυνση
  • Εκτίμηση υπολογιστικής πολυπλοκότητας
  • Παραδείγματα με γραφικά

9. Προσομοιώσεις

  • Τυχαίοι αριθμοί
  • Η μέθοδος Monte Carlo

10. Matlab/Octave για καθημερινή χρήση

  • Υπολογισμός ολοκληρωμάτων
  • Επίλυση εξισώσεων
  • Πολυωνυμική προσέγγιση
  • Γραμμικά συστήματα
  • Εγγενείς συναρτήσεις για αριθμητική παραγώγιση & ολοκλήρωση

11. Διαφορικές εξισώσεις (εισαγωγή)

  • Επιλυτές ΔΕ
  • Simulink και εφαρμογές

12. Ανακεφαλαίωση

  • Εφαρμογές
  • Γλώσσες επιστημονικών υπολογισμών 

 

Προτεινόμενα συγγράμματα
  1. Καρατζάς Κ. (2014),  Πληροφορική για Μηχανικούς, Β' έκδοση, εκδόσεις Σοφία, Θεσσαλονίκη 
  2. Γραββάνης Γ. και Γιαννουτάκης Κ. (2012), Προγραμματισμός με τη Χρήση Matlab, εκδόσεις Παπασωτηρίου, Αθήνα
  3. Στεφανάκος Χ.Ν. (2011), Προγραμματίζοντας με Matlab, εκδόσεις Συμμετρία, ΑΘήνα
  4. Μούσας Β. (2009), Βασική χρήση και προγραμματισμός Matlab7, εκδόσεις ΙΩΝ, Αθήνα
  5. Θεοδώρου Γ. και Θεοδώρου Ν. (2007), Πρακτικός οδηγός στο Matlab, ΑΠΘ.
Βιβλιογραφία

Εκτεταμένη βιβλιογραφία διατίθεται on-line μέσω του διαδικτυακού τόπου του μαθήματος (elearning.auth.gr). Ενδεικτικά αναφέρονται:

  1. Hahn B. and Valentine D. (2010), Essential Matlab for Engineers and Scientists, Academic Press, Burlington, MA.
  2. Karris S. (2008), Introduction to Simulink with Engineering Applications, 2nd edition, Orchard Publications, USA
  3. Mathworks Video Tutorials (http://www.mathworks.com/products/matlab/videos.html)
  4. Mathworks Online Matlab Documentation (http://www.mathworks.com/help/matlab/index.html)
  5. Εισαγωγή στο Matlab (http://www.csd.uoc.gr/~hy215/tutorials/MATLABbook.pdf)
  6. Πρακτικός Οδηγός Matlab (http://users.auth.gr/~theodoru/CompuStat/MATLAB_AUTH.pdf)
  7. Introduction to Matlab (http://www.physics.byu.edu/Courses/Computational/phys330/matlab.pdf)

Ενότητες

Στην πρώτη εβδομάδα κάνουμε μία εισαγωγή στην επίλυση προβλημάτων με τη βοήθεια Η/Υ. Κατόπιν εξηγούμε τη διαδικασία επίλυσης ενός προβλήματος, διατυπώνοντας και χαρακτηρίζοντας τα βήματά της και αναγνωρίζοντας την ανάγκη γενίκευσής της, φτάνοντας έτσι στην έννοια του αλγορίθμου. Την εβδομάδα αυτή γνωρίζουμε τις βασικές διαδικασίες και τα εργαλεία του μαθήματος της Πληροφορικής (στο Τμήμα Μηχανολόγων Μηχανικών ΑΠΘ). Στο τέλος της εβδομάδας θα πρέπει να έχετε πετύχει τα εξής:

  • Να αναγνωρίζετε και να διατυπώνετε τα βασικά βήματα επίλυσης ενός απλού προβλήματος
  • Εγκατάσταση του περιβάλλοντος εργασίας (χρησιμοποιούμε το λογισμικό ανοικτού κώδικα Octave) στον προσωπικό σας υπολογιστή
  • Εκτέλεση ενός απλού προγράμματος στο περιβάλλον που εγκαταστήσατε

Λέξεις Κλειδιά: επίλυση προβλημάτων, βήματα, αλγόριθμος

Την εβδομάδα αυτή θα γνωρίσουμε τις μεταβλητές, και θα αναγνωρίσουμε πως στο Matlab/Octave όλα είναι πίνακες! Θα μιλήσουμε για πράξεις και σφάλματα υπολογισμών και θα αναφερθούμε σε βασικές εγγενείς συναρτήσεις. Επίσης θα αναφερθούμε σε δομές προγραμματισμού (επαναλήψεις, έλεγχοι, σειριακή εκτέλεση, κλπ.), και στην έννοια της συνάρτησης ως αυτόνομου προγράμματος. Στο τέλος της εβδομάδας θα πρέπει:

  • Να μπορείτε να χρησιμοποιείτε μεταβλητές και να κάνετε πράξεις με αυτές, εμπλέκοντας και βασικές εγγενείς συναρτήσεις
  • Να μπορείτε να αναγνωρίζετε δομές προγραμματισμού
  • Να μπορείτε να αναπτύξετε το δικό σας απλό πρόγραμμα σε Matlab/Octave

Λέξεις Κλειδιά: μεταβλητές, πίνακες, δομές προγραμματισμού, εγγενείς συναρτήσεις

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

  • Να μπορείτε να αναπτύσσετε τη δική σας απλή συνάρτηση σε Matlab/Octave.
  • Να μπορείτε να επιμερίσετε τη λύση ενός προβλήματος σε μικρότερα τμήματα που μπορούν να επιλυθούν ανεξάρτητα.

Λέξεις Κλειδιά: πρόβλημα, αλγόριθμός, εμβέλεια μεταβλητών, συναρτήσεις

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

  • Να μπορείτε να αναπτύξετε ένα μικρό πρόγραμμα που συνδυάζει δομές ελέγχου και επανάληψης

Λέξεις Κλειδιά: λογικοί και σχεσιακοί τελεστές, δομή επανάληψης, δομή ελέγχου

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

  • Να αναγνωρίζετε και να χρησιμοποιείτε δομές προγραμματισμού
  • Να είσαστε σε θέση να υλοποιήσετε τη μέθοδο της διχοτόμησης και της ολοκλήρωσης με τη μέθοδο του τραπεζίου σε προβλήματα και να τις χρησιμοποιείτε απρόσκοπτα

Λέξεις Κλειδιά: δομές επανάληψης, δομές ελέγχου, μέθοδος διχοτόμησης, μέθοδος τραπεζίου

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

  • Να σχεδιάζετε και να υλοποιείτε αλγορίθμους που χρησιμοποιούν δομές προγραμματισμού και ελέγχου με ευχέρεια
  • Να χρησιμοποιείτε τα εργαλεία που παρέχει το Matlab/Octave για να κάνετε τον κώδικά σας πιο αποδοτικό και πιο συνοπτικό

Λέξεις Κλειδιά: δομές επανάληψης, δομές ελέγχου, αποτελεσματικός προγραμματισμός, εγγενείς συναρτήσεις

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

  • Μα δημιουργείτε αναδρομικούς υπολογισμούς και συναρτήσεις
  • Να μπορείτε να αντιστοιχίσετε τμήματα κώδικα σε συγκεκριμένες οικογένειες υπολογιστικής πολυπλοκότητας
  • Να μπορείτε να συγκρίνετε δύο διαφορετικούς αλγορίθμους επίλυσης του ίδιου προβλήματος ως προς την πολυπλοκότητα και την ταχύτητα εκτέλεσης

Λέξεις Κλειδιά: αναδρομικότητα, υπολογιστική πολυπλοκότητα

Ασχολούμαστε με θέματα αναδρομικότητας και υπολογισμού πολυπλοκότητας. Αναλύουμε απαντήσεις σε ερωτήματα και ασκήσεις που περιελάβανε το επαναληπτικό εργαστήριο της προηγούμενης ενότητας. Παρουσιάζονται στοιχεία δημιουργίας γραφημάτων σε Matlab/Octave. Στο τέλος της εβδομάδας θα πρέπει να είσαστε σε θέση:

  • Να δημιουργείτε αναδρομικές συναρτήσεις
  • Να εκτιμάτε την υπολογιστική πολυπλοκότητα ενός αλγορίθμου
  • Να κατασκευάζετε γραφήματα

Λέξεις Κλειδιά: αναδρομικές συναρτήσεις, πολυπλοκότητα αλγορίθμου, γραφικά

Παρουσιάζεται η έννοια της προσομοίωσης για μηχανολογικά και άλλα συστήματα και προβλήματα. Εισάγονται βασικά στοιχεία τυχαίων αριθμών και εξηγείται ο τρόπος με τον οποίο μπορούμε να τους “δημιουργήσουμε”. Μετά εξηγείται το πως μπορούμε να χρησιμοποιήσουμε τυχαίους αριθμούς για να προσομοιώσουμε φαινόμενα στοχαστικού χαρακτήρα, και να επιλύσουμε σχετικά προβλήματα. Στο τέλος αυτής της εβδομάδας θα πρέπει να είσαστε σε θέση:

  • Να δημιουργήσετε και να χρησιμοποιήσετε τυχαίους αριθμούς (εφαρμογή σε Matlab/Octave)
  • Να αναγνωρίζετε απλά προβλήματα στοχαστικού χαρακτήρα
  • Να διαμορφώσετε έναν βασικό αλγόριθμο για την προσομοίωση και επίλυση προβλημάτων στοχαστικού χαρακτήρα με τη βοήθεια τυχαίων αριθμών
  • Να αναγνωρίζετε και να χρησιμοποιείτε τη μέθοδο Monte Carlo (π.χ. σε προβλήματα όπως οι κινήσεις μορίων, η ζήτηση εποχικών προϊόντων, η αντοχή μηχανολογικής κατασκευής)

Λέξεις Κλειδιά: προσομοίωση, μηχανολογικά συστήματα, τυχαίοι αριθμοί

Παρουσιάζονται βασικά στοιχεία αριθμητικής παραγώγισης και ολοκλήρωσης και σχετικά εργαλεία και εγγενείς συναρτήσεις σε Matlab/Octave. Παρουσιάζονται επίσης εγγενείς συναρτήσεις Matlab/Octave για την επίλυση εξισώσεων και άλλων προβλημάτων που άπτονται των σπουδών ενός φοιτητή μηχανικού (και όχι μόνο). Στο τέλος αυτής της εβδομάδας θα πρέπει να είσαστε σε θέση να επιλύετε προβλήματα όπως:

  • Ο υπολογισμός ορισμένων και αόριστων ολοκληρωμάτων και παραγώγων συναρτήσεων
  • Η επίλυση πολυωνυμικών ή άλλων εξισώσεων
  • Η επίλυση γραμμικών συστημάτων με χρήση απλής άλγεβρας πινάκων-οριζουσών (όχι αριθμητικά)
  • Η πολυωνυμική προσέγγιση αριθμητικών δεδομένων (πολυωνυμική παρεμβολή)
  • Η αριθμητική παραγώγιση και ολοκλήρωση (σε εισαγωγικό επίπεδο)

Στα παραπάνω θα πρέπει να μπορείτε να χρησιμοποιήσετε τις εγγενείς συναρτήσεις του Matlab/Octave

 Λέξεις Κλειδιά: αριθμητική παραγώγιση και ολοκλήρωση, επίλυση εξισώσεων, μαθηματικά προβλήματα

Κάνουμε μία εισαγωγή σε εξισώσεις που περιλαμβάνουν την ανεξάρτητη μεταβλητή μαζί με μία συνάρτηση και παραγώγους της (απλές διαφορικές εξισώσεις). Με τον τρόπο αυτό περιγράφουμε ένα χαρακτηριστικό πρόβλημα Μηχανικού όπου η συμπεριφορά του μελετώμενου συστήματος μεταβάλλεται με το χρόνο (απλή αρμονική ταλάντωση χωρίς απόσβεση αλλά και με απόσβεση).

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

  • Να επιλύετε μία απλή διαφορική εξίσωση συμβολικά σε Matlab/Octave
  • Να μπορείτε να δημιουργήσετε μία απλή προσομοίωση δυναμικού συστήματος μέσω Simulink
  • Να χρησιμοποιείτε αρχεία δεδομένων στο Matlab/Octave, και να κάνετε υπολογισμούς, αναλύσεις και γραφικές παραστάσεις με αυτά.

Λέξεις Κλειδιά: ανεξάρτητη μεταβλητή, συνάρτηση, διαφορική εξίσωση

Γίνεται μία γενική επανάληψη εστιάζοντας στα σημαντικότερα σημεία του μαθήματος, με τη βοήθεια ενός προβλήματος-παραδείγματος: το «παιχνίδι της ζωής» και η προσομοίωση δομικών μεταβολών χάλυβα και δασικών πυρκαγιών.

Λέξεις Κλειδιά: επανάληψη, επίτευξη στόχων μαθήματος

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

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

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

Ημερολόγιο