At the same time, ANT is simple enough for students to master quickly. In a few short weeks, we have students writing simple ANT programs, building an ANT virtual machine, and implementing an ANT assembler. Many of the students in our CS1 course have conceptual problems that make it difficult for them to master the material on our syllabus. Pointers are one of the most difficult concepts for novice students to grasp. Once students have written assembly language code to implement address arithmetic and have used load and store instructions, pointers and addresses in higher-level languages become much more intuitive.
Assembly language teaches essential design skills and style.
Even very short pieces of assembly language code are difficult to write unless they are well designed and structured, and nearly impossible to read unless properly documented. The exercise of writing some short assembly language programs focuses on the design and style skills we try to teach in CS1, and seems to have beneficial effects on the way that students approach their larger programming assignment later in the semester. Assembly language makes clear the architecture of the underlying machine. Understanding the underlying machine demystifies the computer and programming in assembly language helps students understand how extremely complex programs can be reduced to sequences of very simple instructions. Our assembly language programming exercises from 1998 and 1997 underscore these points.