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
- Describe the architecture of a microcontroller, the interconnections between the components, and the basic units inside the CPU
- Use signed and unsigned numbers, the associated branching instructions, and the corresponding flags in the status register
- Explain immediate, direct, indirect addressing modes, their opcode and operands, and their utilities
- Map high-level programming language features to assembly instructions, including loops, conditionals, procedure calls, value and reference parameter passing, return values, and recursion
- Interface with I/O devices including LED and sensors via digital input and output, and analog-to-digital conversion
- Program timers/counters and interrupts to control real-time applications
- Design an assembly program
Course Practicum Requirements
- Implement an assembly program using variables, branching, arithmetic, logical operations, and function calls
- Implement an assembly program involving I/O registers and devices
- Compose and debug a program using the Arduino IDE
- Wire and configure Arduino hardware
Course Topics
- Number systems: decimal, hex, binary, octal; conversion between number systems; basic math operations; 2's complement and unsigned
- Computer architecture: von Neumann and Harvard models, CPU, memory, IO; instruction execution; registers
- Computer programming: high-level programming languages; compilers; assembly language; machine instructions
- 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
- Procedures: stack; stack operations; procedures; passing parameters (by value and by reference); activation records; recursion
- Input/Output: digital I/O; analog to digital conversion; serial communication
- Timers and interrupts: hardware interrupt handling; programming interrupt service routines; timers
Course Improvement Decisions
(Course improvement decisions or recommendations from past assessments)
- 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)
- TBD
Other Notes
(Any important notes or issues to consider)
- none