Skip to main content
Search Context

CMSC 313 Syllabus

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:

  1. Gain familiarity with digital logic circuits and their components, including gates, multiplexers, flip-flops, and registers, to understand the building blocks of computer systems.
  2. Gain an understanding of data representation in computer systems, covering topics such as binary, hexadecimal, two’s complement, floating-point representation.
  3. Develop an understanding of basic processor architecture, including the organization of registers, instruction execution cycle, and the interaction between the processor and memory.
  4. Gain proficiency in assembly language programming, including the ability to write, debug, and analyze programs using low-level instructions and addressing modes.
  5. 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
    1. Binary and Integer Representations
    2. Signed and Unsigned Numbers
    3. IEEE Floating Point
  • Digital Logic Design
    1. Combinational Logic
    2. Sequential Logic
    3. Boolean Algebra
    4. Size Optimizations
  • Computer Organization
    1. Arithmetic Logic Units
    2. Arithmetic Circuits
    3. Register Files
    4. Instruction and Data memory
  • Assembly Language Programming
    1. Programming Environment
    2. Registers and memory
    3. Conditions and loops
    4. Functions and the stack discipline
    5. Arrays
    6. Interfacing C and Assembly Language
    7. Linking
  • Programming in C
    1. Dynamic Memory
    2. 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