We are writing a textbook that presents the topics of Assembly Programming and Computer Architecture to students with a focus on software engineering. Software engineers who understand the fundamentals of computer architecture and assembly programming better understand how programs utilize hardware and are better prepared to efficiently write and debug code for a variety of systems and tasks. The goal of our textbook is to provide students and educators with a text that is useful in terms of fundamentals, syntax, examples, and guidance.
Our book is focused on addressing the weaknesses that exist in the current book market for assembly and computer architecture education.
Low-cost (less than $50)
Appropriate audience – software engineering students and educators, which includes students in four and two-year degree programs in software engineering, computer science, information systems, etc.
Applied and practical
Platform diverse (Windows, Linux, Mac) and thus assembler diverse (MASM, NASM, GAS) – Flexible assembly programming education.
Discuss intricate differences between assemblers (MASM, NASM, GAS), differences between syntaxes (Intel, AT&T), and differences between OS platforms (Windows, Linux, Mac) when assembling, compiling, linking, and debugging.
Use standard libraries for code examples and offer sufficient instruction on working with high-level languages (C++ libraries, inline assembly, function calls both ways).
Provide sufficient code examples in a variety of assemblers/syntaxes for 32-bit and 64-bit.
Provide appendices, videos, and tutorials as needed.
Focus on x86/x86-64 architecture. Possible discussion/examples of other architectures.
Assumed pre-requisite knowledge: a fundamental programming sequence up to and including data structures.
Table of Contents (Subject to change)
Each chapter will follow a flexible multi-platform, assembler, syntax approach. The bullets under each chapter are not necessarily comprehensive, but provide examples of subtopics.
Brian R. Hall, Sc.D. is an Assistant Professor in the Department of Software Technology at Champlain College in Burlington, VT. His primary interests are computing education, computing ethics, and text mining. Dr. Hall teaches a variety of courses including Computer Architecture, Introduction to Programming, Advanced Programming, and Global IT & Ethics.
Kevin Slonka, Sc.D. is the head of the Computer Science program at Pennsylvania Highlands Community College in Johnstown, PA. He teaches a variety of courses including programming, operating systems, networking, and databases. Dr. Slonka is also a Senior Systems Engineer at Precision Business Solutions in Ebensburg, PA.