This course focuses on software development, from the point where several requirements are defined through the development to the actual deployment and closure. The aim is to give participants knowledge of data models and system development methods together with an understanding of the algoritmic principles  ensuring efficient software. The course will start with a part that focuses on different elements from object oriented programming and software engineering, such as the process of making software systems and the unified modelling language for documenting the system. The second part dig into the underlying understanding of datastructures and the classical algorithms used to develop efficient applications.  In the third and final part a small desktop system is under development with graphical user interface and database. We introduce how to create and query relational databases, and a java program with minor GUI programming in JavaFX looking at backend and frontend. The aim is to be able to design and implement a system combining GUI and DB, like most real-world applications.

Each of the three parts will contribute to a portfolio that will be the foundation for the exam in the course. Each portfolio part defines specific requirements for the content and will be described during the course. Each portfolio part is limited to maximum 5 pages[1] and must be handed in during the course on the Moodle page.

In the hand-in for the exam, you are allowed to add upto 5 pages with comments/reflections to the portfolio parts, such that the final exam document will be the three portfolio parts plus you final comments/reflections. The exam hand-in must be between 2 and 20 pages.