Generated on Tue Oct 25 10:19:18 2022

CS 273: Machine Programming and Organization (JSON)

Catalog description: Computer structure, instruction execution, addressing techniques; programming in machine and assembly languages.

Prerequisites: At least a C- in C S 172 or E E 112    (Catalog Link)

Credits: 4 (3+2P)

Coordinator: Joe Song

Textbook: CS 273 Course Notes, Jonathan Cook; and The AVR Microcontroller and Embedded Systems Using Assembly and C: Using Arduino Uno and Atmel Studio. 2nd Edition. Muhammad Ali Mazidi, Sepehr Naimi, Sarmad Naimi. MicroDigitalEd. 2017
    (also: online reading)

BS degree role: required

Course Learning Objectives

  1. Describe the architecture of a microcontroller, the interconnections between the components, and the basic units inside the CPU
  2. Use signed and unsigned numbers, the associated branching instructions, and the corresponding flags in the status register
  3. Explain immediate, direct, indirect addressing modes, their opcode and operands, and their utilities
  4. Map high-level programming language features to assembly instructions, including loops, conditionals, procedure calls, value and reference parameter passing, return values, and recursion
  5. Interface with I/O devices including LED and sensors via digital input and output, and analog-to-digital conversion
  6. Program timers/counters and interrupts to control real-time applications
  7. Design an assembly program

Course Practicum Requirements

  1. Implement an assembly program using variables, branching, arithmetic, logical operations, and function calls
  2. Implement an assembly program involving I/O registers and devices
  3. Compose and debug a program using the Arduino IDE
  4. Wire and configure Arduino hardware

Course Topics

  1. Number systems: decimal, hex, binary, octal; conversion between number systems; basic math operations; 2's complement and unsigned
  2. Computer architecture: von Neumann and Harvard models, CPU, memory, IO; instruction execution; registers
  3. Computer programming: high-level programming languages; compilers; assembly language; machine instructions
  4. Assembly language programming: instructions, labels, directives; instruction operation and operands; addressing modes (immediate, direct, indirect, relative); load/compute/store execution; compare and branch; conditional branches; selection and looping; bit and shift operations; arrays
  5. Procedures: stack; stack operations; procedures; passing parameters (by value and by reference); activation records; recursion
  6. Input/Output: digital I/O; analog to digital conversion; serial communication
  7. Timers and interrupts: hardware interrupt handling; programming interrupt service routines; timers

Course Improvement Decisions

(Course improvement decisions or recommendations from past assessments)

  1. FA19: students need focus on control translation details (jump and fall-through default), when to initialize variable, prog/data mem difference on Harvard (AVR) architecture

ABET Outcome Coverage

(Provide Mapping to ABET Student Outcomes)

  1. TBD

Other Notes

(Any important notes or issues to consider)

  1. none