CMSC 313 Syllabus
Assembly Language and Computer Organization
Prerequisites
CMSC 202 and CMSC 203 with a grade of ‘C’ or better.
Description
This course introduces the student to the low-level abstraction of a computer system from a programmer’s point of view, with an emphasis on low-level programming. Topics include data representation, assembly language programming, the process of compiling and linking, low-level memory management, digital logic, and basic processor architecture.
Course Objectives
Each student will:
- Gain familiarity with digital logic circuits and their components, including gates, multiplexers, flip-flops, and registers, to understand the building blocks of computer systems.
- Gain an understanding of data representation in computer systems, covering topics such as binary, hexadecimal, two’s complement, floating-point representation.
- Develop an understanding of basic processor architecture, including the organization of registers, instruction execution cycle, and the interaction between the processor and memory.
- Gain proficiency in assembly language programming, including the ability to write, debug, and analyze programs using low-level instructions and addressing modes.
- Gain an understanding of the execution environment of computer processes including interaction with the operating system especially with respect to memory utilization.
Student Outcomes
Level Of Emphasis | |||
ABET Outcome | Low | Medium | High |
Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. | X | ||
Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. | X | ||
Communicate effectively in a variety of professional contexts. | X | ||
Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles. | X | ||
Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline. | X | ||
Apply computer science theory and software development fundamentals to produce computing-based solutions. | X |
Text
Vahid, F. (2010). Digital Design with RTL Design, VHDL, and Verilog. 2nd Edition. Wiley. ISBN-13: 978-0470531082 (Recommended)
Topics
- Number Systems
- Binary and Integer Representations
- Signed and Unsigned Numbers
- IEEE Floating Point
- Digital Logic Design
- Combinational Logic
- Sequential Logic
- Boolean Algebra
- Size Optimizations
- Computer Organization
- Arithmetic Logic Units
- Arithmetic Circuits
- Register Files
- Instruction and Data memory
- Assembly Language Programming
- Programming Environment
- Registers and memory
- Conditions and loops
- Functions and the stack discipline
- Arrays
- Interfacing C and Assembly Language
- Linking
- Programming in C
- Dynamic Memory
- Pointers
Optional Topics
- I/O
- Interrupts
- Processor Architecture
Grading
10% | In-class Quizzes |
20% | 4 – 6 Homework Assignments |
40% | 4 – 6 Programming Assignments |
15% each | 2 Exams |
Updated June 19, 2023 by JD and JK