The lecture introduces basic principles of distributed systems and distributed algorithms. It covers communication models (messaging, remote procedure call, the client/server model, synchronous and asynchronous communication, the Socket API), and challenges like different data encodings, clocks in distributed systems, determining a global state, concurrency and transactions and replication. The exercise will deepen the understanding of lecture content using exercise sheets. The lecture and exercise are held in English.