Course Description
Προηγμένες Τεχνικές Προγραμματισμού
Προηγμένες Τεχνικές Προγραμματισμού
Περιγραφή Μαθήματος
Το μάθημα αναφέρεται σε προηγμένες τεχνικές προγραμματισμού που είναι απαραίτητες για την ανάπτυξη των σύγχρονων δικτυωμένων ενσωματωμένων συστημάτων (networked embedded systems) που αποτελούν συστατικό στοιχείο του Internet of Things (IoT) και των Cyber-Physical Systems (CPSs).
Επιδιωκόμενα μαθησιακά αποτελέσματα του μαθήματος
Εξοικείωση με
α) βασικούς μηχανισμούς προγραμματισμού σε επίπεδο υλικού και βασικού λογισμικού (system software) και
β) τις σχετικές κατασκευές της γλώσσας προγραμματισμού C που επιτρέπουν άμεση πρόσβαση στους πόρους του συστήματος (hardware και software) για την βέλτιστη αξιοποίηση τους σε x86 και ARM αρχιτεκτονικές.
Εξοικείωση με το νοητικό μοντέλο του Ταυτόχρονου προγραμματισμού (concurrent programming) και των κατασκευών για την υποστήριξη ανάπτυξης σύνθετων εφαρμογών.
Αξιοποίηση των παραπάνω σε Κυβερνοφυσικά συστήματα στο περιβάλλον του Διαδικτύου Αντικειμένων (ΙοΤ).
Δεξιότητες
Κατανόηση κώδικα λογισμικού σε επίπεδο υλικού και δυνατότητα επέκτασης της λειτουργικότητας τους. Αυτοδύναμη ανάπτυξη κώδικα σε χαμηλό επίπεδο με αξιοποίηση των μηχανισμών διεπαφής με υλικό, λειτουργικό σύστημα και assembly.
Αυτοδύναμη ανάπτυξη πολυνηματικών εφαρμογών αξιοποιώντας αποτελεσματικά το μοντέλο του ταυτόχρονου προγραμματισμού μέσα από τις σχετικές κατασκευές της γλώσσας προγραμματισμού Java. Αξιοποίηση των γλωσσών C και Java για την ανάπτυξη λογισμικού στο περιβάλλον του Διαδικτύου Αντικειμένων.
Προαπαιτήσεις
Γνώση του διαδικαστικού και του αντικειμενοστρεφούς παραδείγματος προγραμματισμού. Εξοικείωση με τις γλώσσες προγραμματισμού C και Java.
Περιεχόμενα (ύλη) του μαθήματος
Το μάθημα είναι οργανωμένο σε 3 ενότητες με την κάθε μια να μελετά μια θεματική περιοχή μέσα από το πρίσμα των απαιτήσεων των σύγχρονων IoT και Cyber-Physical συστημάτων.
1. Τεχνολογίες σχεδιασμού και υλοποίησης λογισμικού συστημάτων. Συστήματα Μηχανοτρονικής. Cyber-Physical Συστήματα. Διαδίκτυο των Αντικειμένων (Internet of Things). Σύγχρονες τάσεις.
2. Ταυτόχρονος Προγραμματισμός. Νοητικό μοντέλο του ΤΠ. Το πρόβλημα του αμοιβαίου αποκλεισμού (Mutual Exclusion problem). Αλγόριθμος Dekker. Σημαφόροι (semaphores). Μόνιτορς (monitors). Πρόβλημα παραγωγού καταναλωτή. Μηχανισμοί της Java για την υποστήριξη του ταυτόχρονου προγραμματισμού. Thread Synchronization. Resource Allocation Protocols. Μελέτη περίπτωσης: The Sleeping Barber.
3. Διεπαφή μεταξύ Cyber και Physical τμημάτων ενός Cyber-Physical συστήματος ως βασικό συστατικό του Διαδικτύου Αντικειμένων. Κατασκευές της γλώσσας προγραμματισμού C για υλοποίηση της διεπαφής αυτής. Η προγραμματιστική διεπαφή της C με την Assembly. Αξιοποίηση υπηρεσιών του λειτουργικού συστήματος (OS services). Άμεση πρόσβαση στο υλικό. Διακοπές (interrupts). To Device I/O API Java. Ταυτόχρονος προγραμματισμός αξιοποιώντας μηχανισμούς χαμηλού επίπεδου. Εναλλακτικές υλοποιήσεις. Ανάπτυξη εφαρμογής σε embedded board βασισμένο σε ARM® Cortex™-M0+ processor (ARM University Program). Το παράδειγμα του Liqueur Plant case study.
Μελέτη περίπτωσης: συριακή σύνδεση σε ARM αρχιτεκτονική χρησιμοποιώντας embedded boards (ARM® Cortex™-M0+ processor). (ARM University Program).
4. Network Programming στα πλαίσια του IoT και του Cloud Computing. Αξιοποίηση της τεχνολογίας αντικειμένων (Object technology) στην ανάπτυξη συστημάτων με βάση το Διαδίκτυο των Αντικειμένων (ΙοΤ). Από τα sockets στο Διαδίκτυο των Αντικειμένων (IoT). Μελέτη περίπτωσης: To Blood Pressure Monitoring System.
Αξιοποίηση της τεχνολογίας αντικειμένων (Object technology) στην ανάπτυξη ενσωματωμένων συστημάτων. Εισαγωγή στην UML για σχεδιασμό συστήματος – βασικά διαγράμματα σχεδιασμού. Η Java ως γλώσσα προγραμματισμού για λογισμικό ενσωματωμένων συστημάτων. Αξιοποίηση της Embedded Java για ανάπτυξη ενσωματωμένου συστήματος. Η προδιαγραφή της Java για ενσωματωμένα συστήματα πραγματικού χρόνου (Real Time Specification for Java).
Συγγράμματα
Βασικά Συγγράμματα
1. ΣΥΓΧΡΟΝΕΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Κωδικός Βιβλίου στον Εύδοξο: 246
Έκδοση: 1η/2009
Συγγραφείς: BROOKS WEBBER ADAM
ISBN: 978-960-524-282-4
Διαθέτης (Εκδότης): ΙΔΡΥΜΑ ΤΕΧΝΟΛΟΓΙΑΣ & ΕΡΕΥΝΑΣ-ΠΑΝΕΠΙΣΤΗΜΙΑΚΕΣ ΕΚΔΟΣΕΙΣ ΚΡΗΤΗΣ
Adam Brooks Webber, University of Winsconsin
Μετάφραση: Γεώργιος Γεωργακόπουλος
Πανεπιστημιακές εκδόσεις Κρήτης
Αριθμός Σελίδων 610.
2. ΤΑΥΤΟΧΡΟΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Κωδικός Βιβλίου στον Εύδοξο: 13907
Έκδοση: 1η/1998
Συγγραφείς: M. BEN-ARI
ISBN: 960-209-343-9
Διαθέτης (Εκδότης): ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ
Σελίδες: 200
3. ΠΡΑΓΜΑΤΟΛΟΓΙΑ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Κωδικός Βιβλίου στον Εύδοξο: 13858
Έκδοση: 2η/2009
Συγγραφείς: MICHAEL L. SCOTT
ISBN: 978-960-461-230-7
Διαθέτης (Εκδότης): ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ
Αριθμός Σελίδων 776.
Πανεπιστημιακές Παραδόσεις
“Προηγμένες Τεχνικές Προγραμματισμού” Πανεπιστημιακές Παραδόσεις.
Συγγραφέας: Κλεάνθης Θραμπουλίδης
Εγκεκριμένος αριθμός σελίδων: 280
Πάτρα 2002. http://seg.ece.upatras.gr/AptBook
Πρόσθετη Βιβλιογραφία
Κλ. Θραμπουλίδης, Αντικειμενοστρεφής Προγραμματισμός - JAVA. Εκδόσεις ΤΖΙΟΛΑ, σελ. 480, Θεσσαλονίκη 2002.
(http://seg.ee.upatras.gr/JavaBook)
Κλ. Θραμπουλίδης. Διαδικαστικός Προγραμματισμός - C. Εκδόσεις ΤΖΙΟΛΑ, σελ. 512, Θεσσαλονίκη 2003. (http://seg.ee.upatras.gr/CBook)
«Βασικές αρχές γλωσσών προγραμματισμού» Εκδόσεις Κλειδάριθμος 1993. Το βιβλίο είναι μετάφραση της δεύτερης Αμερικάνικης έκδοσης του Fundamentals of Programming Languages Ellis Horowitz, Computer Science Press, 1984.
M.Ben-Ari Ταυτόχρονος Προγραμματισμός Prentice Hall International. Ελληνική μετάφραση από τον Κλειδάριθμο
Ravi Sethi, Programming Languages: Concepts and Constructs 2nd Edition, Addison Wesley 1996. Reprinted with corrections April 1997.
Ken Arnold, James Gosling, The Java Programming Language, Addison Wesley, 1996.
K.N.King, C Programming: A modern approach, W.W.Norton & Company, Inc.
Περιεχόμενα (ύλη) του Εργαστηριακού σκέλους
1. Ταυτόχρονος Προγραμματισμός. Ανάπτυξη εφαρμογής για το πρόβλημα του κοιμώμενου Κουρέα. Αξιοποίηση Αλγόριθμου Dekker, Σημαφόρων (semaphores), Ελεγκτών (monitors) και των κατασκευών της Java για την υποστήριξη του ταυτόχρονου προγραμματισμού. Ταυτόχρονος προγραμματισμός αξιοποιώντας μηχανισμούς χαμηλού επίπεδου. Ανάπτυξη εφαρμογής σε embedded board βασισμένο σε ARM® Cortex™-M0+ processor (ARM University Program). Προγραμματισμός σε Android. Το παράδειγμα του Liqueur Plant case study.
2. Προγραμματισμός Χαμηλού επιπέδου (Low level programming). Ανάπτυξη εφαρμογής για την αξιοποίηση του UART 16550 σε x86 αρχιτεκτονική. Ανάπτυξη εφαρμογής για την αξιοποίηση της RS232 σύνδεσης σε ARM αρχιτεκτονική χρησιμοποιώντας embedded boards (ARM® Cortex™-M0+ processor) (ARM University Program). Αξιοποίηση διακοπών υλικού. Εναλλακτικές υλοποιήσεις αξιοποιώντας: α) υπηρεσίες του λειτουργικού συστήματος, β) άμεσα πρόσβαση στο υλικό, και γ) την προγραμματιστική διεπαφή της C με την assembly.
3. Network Programming. Το παράδειγμα του Liqueur Plant αξιοποιώντας ARM-based embedded boards ως μελέτη περίπτωσης στην ανάπτυξη cyber-physical συστημάτων. Από τα sockets στο Διαδίκτυο των Αντικειμένων (IoT). Μελέτη περίπτωσης: To Blood Pressure Monitoring System.
Εργαστηριακές Ασκήσεις
1. Ανάπτυξη εφαρμογής για την αξιοποίηση του UART 8250. (3 ασκήσεις - ARM® Cortex™-M0+ processor. )
2. Ανάπτυξη εφαρμογής για το πρόβλημα του κοιμώμενου Κουρέα. (3 ασκήσεις)
3. Ανάπτυξη λογισμικού στα πλαίσια του Internet of Things (ARM® Cortex™-M0+ processor). Ανάπτυξη εξομοιωτή για το σύστημα Festo Modular Production System (Festo MPS) (2 ασκήσεις - ARM® Cortex™-M0+ processor)
Εκπαιδευτικές Δραστηριότητες
Διαλέξεις
Εργαστήριο
Εργασία (project)
Παρουσιάσεις εργασιών
Τρόποι αξιολόγησης / εξέτασης
Παράδοση εργαστηριακών ασκήσεων
Παράδοση εργασίας
Εξέταση επί της εργασίας
Τελική εξέταση
Σύνδεσμοι
On programming Languages
List of Coding Languages (the old broken link “The Language List”)
Programming by Example Home Page
Resource on Computer Languages
Programming Language Comparison
C programming Language
Περιβάλλοντα εξάσκησης με τον Διαδικαστικό προγραμματισμό και την C
Περιλιπτική αναφορά στη Βασική βιβλιοθήκη της C
“The GNU C library, described in this document, defines all of the library functions that are specified by the ANSI C standard,…”.
Programming in C: A Tutorial by Brian W. Kernighan
This ``tutorial'' is presented as a historical document, not as a tutorial.(δες δικτυακό τόπο)
A professional source editor for Windows Δοκιμάστε τη χρήση του στα πλαίσια του εργαστηρίου.
GCC, the GNU Compiler Collection
Brian W. Kernighan: Programming in C: A Tutorial
A TUTORIAL ON POINTERS AND ARRAYS IN C
Java programming Language
BlueJ The interactive Java environment.