Introduction to Security Programming II

Course Description

CYBV311 provides students with an introduction to Assembly programming. Students will use hands-on exercises to practice and implement applications developed in the Assembly programming language on an x86 processors. Students will have a deeper understanding of data representation, mathematical manipulation, subroutine linkage, machine encoding as well as interrupts/execution handling and program designs in assembly language. CYBV311 conforms to the National Security Agency (NSA) Center of Academic Excellence in Cyber Operations (CAE-CO) academic requirements for low-level programming.

Learning Outcomes

The student will:

  • Define and demonstrate writing a properly formatted Assembly program
  • Describe and demonstrate how to use the MASM to develop Assembly programs
  • Understand and write Assembly programming specifically for the 32-bit Intel/Windows platforms
  • Writing software at the machine level

Course Objectives

The student will:

  • Learn the basic procedures of how a compiler translates assembly code into machine codes and perform simple optimizations
  • Learn basic principles of interrupts/exception handling
  • Explore in detail a simple hardware CPU implementation that supports a small instruction subset; introduce students to computer organization
  • Show how Assembly language constructs use hardware resources, and introduce concepts of efficiency and performance below the algorithmic level
  • Use coding exercises to demonstrate the fundamentals of the Assembly Programming language
  • Develop and test 32-bit programs
  • Design, construct, and demonstrate low-level programs
  • Learn binary, octal and hexadecimal mathematics
  • Learn basic data structures such as Arrays, pointers, lists and stacks
  • Learn how to access computer memory