Title: Database Programming - From Active Databases to NoSQL and Cloud Computing Abstract: Database applications define highly complex business logic that cannot be expressed purely in SQL. This prevented them from being moved completely into the database in order to achieve high performance. Therefore, vendors of relational databases started eventually to provide procedural extensions to SQL such as PL/SQL (Oracle Database), SQLPL (IBM DB2), T-SQL (Microsoft SQL Server), or PL/pgSQL (PostgreSQL). Due to the introduction of server-side programming languages, databases began to shift from being absolutely passive to becoming more active. Along with the rapid growth of some Web companies, radically new approaches to data management, known as NoSQL, emerged. NoSQL databases broke with not only how data is stored and maintained, but also how it is accessed and processed. Everyday programming languages such as Java (e.g., Apache Hadoop), Erlang (e.g., Riak), or JavaScript (e.g., MongoDB, CouchDB) were simply used as the query language. While the need for stronger consistency or SQL stroke back in many cases, the demand for supporting modern programming languages in databases remained. With the ongoing transition to cloud computing, developers now want to keep their preferred programming languages and environments when switching to database-side programming. Consequently, vendors of cloud databases try to support multiple popular programming languages such as JavaScript, R, and Python (e.g., Microsoft Azure Cosmos DB [NoSQL], Amazon Redshift [SQL]). In this lecture, we will review the common history of databases and programming languages, give an introduction into database-side programming for some relevant systems, and discuss the challenges of effectively and efficiently integrating modern programming languages with databases.