Can Real-time Software Engineering be Taught to Java Programmers? Sally Smith, Shaun W. Lawson, and Alistair Lawson School of Computing, Napier University, 10 Colinton Road, Edinburgh, United Kingdom, EH10 5DT. {s.smith, s.lawson, al.lawson}@napier.ac.uk Abstract For several years we have been watching with envy as specialist labs are developed for multimedia students which, together with software licenses, are now costing upwards of $5,000 per seat. We would like to be able to offer as rich a learning experience for our software engineers who study a final year module on real-time software engineering. In persisting with our students’ main taught programming language of Java we argue that it is still possible to demonstrate the issues of software development for real-time systems whilst also offering realistic and rewarding practical work. Although the real-time community is still largely working in C, we believe we can educate the real-time developers of the future, and we use, as leverage for this, the ever growing body of reported work in making Java technology more suitable for time critical and embedded systems development. In this paper we present our case for a relevant real-time undergraduate laboratory based around Java. 1. Introduction Taught modules in real-time systems design are considered an established component of undergraduate degree courses in software engineering [1]. The ability to design, implement and evaluate time critical applications is a skill package sought after by not only traditional engineering employers but also, in our recent experience, increasingly by commercial product providers such as the telecommunications and entertainment industries. In the past our own software engineering graduates have largely made use of their real-time skills on large safety-critical installations such as those deployed by the aerospace industry. By contrast, recent graduates are finding use for their real-time and embedded skills in creating applications for devices such as PDAs and other in-the-field data acquisition systems , mobile phones, and point of sale transaction units. Our current real-time module, CO42018 Real Time Software Engineering (RTSE) † , is delivered to final year Software Engineering and Software Technology undergraduate students [3]. The module aims to make use of software engineering and object-oriented programming knowledge acquired earlier during the degree to allow students to design and implement concurrent programming applications and to analyse the time based properties and the general predictability of those applications. Three years ago our School moved from C++ to Java as the predominant programming language that is taught to students from level one upwards. We are therefore now attempting to teach advanced, but low level, undergraduate topics, such as game design, adaptive systems, embedded applications, and real-time software engineering to students who have little or no knowledge of C/C++, or of machine or assembly languages. † See module homepage at http://www.soc.napier.ac.uk/module/op/onemodule/moduleid/CO42018