I want to spend my sabbatical year re-thinking my perspective on C++ and Assembler and how to teach engineering and computer science material using those two languages. To keep myself focused I’ll need a target application, ideally with hardware. In fact, two applications would be ideal:
- Controlling chip heat
- Alarm system
The first application would permit for a relatively complex software task without requiring the learner to develop hardware. Kinetis microcontrollers have a built-in thermometer in the chip and the software application could regulate how many calculations get done in a given period of time based on the heat effect those calculations cause. Perhaps we could explore implementing the classic PID controller as part of the process.
The second application would be much more difficult but would be more meaningful as a meaningful, real-world task. A home alarm or “smart home” system is contemporary example given the proliferation of Alexa and Nest. Even Honeywell, the maker of many “dumb” alarm systems, has gotten into the game. Based on a directed studies project that I developed with some students, it’ll be a microcontroller-based home monitoring system that incorporates sensors, RS-485 hardware and a communication scheme based on MODBUS.
The Alarm System application is a really good one for exploring a variety of topics that go beyond C++. Privacy is a big one and it will let me explore elements about computer security, an important program at York University that I need to learn more about. Given that so many security researchers are big into Assembler as an analysis tool, it also dovetails nicely with my desire to use Assembler to better understand what’s going on behind-the-scenes of the C and C++ compilers, similar to how I previously used MapleSim to synthesize dynamics equations in Maple.