This paper describes our experience of teaching a Software Engineering course based on the use of group work to teaching and practise theoretical concepts. Our work has three main aims: firstly, for the students to develop a complete software project (from specification to delivery); secondly, to acquire knowledge of the main problems of group work and how to overcome them; and finally, to underline the importance of documenting software projects effectively. The following is the programme that we have developed to achieve these goals.