Ανάπτυξη Λογισμικού για Αλγοριθμικά Προβλήματα

Εξάμηνο:
7ο
Τύπος Μαθήματος:
Project
Κατεύθυνση:
CS (Computer Science)
Κωδικός:
Κ23γ
ECTS:
8
Διδακτικές Ώρες
Ώρες Θεωρίας:
1
Ώρες Φροντιστηρίου:
-
Ώρες Εργαστηρίου:
3
Μάθημα στις Ειδικεύσεις
Θεμελιώσεις Πληροφορικής (S1):
-
Διαχείριση Δεδομένων και Γνώσης (S2):
-
Λογισμικό (S3):
-
Υλικό και Αρχιτεκτονική (S4):
-
Επικοινωνίες και Δικτύωση (S5):
-
Επεξεργασία Σήματος και Πληροφορίας (S6):
-
Σχετικά Μαθήματα
Σύντομη περιγραφή Μαθήματος

Το μάθημα συνίσταται στην ανάπτυξη λογισμικού για την επίλυση ενός σημαντικού προβλήματος της Πληροφορικής, τη χρήση του λογισμικού σε μια πρακτική εφαρμογή και την πειραματική αποτίμηση του λογισμικού που αναπτύχθηκε. Η προσέγγιση στοχεύει στην εξοικείωση με τον προγραμματισμό μεγάλης κλίμακας, συχνά με χρήση ανοικτών βιβλιοθηκών λογισμικού, μέσω συνεργασίας σε ομάδες, καθώς και στην ανάπτυξη δεξιοτήτων για την υλοποίηση και πρακτική χρήση γνωστών, αποδοτικών αλγορίθμων. Χρησιμοποιείται η γλώσσα C/C++ σε σύστημα Linux. Τα θέματα που καλύπτονται περιλαμβάνουν την υλοποίηση αποδοτικών αλγορίθμων, την πειραματική αξιολόγηση τους, τις αρχές οργάνωσης και σχεδίασης λογισμικού, τη χρήση ανοιχτών βιβλιοθηκών και εργαλειών λογισμικού, όπως τις βιβλιοθηκές Qt, Boost, Gnuplot, LAPACK, Eigen, πλατφόρμες Δοκιμών Μονάδων Λογισμικού (Unit testing), συστήματα ελέγχου εκδόσεων και συνεργατικής ανάπτυξης (git, SVN) καθώς και τη συνεργατική υλοποίηση μεγάλης κλίμακας.

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

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

Γενικό σύγγραμμα για C++ (Εύδοξος):
• Bruce Eckel, Τρόπος Σκέψης στη C++, Τόμος 2, εκδόσεις Μ. Γκιούρδας, 2009.
Επιστημονικές δημοσιεύσεις που τροποποιούνται κάθε έτος ανάλογα με τα αλγοριθμικά προβλήματα που εξετάζονται.
Διαφάνειες για την περιγραφή των προβλημάτων που εξετάζονται, τις αλγοριθμικές τεχνικές, τις αρχές οργάνωσης και σχεδίασης λογισμικού καθώς και για τις βιβλιοθήκες και τα εργαλεία λογισμικού που χρησιμοποιούνται.