1 Tίτλος του µαθήµατος Κωδικός αριθµός µαθήµατος Τύπος του µαθήµατος Επίπεδο του µαθήµατος Έτος σπουδών Εξάµηνο Πιστωτικές µονάδες ECTS 5 Προηγµένες Τεχνικές Προγραµµατισµού 22Γ702 Μάθηµα επιλογής Προπτυχιακό 4 ο 8 ο Όνοµα του διδάσκοντος/των διδασκόντων Επιδιωκόµενα µαθησιακά αποτελέσµατα του µαθήµατος εξιότητες Προαπαιτήσεις Περιεχόµενα (ύλη) του µαθήµατος Κλεάνθης Θραµπουλίδης Εκµάθηση του βασικών µηχανισµών προγραµµατισµού σε επίπεδο υλικού και βασικού λογισµικού και εξοικείωση µε τις σχετικές κατασκευές της γλώσσας προγραµµατισµού C που επιτρέπουν άµεση πρόσβαση στους πόρους του συστήµατος (hardware και software) για την βέλτιστη αξιοποίηση τους. Εκµάθηση του νοητικού µοντέλου του Ταυτόχρονου προγραµµατισµού (concurrent programming) και κατανόηση των µηχανισµών της Java για την υποστήριξη ανάπτυξης εφαρµογών ταυτόχρονου προγραµµατισµού. Εξοικείωση µε το αντικειµενοστρεφές παράδειγµα προγραµµατισµού και τις δυνατότητες που αυτό παρέχει για την ανάπτυξη ενσωµατωµένων συστηµάτων πραγµατικού χρόνου (real-time embedded systems). Τα στοιχεία αυτά είναι άκρως απαραίτητα για την ανάπτυξη των πολύπλοκων σηµερινών ενσωµατωµένων συστηµάτων πραγµατικού χρόνου. Κατανόηση κώδικα λογισµικού σε επίπεδο υλικού και δυνατότητα επέκτασης της λειτουργικότητας τους. Αυτοδύναµη ανάπτυξη κώδικα σε χαµηλό επίπεδο µε αξιοποίηση των µηχανισµών διεπαφής µε υλικό, λειτουργικό σύστηµα και assembly. Αξιοποίηση της προδιαγραφής real time Java specification για την ανάπτυξη λογισµικού ενσωµατωµένων συστηµάτων. Αυτοδύναµη ανάπτυξη πολυνηµατικών εφαρµογών αξιοποιώντας αποτελεσµατικά το µοντέλο του ταυτόχρονου προγραµµατισµού µέσα από τις σχετικές κατασκευές της γλώσσας προγραµµατισµού Java. Γνώση του διαδικαστικού και του αντικειµενοστρεφούς παραδείγµατος προγραµµατισµού. Εξοικείωση µε τις γλώσσες προγραµµατισµού C και Java. 1. Εισαγωγή στο λογισµικό ενσωµατωµένων συστηµάτων. Τεχνολογίες σχεδιασµού και υλοποίησης λογισµικού ενσωµατωµένων συστηµάτων. 2. Προγραµµατισµός Χαµηλού επιπέδου (Low level programming). Κατασκευές της γλώσσας προγραµµατισµού C για προγραµµατισµό χαµηλού επιπέδου. Η προγραµµατιστική διεπαφή της C µε την Assembly. Αξιοποίηση υπηρεσιών του λειτουργικού συστήµατος. Άµεση
πρόσβαση στο υλικό. Μελέτη περίπτωσης: Ανάπτυξη εφαρµογής για την αξιοποίηση του UART 8250. 3. Αξιοποίηση της τεχνολογίας αντικειµένων (Object technology) στην ανάπτυξη ενσωµατωµένων συστηµάτων. Εισαγωγή στην UML για σχεδιασµό συστήµατος βασικά διαγράµµατα σχεδιασµού. Η Java ως γλώσσα προγραµµατισµού για λογισµικό ενσωµατωµένων συστηµάτων. Η προδιαγραφή της Java για ενσωµατωµένα συστήµατα πραγµατικού χρόνου (Real Time Specification for Java). 4. Ταυτόχρονος Προγραµµατισµός. Νοητικό µοντέλο του ΤΠ. Το πρόβληµα του αµοιβαίου αποκλεισµού (Mutual Exclusion problem). Αλγόριθµος Dekker. Σηµαφόροι (semaphores). Μόνιτορς (monitors). Πρόβληµα παραγωγού καταναλωτή. Μηχανισµοί της Java για την υποστήριξη του ταυτόχρονου προγραµµατισµού. Αξιοποίηση των πολυπύρηνων επεξεργαστών (multi-core programming) Μελέτη περίπτωσης: Το πρόβληµα του κοιµώµενου Κουρέα. 2 Συνιστώµενη βιβλιογραφία προς µελέτη Εργαστηριακές Ασκήσεις 1. Ανάπτυξη εφαρµογής για την αξιοποίηση του UART 8250. (3 ασκήσεις) 2. Ανάπτυξη εφαρµογής για το πρόβληµα του κοιµώµενου Κουρέα. (3 ασκήσεις) 3. Ανάπτυξη εξοµοιωτή για το σύστηµα Festo Modular Production System (Festo MPS) (2 ασκήσεις) Έκδοση: 1η/2009 Συγγραφείς: BROOKS WEBBER ADAM ISBN: 978-960-524-282-4 ιαθέτης (Εκδότης): Ι ΡΥΜΑ ΤΕΧΝΟΛΟΓΙΑΣ & ΕΡΕΥΝΑΣ-ΠΑΝΕΠΙΣΤΗΜΙΑΚΕΣ ΕΚ ΟΣΕΙΣ ΚΡΗΤΗΣ Αριθµός Σελίδων 610. ΤΑΥΤΟΧΡΟΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Έκδοση: 1η/1998 Συγγραφείς: M. BEN-ARI ISBN: 960-209-343-9 ιαθέτης (Εκδότης): ΕΚ ΟΣΕΙΣ ΚΛΕΙ ΑΡΙΘΜΟΣ ΕΠΕ Σελίδες: 200 ΠΡΑΓΜΑΤΟΛΟΓΙΑ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Έκδοση: 2η/2009 Συγγραφείς: MICHAEL L. SCOTT ISBN: 978-960-461-230-7 ιαθέτης (Εκδότης): ΕΚ ΟΣΕΙΣ ΚΛΕΙ ΑΡΙΘΜΟΣ ΕΠΕ Αριθµός Σελίδων 776.
Προηγµένες Τεχνικές Προγραµµατισµού Πανεπιστηµιακές Παραδόσεις. Συγγραφέας: Κλεάνθης Θραµπουλίδης Εγκεκριµένος αριθµός σελίδων: 247 3 ιδακτικές και µαθησιακές µέθοδοι Μέθοδοι αξιολόγησης/βαθµολόγησης Γλώσσα διδασκαλίας Ravi Sethi, Programming Languages: Concepts and Constructs, 2nd Edition, Addison Wesley 1996. Reprinted with corrections April 1997. Andy Wellings, Concurrent and real-time Programming in Java, Wiley, 2004 Αξιοποίηση της constructivism based προσέγγισης και του assignment based παραδείγµατος διδασκαλίας. http://seg.ece.upatras.gr/oocourse/ http://seg.ee.upatras.gr/oocourse/concurrent.htm Αξιολόγηση και βαθµολόγηση κατά τη διάρκεια εκτέλεσης του εργαστηρίου. Τελική γραπτή εξέταση. Ελληνική.
4 Course title Advanced Programming Techniques Course code 22702 Type of course Optional Level of course Undergraduate Year of study 4 Semester 8 ECTS credits 5 Name of lecturer(s) Kleanthis Thramboulidis Learning outcomes Competences Prerequisites Course contents Recommended reading Deep understanding of the fundamental programming constructs for system (hardware) and low level software (OS and assembly) development. Familiarity with the low level C constructs that allow direct access to the system resources (hardware and software) so as to use them effectively. Clear understanding of the conceptual model of the concurrent programming paradigm and the Java language constructs that support the development of multi-threading applications. Familiarity with the object-oriented programming paradigm and the possible ways of exploiting this paradigm in the embedded systems domain. This staff is extremely important for the development of today's complex embedded real-time systems. Understand third party code at the system level and apply modifications and extensions. Be able to develop system level code exploiting the C mechanisms for interfacing to hardware, to OS and to assembly code. Be able to use the basic constructs of the real-time specification for Java for the development of embedded systems. Be able to develop multithreading applications by effectively exploiting the conceptual model of the concurrent programming paradigm through the relevant constructs of the Java programming language. Knowledge of procedural and object-oriented programming paradigms. Familiarity with the C and Java programming languages. 1. Introduction to embedded systems. Technologies for the design and implementation of embedded systems. 2. Low level programming. C language constructs for low level programming. The C programming interface to assembly language. Interfacing to the operating system services. Direct access to the system s hardware. Case Study: Development of an application to exploit the UART 8250. 3. Using the Object technology for the development of embedded systems. Introduction of the UML for system design - basic diagrams. Java as a programming language for embedded systems software. The real time Java specification. 4.Concurrent Programming. Conceptual model of concurrent programming. The mutual exclusion problem. The Dekker s algorithm. Semaphores. Monitors. The producer-consumer problem. Java mechanisms for concurrent programming.5. Exploiting multi-core processors (multi-core programming) Case study: The sleeping Barber problem. Lab Assignments 1. Using the UART 8250. (3 assignments) 2. The sleeping barber problem. (3 assignments) 3. The simulator of the Festo Modular Production System (Festo MPS) (2 assignments) Version: 1i/2009 Authors: BROOKS WEBBER ADAM ISBN: 978-960-524-282-4
Provider (Editor): INSTITUTE OF TECHNOLOGY & RESEARCH, UNIVERSITY PUBLICATIONS OF CRETE Number of Pages 610. "CONCURRENT PROGRAMMING" Version: 1i/1998 Authors: M. BEN-ARI ISBN: 960-209-343-9 Provider (Publisher) KLEIDARITHMOS Publishing Ltd. Pages: 200 "Pragmatics of programming languages" Version: 2i/2009 Authors: MICHAEL L. SCOTT ISBN: 978-960-461-230-7 Provider (Publisher) KLEIDARITHMOS Publishing Ltd. Number of Pages 776. Author: Kleanthis Thramboulidis Approved Number of pages: 247 5 Teaching and learning methods Assessment ang grading methods Language of instruction Ravi Sethi, "Programming Languages: Concepts and Constructs", 2nd Edition, Addison Wesley 1996. Reprinted with corrections April 1997. Andy Wellings, "Concurrent and real-time Programming in Java", Wiley, 2004 Use of constructivism-based approach and assignment-based teaching paradigm. Evaluation and assessment of laboratory exercises. Final exam. Greek