CS-E4580 Programming Parallel Computers (PPC) is a highly popular course, and it has been growing rapidly; in 2020 we had 350+ students who had registered for the course and completed the prerequisite test and 250+ students who passed the course.
The course is very much a hands-on course, and 100% of the grading is based on challenging programming exercises solved by the students. The grading system is currently semi-automatic, and it uses a combination of private GitHub repositories, self-service grading tools and test suites that we have developed for the course, plus feedback from our TAs.
In this project, we will completely redesign the system used for grading exercises. It will be based on a web user interface and a number of dedicated servers that take care of the grading. The students submit their solutions through a web user interface and they will get near-immediate feedback on their solution from the system.
The main goals are:
- Scalability of the course is massively improved. We can offer the same course also to an unlimited number of FITech students, the University of Helsinki students, and eventually open it as a MOOC to the entire world.
- Students do not need to worry about e.g. finding a suitable computer in the classroom that they can use to develop and benchmark their code.
- Students will get a much more detailed automatic feedback from the system that will help them e.g. identify the main performance bottlenecks in their current code, and to get a better understanding of how much each improvement in their code helped with the performance.
- Course staff has more information directly available on the students’ submissions, so that they can more easily give useful help to the students.
- Some potential forms of cheating are eliminated, and plagiarism can be more easily discovered automatically.
Platforms and tools
The main tools will be Python, Flask, Rust, actix, Postgresql, Isolate, and Linux.
We will use dedicated hardware for grading and cloud computing platforms for other components.
The course was already organized 100% online in spring 2020. The key components in the 2020 implementation were as follows — the goal is that in 2021 we will have completely renewed the system used for submitting and grading exercises:
Communication: We use Slack for all communication. It is used for official announcements, as a place to ask questions and to get help with exercises, for informal discussions related to the course, and to organize virtual lectures and exercise sessions.
Exercises: Five exercises, each divided in several smaller tasks. There are deadlines for 2–3 tasks at the end of each week. Solutions to exercises are returned by using a self-service grading tool and then pushing the solution and the output of the grading tool to GitHub. Our course staff will then check the solutions, give feedback on the solutions, and adjust the result of the self-service grading tool if needed.
Virtual lectures: Each Monday morning there is a 2-hour time slot reserved for the virtual lecture. The virtual lecture is coordinated in Slack. The lecture starts by self-study with pre-recorded videos and other course material. While the students watch videos and study course material, they can write questions in Slack. At the end of the lecture there is a Q&A session (30–45 minutes) that is organized in Zoom. In the Q&A session I first answer questions asked on Slack, and then students can ask additional questions either on Slack, on Zoom chat, or directly in Zoom.
Virtual exercise sessions: There are two virtual exercise sessions per week in which students can get one-to-one help with their exercises and other questions they have got about the course material. The exercise session is organized using Slack and Zoom. There is a special Slack channel in which students can post help requests during the exercise session, and ask for help in either Slack or Zoom. Our course staff will then process the help requests one by one and contact students.
CS-E4580 – Programming Parallel Computers (5 ECTS)
School of Science, Department of Computer Science