Calculus, Basic Computer and Network Architectures, Programming and Data ... Curriculum, Deliverable D37, ReSIST NoE, http://resist.isti.cnr.it/home.php.
Resilient Computing: a multi-disciplinary MSc Curriculum1 Luca Simoncini Professor of Computer Engineering Faculty of Engineering, University of Pisa, Italy 1. Introduction The current state-of-knowledge and state-of-the-art reasonably enable the construction and operation of critical systems, be they safety-critical (e.g., avionics, railway signaling, nuclear control) or availability-critical (e.g., back-end servers for transaction processing). The situation drastically worsens when considering large, networked and evolving systems either fixed or mobile, operated by humans, with demanding requirements driven by their application domain, i.e. ubiquitous systems. There is statistical evidence that these emerging systems suffer from a significant drop in dependability and security in comparison with the former systems. There is thus a dependability, security and human factors gap opening in front of us that, if not filled, will endanger the very basis and advent of Ambient Intelligence (AmI). Filling the gaps clearly needs dependability, security and human factors technologies to scale up, in order to counteract the two main drivers of the creation and widening of the gap: complexity, usability and cost pressure. Coping with complexity, usability and cost certainly demands significant progress in the rigorous design of the functionalities provided by the information infrastructures. However, the interplay between: a) rigorous design on one hand, and b) complexity, usability and cost on the other, will inevitably lead to residual development defects, vulnerabilities, and room for interaction mistakes. It is therefore mandatory to provide pervasive information infrastructures with scalable resilience for survivability in direct support of the emerging pervasiveness of computing systems. Resilient computing thus needs integration of the techniques and technologies for dependability, security and human factors and put to the forefront four technologies for resilience: evolvability – dealing with changing complexity, assessability – how to measure a complex evolvable system, usability – how to make easier human operation, and diversity – how to take advantage of the redundancy inherent in such systems. Resilient computing is “per se” very challenging, but there is the feeling that a methodological approach and a methodic attitude are lacking. The situation is even worse considering that a gap exists between theoretical knowledge and what is done in practice. This opens a very relevant educational issue: there is a gap between what is known and what is done. A point that should be raised, when shaping any system design course is the ratio of fundamentals and principles, which should be taught, and the part of teaching related to the status of the art in techniques and technologies. A student, who in the future will become part of a team of system developers should be taught all fundamentals and principles which will remain invariant in the years to come. This is the only way to reduce the gap between what is known and what is done. The situation comes to be much worse if we consider the challenges that are behind teaching resilient computing and the design of ubiquitous systems. There is no university that is able to provide today an integrated and methodical way of teaching all that is needed to deal with evolvability, assessability, usability and diversity, and this gap comes from the fact that these techniques have been developed independently without the understanding the need of mutual integration to cope with the design of complex, pervasive ubiquitous systems. It is, in particular, mandatory to proceed with a methodical plan of teaching, starting from basic and fundamental theory that tries to provide the invariants that will be always present when dealing with mastering complexity, proceeding with the most updated tools and techniques related to the four resilience technologies and finally challenging the students with the application of the gained expertise to a real, even if of limited dimension, project run in cooperation with industry. At this point the student will be able to produce an original work in a thesis that will show the ability of integrating concepts in a methodical way. In different words, a theoretical strong background (as in Computer Science) and a likewise strong engineering approach (as in Computer Engineering) are both needed for a curriculum in Resilient Computing. The level is best set for a MSc degree. As a consequence also the 1
This paper has been supported by the EC Network of Excellence 026746 ReSIST - http://www.resist-noe.org/
bachelor level has to be adapted to prepare students for the proposed MSc curriculum. 2. Curriculum organization [1], [2] The curriculum is structured in 4 semesters (tentatively 30 ECTS each) over two years, as in the following Tables. The number of ECTS is not absolute but indicative of the relative weight among the several courses. Courses worth 6 ECTS are taught in parallel, while there is an ordering between courses worth 3 ECTS: 1st Year
1st semester: Basics and Fundamentals (30 ECTS) Courses: • Advanced Probability and Statistics (6 ECTS) • Cryptology and Information Security (6 ECTS) • Logic in Computer Science (6 ECTS) • Advanced Graph Theory (3 ECTS) • Human Factors, Human and Organisational Behaviour (3 ECTS) • Fundamentals of Real-Time Systems (3 ECTS) • Fundamentals of Dependability (3 ECTS) 2nd semester: Methods, Techniques and Tools (30 ECTS) Courses: • Computer Networks Security (6 ECTS) • Fault and Intrusion-Tolerant Distributed Systems and Algorithms (6 ECTS) • Dependability Evaluation of Computer Systems (6 ECTS) • Testing, Verification and Validation (6 ECTS) • Usability and User Centred Design for Dependable and Usable Socio-technical Systems (6 ECTS)
2nd Year
3rd semester: Projects (in cooperation with industry on specific application fields) (30 ECTS) Courses (common to all application tracks) • Management of Projects (3 ECTS) • Fault Tolerant Middleware- based Systems (3 ECTS) • Software Reliability Engineering (3 ECTS) Application track: Telecom. Courses (specific for this track): • Resilience of Protocols and Architecture (3 ECTS) • Resilience of Mobile Applications (3 ECTS)
Application track: Safety critical Systems Courses (specific for this track): • Development Process and Standards for Safety critical Applications (3 ECTS) • Architectural Issues and Examples of Systems (3 ECTS)
Application track: e-Business Courses (specific for this track): • Resilience of SOA and Web-based Applications (3 ECTS) • Damage Tolerance in Large scale Systems (3 ECTS)
Common to all Application tracks: • Project in cooperation with Industry (9 ECTS) • Space for additional Courses (6 ECTS) 4th semester: Master's Thesis and Dissertation (30 ECTS) • Specific Courses and Seminars (3 ECTS) • Preparation and Presentation of the Thesis (27 ECTS)
A very extensive set of support material has been developed [3], and is available on line. 3. Curriculum Pre-requisites A student who wants profitably enroll to the Curriculum in Resilient Computing would take advantage from having a basic knowledge in the following fields: Discrete Mathematics, Calculus, Basic Computer and Network Architectures, Programming and Data Structures, Basics of Operating Systems, Basics of Software Engineering, Basics of Probability and Statistics, all of them to be thought at a bachelor level. References [1] http://resist.isti.cnr.it/home.php [2] Resilient Computing Curriculum, Deliverable D37, ReSIST NoE, http://resist.isti.cnr.it/home.php [3] Resilient Computing Courseware, Deliverable D38, ReSIST NoE, http://resist.isti.cnr.it/home.php