This document catalogues common software programming language vulnerabilities and their mitigations in the development of systems where assured behaviour is required for security, safety, mission-critical and business-critical software. In general, this guidance is applicable to the software developed, reviewed, or maintained for any application. This document is Part 1 of a series. Vulnerabilities and their mitigations are described in this document in a generic manner that is applicable to a broad range of programming languages. This document is supplemented by other Parts in this series that describe how vulnerabilities catalogued in this document arise and how they can be mitigated in specific programming languages, such as C, C++, Ada, Java, Python, SPARK, and Fortran.