Integrating Assembly Language Programming into High School STEM Education (work in progress)
Abstract Integrating Assembly Language Programming into High School STEM EducationEarly exposure to assembly language is beneficial to high school students prior to learning higherlevel languages so that the operations of hardware are more intricately understood. Assemblylanguage programming is a core skill that allows students to explore principles of computerarchitecture, functional logic, design, and computer arithmetic. We designed a step-by-stepSTEM education class for high school students by providing young students hands-onopportunities to use and understand assembly language. By focusing on the mechanics ofinformation transfer and control within a microcontroller, the content of this curriculum was ableto include software design, symbolic programming techniques, microcontroller architecture,embedded control, and interaction with circuit boards. During this course, students also learnaddressing modes and their relation to arrays, subprograms, parameters, linkage to high levellanguages, and the assembly process. Most importantly, students obtain hands on experiencedeveloping assembly language.This assembly programming course is offered at an East Tennessee public high school where aformer engineer teaches approximately 20 sophomores programming skills by using industrymicrocontrollers. The initial curriculum was designed with increasing complexity that would besupported by lectures and hands-on labs. A progression of labs that build the students’ learningprocess was necessary, instead of two or three labs that thoroughly exercise and demonstrate thefeatures of a microcontroller. Despite several initial basic labs, several introductory lectureswere necessary. These lectures covered decimal-to-hexadecimal conversion, microcontrollerfunctionality (timers, analog/digital conversions, inputs, outputs) and a basic description of theintegrated development environment (IDE). During the first lab, the instructor discovered thatstudents needed to learn initialization routine, interrupt routine, main routine, and static variabledeclarations. Although a reduced instruction set computing (RISC) device was used, initiallectures did not explain the entire instruction set. Instead, initial labs used only a basic subset ofthe entire instruction set, and this was expanded in support of more complex labs.Students have the background of abstracting and defining sequences of steps to solve a mathproblem through their second or third high school math classes. These sequences have exactparallels in computing. Concepts such as interrupts, declaration of variables, and matchingsingle algebraic statements with a series of assembly statements are new to students. Theinstructor has defined lab programs such that they have large initialization, interrupt handlers,and then a very small “main” code segment. In the future, this will provide a foundation for highlevel language concepts such as functions, methods, events, handlers, and initialization ofvariables. It is obvious that the creative appeal that programming offers to engineers will inspirehigh school students. When LEDs turn on, when a message is sent and received, or when anLCD displays the correct output, students showed their excitement and satisfaction. A pre-andpost-measurement on learning outcome was assessed.
Read more