Ηλεκτρονική Διάθεση Μαθήματος
Μαθησιακά Αποτελέσματα
1. Οι φοιτητές θα αποκτήσουν την ικανότητα να επιλέγουν το κατάλληλο εργαλείο για κάθε συγκεκριμένο πρόβλημα και να συνδυάζουν διαφορετικά λογισμικά περιβάλλοντα για την αποτελεσματική επίλυση πολύπλοκων υπολογιστικών προκλήσεων.
2. Οι φοιτητές θα αναπτύξουν ικανότητες στη χρήση του Matlab για την υλοποίηση αριθμητικών μεθόδων και ανάλυσης δεδομένων.
3. Οι φοιτητές θα χρησιμοποιούν το Mathematica για την αναλυτική επίλυση πολύπλοκων μαθηματικών προβλημάτων, τον χειρισμό συμβολικών εκφράσεων, και την παραγωγή ακριβών λύσεων σε θεωρητικά φυσικά μοντέλα.
4. Οι φοιτητές θα αναπτύξουν προγραμματιστικές δεξιότητες στην Python, αξιοποιώντας βιβλιοθήκες όπως NumPy, SciPy, και Matplotlib για υλοποίηση αλγορίθμων υπολογιστικής φυσικής.
5. Οι φοιτητές θα κατανοήσουν τις αρχές του παράλληλου προγραμματισμού με OpenMP, θα εφαρμόζουν τεχνικές parallelization σε υπολογιστικά εντατικές εφαρμογές, και θα αξιολογούν την απόδοση των προγραμμάτων τους.
Περιεχόμενο Μαθήματος
1) Εισαγωγή στο Matlab
1.1 Βασικές Λειτουργίες και Δομές Δεδομένων: Εισαγωγή στο περιβάλλον Matlab, χειρισμός πινάκων και matrices, βασικές αριθμητικές πράξεις, δημιουργία και χειρισμός vectors, και κατανόηση της matrix-oriented φιλοσοφίας του Matlab.
1.2 Προγραμματισμός και Έλεγχος Ροής: Δημιουργία scripts και functions, δομές ελέγχου (if-else, for loops, while loops), χειρισμός σφαλμάτων, και οργάνωση κώδικα σε modules για επαναχρησιμοποίηση.
1.3 Αριθμητικές Μέθοδοι και Επίλυση Εξισώσεων: Υλοποίηση αριθμητικής ολοκλήρωσης, επίλυση γραμμικών και μη-γραμμικών εξισώσεων, interpolation και curve fitting.
1.4 Οπτικοποίηση και Γραφικές Παραστάσεις: Δημιουργία 2D και 3D plots, customization γραφημάτων.
2) Εισαγωγή στο Mathematica
2.1 Συμβολικός Προγραμματισμός - Βασικές μεταβλητές και Αναλυτικές Διαδικασίες
2.2 Χρήση Συναρτήσεων (Build-in / user custom functions)
2.3 Δομές Προγραμματισμού - Λίστες
2.4 Αριθμητικές Διαδικασίες - Παρεμβολή και Επίλυση Διαφορικών Εξισώσεων
3) Εισαγωγή στη Python
3.1 Τύποι μεταβλητών - Δομές Δεδομένων
3.2 Συναρτήσεις - Δομές Ελέγχου προγράμματος
3.3 Κλάσεις
3.4 Βιβλιοθήκες (NumPy, SciPy, SimPy, MatPlotLib)
4. Εισαγωγή στην OpenMP
4.1 Εισαγωγή στον Παράλληλο Προγραμματισμό
4.2 Δομές Παράλληλου Προγραμματισμού στην OpenMP