Software defects lead to enormous costs for the software industry and society as a whole. While testing is useful to find bugs, it is insufficient to show the absence of certain kinds of errors or that a program satisfies its specification. Such high levels of software quality can be achieved by software verification, that is, by proving the correctness of a program with respect to its specification. Software verification has seen tremendous progress during the last decade; it continues to be an active research topic and is now also becoming increasingly popular among practitioners. This tutorial contains selected papers from the LASER summer Schools 2007 and 2008, both of which focused on correctness - Applied Software Verification in 2007 and Concurrency and Correctness in 2008. Topics covered include verification of fine-grain concurrency and transactions, the SCOOP model for concurrent object-oriented programming, the Spec# programming and verification system, verification in the prototype verification system PVS, and multi-core chip design.