Since the beginning of our Bachelor Aerospace study program, we are providing education in foundations of computing through a series of two lectures. We designed the lecture to contain a mixture of computer science, programming, and digital electronics tailored to practical requirements of the aerospace field: high performance, efficiency, real time, embedded, …
Our first year students, however, have varying prior knowledge of computing. In order to break barriers for those with little experience, we implemented an educational subset of the C language and a simple assembly language to steer a small car (should be a spaceship, soon!). Learners can use this language using only their web browsers and learn and practice challenging concepts of algorithms such as recursion, invariants, and modularization. As it is an exact subset of C, the knowledge and routines are applicable later without any step of translation.
It is modeled after the famous Niki language based on Pascal and it allows us to teach in a playground setting the relation between source code, assembly, and machine code without distracting details. While we second that visual interactive approaches like Scratch are a very good choice for young learners, the special situation of Aerospace student is that they will be implementing aspects in C and assembly in their applications. For example, the boot loader code of TUM’s student satellite has been written in plain assembler for various reasons.
This tool has received pretty positive feedback and we have seen quite good results in practical assignments. But the best thing about it: it is entirely written in C and our experienced students use the time trying to understand grammar, bison, flex, web assembly and more. In this way, we found a way helping inexperienced students with their first steps while providing deep and inspiring implementation details for self study for experienced students.