The CSTutor project is split into two packages called admin and cstutor, each of which are separate programs aimed at administrative and regular users of the program, respectively.
The fundamental component in the CSTutor program is a tutorial, which consists of a title and a list of pages. Each of these pages also has a title as well as components related to the content of each individual page. Such components may include text, images, quiz questions, or an interactive shell. The quizzing and interactive shell functionality will likely be the most difficult components to implement due to the complexity of the quiz and branching systems as well as the plug-in architecture required of the shell in order to support multiple programming languages. There is also a built-in drawing tool that allows users to create their own diagrams for use in the tutorial. This may take time to implement fully as it entails writing what is essentially a miniature paint program.
The creation of tutorials and tutorial content as well as the viewing of tutorials is managed in the front end user interface by components in the cstutor package.
The admin program manages the higher level structures that store and track the tutorial. The main object in the admin program is a server where everything is stored. On this server is a list of courses, each of which has a title. For each course there is a separate professor account for each of the professors teaching the course. It is in this account that all of the tutorials the professor has created are stored, as well as the quiz results for each section and class the professor teaches. These tutorials can be accessed through the user program based on the current id and permissions of the student or teacher using the program. The administrator program should be fairly straightforward as to how tutorials are stored and accessed, but special attention needs to be given to permissions to ensure that no one can read or write a tutorial that isn’t part of a class they are currently a member of (either as a student or an instructor).