Implementation of a learning environment for the system programming language
Implementation of a learning environment for the system programming language
Background
In the System Software and Distributed Systems department, a system programming language based on the Pascal and Modula-II languages is used to visualise algorithms from the areas of operating systems and distributed systems. Using the system programming language, it is possible to present the essential points of an algorithm concisely. Unfortunately, there is currently only an "intuitive" specification for this language and no concrete implementation in the form of a parser or translator. In order to enable students of the relevant teaching modules to familiarise themselves systematically with the system programming language, the aim of the project is to lay the foundations for an interactive learning system which - based on an implementation of a system programming language translator - is capable of teaching both the language itself and relevant applications from the fields of operating systems and distributed systems.
Job description
Specific subtasks to be completed:
- Using the existing algorithms and the intuitive, semi-formal language description from the documents for the courses Practical Computing Science or Operating Systems 1 (and possibly Operating Systems 2 and Distributed Operating Systems), the syntax and semantics of the system programming language should be formally specified - in cooperation with the teachers of the relevant teaching modules.
- a translator is to be implemented that translates a source programme written in the system programming language first into an intermediate code and then into one of the target languages C or Java
- Based on the translator, an interactive, web-based, prototypical ``learning system'' is to be created for some of the contents of the above-mentioned lectures, e .g:
- the system programming language itself
- semaphore implementation
- process state model and process change
- Address conversion for virtual memory
- Page swapping strategies for virtual memory
- UNIX file management using I-node tables
- Distributed mutual exclusion