The Beginning Software Engineering course is designed for professionals with limited experience in software engineering. The course provides techniques that programmers can use to produce code flexible enough to handle the inevitable change requests, easy to debug, and easy to enhance and maintain in the future. The Software Engineering course is divided into two parts. The first part describes the basic tasks one needs to complete and deliver useful software. These tasks include designing, programming, and testing. The second part describes some common software development models that use different techniques to perform those tasks.