Synopsis

  • Term: Fall 2023
  • Time: Mon., Wed., Fri. 2:00pm – 2:50pm
  • Place: Shah Hall, Room 310 (North Campus)
  • Intructor: Paul Downen <paul@pauldownen.com>
  • Office: Dandeneau Hall, Room 305
  • Office Hours: Mon+Fri 3:00pm – 5:00pm, or by appointment
  • TA: Nazim Ahmed Belabbaci <NazimAhmed_Belabbaci@student.uml.edu>
  • TA's Office: Falmouth Hall, Room 205

Class Description

Internal operations of computers at the machine level are studied. The organization and operation of a conventional computer are examined by studying principal instruction types, data representation, addressing modes, program control, and I/O. Assembly language programming, including instruction mnemonics, symbolic addresses, assembler directives, system calls, and macros, is practiced through the usage of text editors, symbolic debuggers, and loaders. Staring from an assembly pseudocode based on common structured imperitive languages, two specific assembly languages will be used: MIPS and Intel x86.

Class Objectives

Upon completion of this course, students will be able to:

  1. Describe the basic components of a computer.
  2. Describe how different types of data, including floating point numbers, are represented in the computer.
  3. Understand MIPS and Intel x86 machines as representatives of RISC (Reduced Instruction Set Computer) and CISC (Complex ISC) architectures.
  4. Write programs in the MIPS assembly language with the following features: assignment statements, input and output, strings, conditional execution, procedures, arrays, records, and recursion.
  5. Describe how different addressing modes work.
  6. Describe how to use pseudocode in guiding structured assembly language programming.
  7. Describe and demonstrate how to covert an assembly language program into a corresponding C program.
  8. Describe how memory is organized.
  9. Understand how Intel x86 assembly code is generated from C programs.
  10. Demonstrate and discuss how combinational logic components may be used to build an Arithmetic Logic Unit.
  11. Demonstrate and discuss how combinational and sequential logic components may be used to implement a simple single-cycle computer.

Prerequisites

Prerequisite: COMP.1020 – Computing II

Suggested prerequisite: EECE.2650 – Logic Design

Students should be comfortable with structured programming concepts (loops, conditionals, etc.) and be able to write basic algorithms in in an imperative language like C or C++. Digital logic hardware and design (logic gates, latches, arithmetic circuits, etc.) is a plus, but not necessary.