# COSC 130 : Computer Organization and Architecture

Course Website on Canvas

## Desired Learning Objectives

#### Number Systems

- Use and convert between number systems (e.g., binary, octal, hex, decimal)
- Develop a program that manipulates data at the bit level, using bitwise operations
- Develop a program that uses C++ logic constructs (&, |, ~, ^)
- Add, subtract, multiply, and divide in a variety of number systems

#### Digital Logic Circuits

- Use and design digital logic circuits using elementary logic gates (e.g., AND, OR, NOT)
- Develop an efficient circuit based on a truth table or boolean algebraic expression
- Design and implement circuits with memory (e.g., latches or flip flips)
- Design and implement sequential circuits (e.g., shift registers, SIPO, PISO)
- Understand and demonstrate how circuits can make decisions (e.g., multiplexing)
- Demonstrate proficiency in desiging a product-of-sums or sum-of-products digital logic circuit
- Demonstrate proficiency minimizing a circuit using a karnaugh map or boolean algebra

#### Computer Organization

- Understand how a computer stores information (e.g., registers, cache, RAM/MMU)
- Understand how a computer executes instructions (e.g., pipelining, program counting, ALU)
- Understand how decisions are made in computer (e.g., conditional branching)
- Understand how a computer communicates with peripherals (e.g., I/O devices, USB, PCI)

#### Low-level Computer Programming

- Understand and demonstrate limited proficiency in developing assembly programs to solve problems
- Understand and demonstrate how functions are implemented at the assembly level
- Understand and demonstrate how load/store architectures load and store information from/to memory
- Understand and demonstrate how an ARM assembly instruction encodes into binary, machine language.
- Understand and demonstrate how a binary, machine instruction decodes into an ARM assembly instruction.