Profile of the course
Many students will get involved in software related projects during their professional career. Often, they will have to communicate with software developers, either in the role of end users or as (formal) clients. In some cases, they will have to write their own programs, for instance to complete a thesis project that involves modeling, simulation, optimization, or large-scale data processing. For these reasons, it is essential for students to build up competencies in software development.
Software systems are developed to serve a specific purpose for specific groups of users. Such systems typically consist of many interacting components. Designing and implementing software systems goes beyond small-scale and ad-hoc programming. The techniques for building them are known under the term Software Engineering.
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. In other words, it is the application of engineering to software. In this course we cover the process of developing a computer program from an initial idea to a tested and maintainable software system.