7

First, just a disambiguation: are you teaching Assembly language or C? Cos, they are not same as your question seems to suggest. C is a high-level procedural clean code language with tremendous abilities to speak to the bare metal similar to but not as Assembler pls. It may help you bridge to assembly but it is not assembly. Let that be clear to your ...


5

The 32-bit subsets of ARM assembly language are fairly clean, orthogonal and RISC-like, as well as being a reasonably nice target for a simple compiler. Inexpensive Raspberry Pi's run 32-bit ARM code, as well as natively supporting a complete compiler development tool set (lex, yak, bison, et.al.) Almost every student is likely to possess a mobile phone ...


4

You may not win if you just use words. Instead, give them interesting but challenging exercises to do. One of the most fun exercises I ever did was to produce a Quine in assembly language. But, instead of producing a textual version of itself, as most Quines do, it produces a running copy in memory and then executes (branches to) that copy. The copy seems ...


4

My first piece of advice would be to avoid any modern hardware (and possibly to avoid hardware itself, as the simulators out there are pretty good). As far as I can tell, all of the very cheap processors out there right now (such as come with Arduino) use languages like asm, and do not lend themselves to the kind of conceptually clear assembly programming ...


3

I haven't taught about analog television but thanks to my gaming related experience (both as a gamer and game development trainer) I know that the topic of horizontal and vertical sync is very important for understanding one of the more core things of computer science, the display. Further, I am all about the cutting edge stuff. Yet, when it comes to ...


2

Forth is very interesting language which can run on bare metal, and also be as high level as you want (I've see a compiler/interpreter of subset of Pascal implemented in 11 pages) and will stretch brain of your students. I know it did mine :-) And is trivial to code some definitions in Assembly if you want. Code is incredibly compact, ideal (and still ...


2

Except for the latest iPad Pro and a few other specialized displays (vector, etc.), most laptop and mobile devices displays still update a 2D bitmap raster or composited texture quad at some fixed refresh rate, just like a CRT (but with much higher bandwidth these days).


2

Dr Michelle Strout (now at University of Arizona) used this approach when she was at Colorado State University. For hardware, the students used Meggy JR. Students were expected to write simple programs/games using a Java interface to the hardware. Initially, the hardware was purchased as kits and there was a pizza party to assemble it. The students then ...


2

I may be late to game, but you should target four "wow"s: "wow, how small .exe file is!" "wow, how fast this program is compared to Python!" "wow, and THAT is how it's done!" "wow, I'm a hacker now!" For first one, you should compare compiled sizes of some Go, C++, C and assembler programs which all do a ...


1

I would argue the best way to do this is have some demonstrations prepared: things they can build with the tools you're teaching that "look" flashy and exciting. Show some cool programs written in C, demonstrate some sort of Arduino-based program that looks interesting (a relatively simple one I've seen waters plants), something in assembly that looks ...


1

If you want to look at hardware which might also be suitable for programming in C/C++, the BBC micro:bit might be a good alternative to an arduino. It has a more self-contained set of peripherals, and is programmed in ARM assembler. It uses drag-drop style programming (you need an ASCII format hex file) over USB. Of course, you need to set up a tool chain to ...


Only top voted, non community-wiki answers of a minimum length are eligible