Hide menu

Programming Project with Open Source Code

Course information

Course idea

In this course you will be given the chance to engage in a real-world open source project. You will be working with a project of your own choice and by contributing to the project you will meet the examination requirements of the course. This will give you a unique and hands-on experience with actual softare development, opportunities to interact with software developers around the world, and something that you can later show to potential emplyers as part of your portfolio.

Course goals

The course goals for this course are as follows.
  1. Use existing conventions and follow established processes to contribute through software to a distributed, large-scale development project.
  2. Present changes and updates so external parties may approve submissions.
  3. Create a time plan and monitor progress through a common development project
  4. Use appropriate tools for contemporary, large-scale software development
  5. Independently acquire new knowledge and skills in order to contribute to a large-scale software project.

Goal 1 is examined through accepted submissions to a large-scale open-source project. This is the main goal of the course. In order to achieve goal 1 and have external reviewers of submissions approve students' work, students will have to fulfill goal 2, and ensure that external reviewers can successfully review their work. Contributing to a large open-source project requires independent work, and skills related to project management. Therefore, students are required to demonstrate that they can perform goal number 3 during weekly 1h seminars. Projects that scale to a large number of developers (50+) typically make use of toolchains for continuous builds, tests and integration of software. Students will therefore need to present how they make use of development tools for contemporary software development (goal 4). Each project will be unique in some sense, requiring students to learn new skills and techniques in order to contribute. As part of the course, students need to plan for, and independently acquire, relevant knowledge to work on their chosen project.

Course format

The first week of the course, you will select a project that you wish to contribute to. You are free to choose any project as long as it meets the requirements (see below for details).

Note that projects are required to be actively developed by a sufficiently large group of developers so that you will come in contact with an active community. Therefore, this year we require projects to be actively developed by at least 15 developers.

The course features weekly seminars, where each group of four to seven students will get to demonstrate their progress. The first week, you get to write contribution plans that describe how to contribute to a project. Every second week, there will be a sprint review, where the plan for the sprint is compared to the outcome of the sprint. Each sprint will also contain a mid-sprint meeting, where participants are required to participate to report on their progress and discuss issues during development.

Criteria for grades are found on the Examination page.


Projects that students select to work in during the course will have to fulfill some basic criteria on their size. Currently, we define a "large-scale project" as being one that is
  • actively developed,
  • by at least 30 developers, of which 15 have been active in the last three months,
  • with at least 1000 commits

Lecture slides

Introductory lecture slides.

Page responsible: Mikael Asplund
Last updated: 2021-09-07