The objective of this course is to give both (i) basic and some advanced theoretical knowledge and (ii) practical skills in software engineering and project management. In short, in this course we will take a practical perspective, but the course also includes a fair amount of theoretical concepts and ideas. The course is structured around lectures, activities and a project.
The lectures and activities give training about all the theoretical aspects related with specifying, managing and maintaining large scale and complex software projects; emphasizing agile approaches over others.
The group project, instead, is designed to demonstrate how to implement agile processes using a small scale project while providing students the opportunities for reflection on their own experiences. Each project group will be entrusted with the task of designing and developing one of the three main components of a larger project. Later on, each group will have to integrate their component with the software produced by other teams in order to deliver a complete working product.
The main content we cover in the course is:
- requirements definition and specification,
- natural language specification,
- design methods,
- reliability and safety,
- validation and verification,
- project planning,
- quality assurance.
For the purposes of this course I have developed a new larning framework, that we call the impossilbe project, which includes partial gammification and roleplaying to enhance the learning experience. That is, during the course we use a virtual currency - called Uppsalines - to encourage students participation. Most of the details of the learning framework are desribed in the course webpage in Studium - the Uppsala University’s learning platform.