Many computer science courses require students to work with platforms and software systems of one sort or another. These requirements collide with a variety of personal computing equipment that students bring to their education. To get them on the same page, courses take various approaches. We suggest ways to streamline that experience for everyone.
Common Course Containers
Many courses provide Docker images, allowing students to develop, build, and compile their code inside of containers. However, each course tends to require a different image and container for their course, despite the fact that the majority of courses run on the same operating system with very similar packages. While this is a common way of isolating the entire runtime environment, it presents several problems:
- Courses which use containers have long "setting up" assignments.
- Students run into technical limitations with running multiple containers at the same time.
- Containers take a lot of storage on students' computers.
- Students often need additional support with containers.
With careful scripting, students can set up a container once, and download new software for each course inside of the container.
The Common Course Containers (CCC) project makes it possible to do that. Students only need to clone the respository and build the container once. Inside of the container, they can automatically download and setup course environments with the ccc
tool. The container has extra protections to make sure that course environments stay isolated despite running in one container.