Using Power to Improve C Programming Education

Abstract

We have recently used a new automatic software grading system based on the Power Architecture to improve the quality of computer science education, specifically in advanced courses on (1) the C programming language, and (2) Multicore Programming and it will be used in other courses as well, starting in 2016. This talk will focus on the benefits of using the Power Architecture for this system and explain the benefits
to students and educators. The educational goal for the C course is that the students write clean and elegant C code, and for the multicore programming to write as efficient code as possible to solve a graph problem. The Forsete (forsete.net) automatic grading system, lets students mail in C source code which is then checked if it conforms to the Linux kernel coding style guide, compiled and executed with both random test input and fixed input for corner cases. If the tests are passed the code is given a score which is equal to the static memory used, i.e. instructions and static data. In addition to the score, a disassembly of the code is also provided as well as the number of Power instructions used by each function in their code. This result is mailed back to the student and a public highscore list is maintained (with the course winner given a small prize).

This system has turned out to have an amazing effect on learning outcome of the students. Instead handing in a solution waiting for manual grading they get feedback within a few minutes. The highscore list makes the students compare their score with others and both makes them reflect on their designs and triggers the obvious desire to improve. To reach the top positions at the highscore, it is necessary to understand the disassembled Power machine code. It is here the advantage of using the Power Architecture comes into play. Students appreciate the elegance of the Power Archtitecure and this contributed to their often amazing efforts.

Before using this system in September 2015, I had a small fear that the winning solutions would be ”ugly hacks” but it turned out the most elegant solutions where in general also the smallest. For the multicore programming course, the main advantage of using Power processors mainly is the more advanced memory model compared with other architectures. The Forsete system is open to the public for free through the web site writing-efficient-c-code.com and (at the time of writing) currently there is a programming challenge to do polynomial multiplication as memory efficient as possible but this list will grow. This web site is for a book on ISO C and the book also introduces the Power architecture.

The benefits to educators, apart from improved learning outcomes, is the automated grading. More than 4000 thousand assignments were graded during 7 weeks without any manual work required by any teaching staff.

 

Speaker Bio

Dr. Jonas Skeppstedt has done research on optimizing compilers and multicore computer architecture in Lund, Chalmers, and USC in Los Angeles; his lmpcc compiler was rewarded ISO C certification in 2003 for C99; has taught C programming at Lund University for many years and has developed safety-critical C code for the new European Rail Traffic Management System (ERTMS), and helped German lawyers as expert witness on the C programming language.