The goal of this lecture is to teach principles, methods and tools for the development of secure software applications. To this end, basic concepts are first introduced. This is followed by process models for developing secure software and evaluating the maturity of development processes. Along the phases or process groups of software development, central principles, methods and tools are then introduced and explained. Special attention is given to threat and risk analysis, security requirements, principles and patterns for designing secure software applications, secure and insecure software implementations, security tests and evaluation of the security properties of software applications.