Simplifying Computer Science Education With Advania Open Cloud
"After implementing Advania OpenCloud we were able to take the project much further … All of this leaves us a lot more time for teaching and help the students realizing their potential."
Software engineering is one of the compulsory courses in Computer Science at Reykjavik University. We at the University decided that this course should focus on practical methods, preparing students for work in the field. In the second half of the course the curriculum is based on around solving one big project. Students work in teams and they need to set up technical infrastructure to support Continuous Delivery. The main challenge is to translate all the concepts they learned in the course into coherent infrastructure.
Each team needs to implement a simple game (TicTacToe). The main focus is on getting the infrastructure right and use best coding practices but not on implemented features. To get the highest grade the team needs to:
- Store the code from the beginning in source control system
- Create a build script that runs several tasks
- Run all tests automatically (unit tests, integration test etc.)
- Deploy the solution to staging environment
- Run system tests on the solution running in staging environment
- Use Continuous Integration Server
- If all steps run successfully the solution is deployed automatically to production environment
A complete environment for continuous delivery requires a complex setup. This means that the following operations have to be implemented:
- Development environment
- Source control
- Continuous Integration server
- Staging environment
- Production environment
- The Business Need
Before we implemented Advania OpenCloud we used servers hosted on premise at the university. A lot of time was spent on administrative tasks and supporting the students which reduced significantly time and resources available for the actual project work. This problem grew exponentially as the number of students increased. When we started with the team project there were approximately 40 students in the course but for the last 2 years they have been around 250. These issues was compounded by the development environment. Each student ran her own operating system and her own set up. This meant that there was no way for us to create unified instructions on how to work on development.
The SolutionTo reduce significantly the time and resources spent on administrative task we turned to cloud based solutions. We got access to Advania OpenCloud and created a dedicated machine for each team. To do this ew created a single instance, customized it to fit our requirements, added SSH authentication credentials and finally we created a template from this instance. All servers were then created from this template. This allowed us to easily manage identical servers, and guaranteed us access all of the servers in a simple and straightforward way. When we needed to adjust the servers for the student teams we were able to make changes centrally to a set of servers quickly.
After implementing Advania OpenCloud we were able to take the project much further. Since all student groups were running the same environment it was easier for us to give them better instructions and we did not have to spend all the time on problems related to administrative issues. The setup and management time for teachers was much less, and we got a lot better overview of what the students were doing. Whenever there was unexpected behavior, we were able to quickly identify the problem, shut down the problematic server and create a new one for the team in question. All of this leaves us a lot more time for teaching and help the students realizing their potential.