The definition of real-time systems. Designing systems in real time. Programming. The choice of programming languages. Reliability and tolerance to failure. Handling exceptions. Concurrent programming. Concurrent execution. Representation of processes. Synchronization and communication. Methods of shared variables. Mutual exclusion. Semaphores. Monitors. Synchronization methods. Synchronization via messages. Synchronization of processes. Naming of processes and the structure of messages. POSIX messages. Remote procedure call. Atomic actions. Asynchronous notification. POSIX signals. Processing asynchronous events. Resources for working in real-time. Access to the clock. Timeout. Specification of timer requests. Scheduling. Cyclic execution. Scheduling based on processes. Analysis of time response. Programming based on priorities. Distributed systems. Programming at low level. Languages suitable for real time operation (Modula-1, Ada, Real-time Java, Occam2, C).