On machine learning courses, theoretical background is taught in classroom sessions with the help of an lecturer, and pen-and-paper exercises are completed and checked with the course assistant during the exercise sessions. In order to gain experience in solving practical machine learning problems, courses have term projects, where students practice solving a machine learning problem of practical importance. The term project usually involves a task and a data set, and the students will implement a solution, run the experiments, and write a report resembling a conference article. On our courses with 5 ECTS credit units, the practical term project is estimated to take 1 ECTS worth of work. The course is taught for the advanced Master's level students and beginning post-graduate students and is part of the Macadamia Master's program in data mining and machine learning [Raiko et al., 2008]. Traditionally, the students have the task of implementing a solution to the machine learning problem from scratch. The most popular tool for the implementation has been Matlab [Mathworks, 1994]. Although Matlab supports quick prototyping, a large part of the implementation work goes into handling inputs and outputs and other practical annoyances and may divert the focus of the student from machine learning to "just getting the programs to work" or particular programming details on the chosen environment.
In enable the students to focus most of their effort on machine learning and modeling, rather than programming details, we have tried an alternative approach. We provide a ready implementation that has been tested and well documented. This allows students to concentrate on the machine learning aspects. The term project contains problems, from which some can be solved just by running the software, and some require extending the software in some way, say implementing cross-validation. We believe that the program package may appeal to students in both machine learning [Bishop, 2006] and data mining [Hand et al., 2001].
In Section 2, we describe the history and the design decisions behind BernoulliMix software package, the individual programs implemented and continue by explaining the design and structure of documentation in Section 3. We discuss the BernoulliMix package in Section 4 in light of other possible solutions. In Section 5, we summarize our preliminary experiences about BernoulliMix.