TTK4145 (sanntid)
Real-time Programming
Spring
Trondheim
English
About this course
Content
Topics: Programming formalisms for real-time systems; POSIX, Ada, Java and Go. Threads/processes, scheduling, synchronization and communication, concurrency. Fault Tolerance, availability and consistency. Software quality and development methodology.
A software development project done in groups is a significant part of the course.
Exercises.
Learning outcomes
Knowledge:
- Thorough knowledge of synchronization mechanisms like semaphores and monitors.
- Thorough knowledge of message-based synchronization.
- Thorough knowledge of threads, processes, scheduling and synchronization in context of a real-time operating system.
- Thorough knowledge of pitfalls in real-time programming.
- Thorough knowledge of error handling and fault tolerance.
- Thorough knowledge of availability and consistency in systems with more threads/processes.
- Knowledge of the programming languages C, C++, Java, Ada and Go.
- Knowledge of CSP, formal methods and use of analysis tools for real-time systems.
Skills:
- Good skills in design and development of real-time software, both based on shared variable synchronization and message-passing.
- Ability to plan and execute a software development project of significant complexity (~1-2 thousand lines of C code)
- Good skills in using one programming language (the one used in the project, the project groups choice).
- The student should be able to relate constructively in his design to error handling and consistency in systems with more participants.
General Competence:
- Teamwork.
- Software development
- Information technology in general.
Teaching methods
Lectures, exercises and project. The project is quite large, and will be done in cooperation with two other students as a main rule.