Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Computer Architecture and MIPS Assembly Language Programming
Rating: 4.3 out of 5(74 ratings)
608 students

Computer Architecture and MIPS Assembly Language Programming

with Tens of Solved Examples and Assignments with solutions, lecture notes, Exam samples with solution, and tutorials.
Last updated 1/2026
English

What you'll learn

  • MIPS Instruction Set Architecture
  • MIPS Assembly Programming - Theory and Practice with tens of examples
  • RISC ISA Architectures
  • Single Cycle and Multi-Cycle Processor Design
  • Arithmetic and Logic Unit (ALU) Design
  • Design the Control Unit of a Real Processor
  • Convert MIPS Assembly Instructions into Machine Codes
  • Understand Computer internal parts such as ALU, Datapath and control Unit
  • Understand CPU (Central Process Unit) and how it works

Course content

15 sections156 lectures30h 33m total length
  • Convert Uppercase to Lowercase and Vice versa12:27

    Write a program that asks the user to enter an alphabetic character (either lower or upper case) and change the case of the character from lower to upper and from upper to lower and display it.

  • Nested Loops Example7:17
  • Display the Number of 1s in Binary Representation of an Input Integer6:15

Requirements

  • Basics of digital logic design
  • Basic knowledge of programming in any high level languages( C, python , ...)

Description

Welcome to the Computer Architectures and MIPS Assembly Programming Course!


***NEW*** Enrol in one course and receive a 100% discount coupon for any of my other courses.
After you sign up, please send me a message to let me know which course you’d like to take.


*Update- December 2025 - Tens of new lecture videos, slides,  and resources are uploaded.


This course is a complete, hands-on journey into Computer Architecture and Organization, designed to take you from zero exposure to confidently understanding how modern computers really work—from the lowest-level instructions all the way up to advanced CPU design concepts.

You will start by learning MIPS assembly programming step by step, using clear explanations and dozens of carefully chosen examples. Even if you have never written assembly code before, you will quickly feel comfortable reading, writing, and debugging MIPS programs. The course emphasizes practical understanding: loops, conditionals, arrays, bitwise operations, system calls, and real problem-solving—not just theory.

As you progress, you will go deeper into functions, stack management, recursion, and calling conventions, gaining the skills needed to translate high-level language logic into low-level assembly code. Every major concept is reinforced with multiple examples, assignments, and full solution videos, so you always know not only what works, but why it works.

Beyond programming, the course carefully bridges software and hardware. You will learn how MIPS instructions are encoded, how addressing modes work, and how instructions flow through the processor. Step by step, you will build a strong intuition for datapaths, ALU design, register files, and control units. Single-cycle and multi-cycle processor designs are explained visually and logically, making complex hardware concepts approachable and memorable.

The course then expands into essential modern architecture topics such as pipelining, hazards, branch prediction, parallelism, memory hierarchy, caches, virtual memory, and I/O systems. These sections connect textbook theory to real CPU behavior, helping you understand performance, scalability, and design trade-offs used in real-world processors.

This course is ideal for:

  • Computer engineering, electrical engineering, and computer science students

  • Learners preparing for advanced architecture, operating systems, or embedded systems courses

  • Anyone who wants a deep, practical understanding of how software runs on hardware

By the end of this course, you will not only write MIPS programs with confidence, but also clearly understand how instructions move through a CPU, how memory systems are designed, and how performance is optimized in modern computers. If you have ever wanted to truly understand what happens “under the hood” of a computer, this course is your complete roadmap.


The emphasis of the course is on understanding how computers work. This will provide a basis for further study of computer architecture and computer software. The MIPS processor, the subject of this course, has a well designed architecture and is particularly fruitful to study. However, the goal of the course is not to turn you into a MIPS programmer, but to give you an understanding of all computer systems.

Course Outline

1. Introduction to MIPS Assembly Programming

  • Memory Operand: Load Word & Store Word in MIPS Assembly Language

  • Immediate Addressing Mode & Signed/ Unsigned data in MIPS Assembly Language

  • ADD, ADDI, ADDU, ADDIU, SUB, LW, and SW Instructions in MIPS

  • Branches and Jump Instruction in MIPS Assembly Language + how to read array[i]

  • Loop Structure in MIPS Assembly Language

  • The Other Comparison Instruction + Logical Instructions in MIPS

  • MIPS Alignment Restrictions: .align, .byte .half and .word Assembler's directive

  • How Data will be Stored in Memory in the MIPS Architecture?

  • MIPS System Call

  • Simple I/O and MIPS System Calls: Hello World!

  • Simple I/O and MIPS System Calls: Read 2 Numbers and Display their Summation

  • Simple I/O and MIPS System Calls: an Example of IF-ELSE Structure in MIPS

  • Simple I/O and MIPS System Calls: an Example of IF-ELSE-IF Structure in MIPS

  • MIPS Divide Instruction + Determine whether the input number is odd or even

  • MIPS Example: Read 5 Numbers and Print Their Average

  • MIPS Multiplication Instruction

  • MIPS Example: Display the Multiplication of 2 numbers + Factorial Example

  • MIPS Example: Add Two Integer Numbers

2. Learn MIPS Programming with Examples

  • MIPS Example: Read a char and determine whether it is an uppercase, lowercase or etc. in MIPS

  • MIPS Example: Determine the number of zeros in the binary notation of a number

  • MIPS Example: Read two numbers A and B and  compute  and print (A+2*B)/5

  • MIPS Example: Convert C code to MIPS Assembly

  • MIPS Examples: Learn How to Divide and Multiplication

  • MIPS Example: Find the Maximum Element of an Array in MIPS Assembly Language

  • MIPS Example: Find Both Maximum and Minimum of an Input Integer Array

  • MIPS Example: Nested IF-ELSE IF Structure

  • MIPS Example: Convert a capital letter  to lowercase and vice versa

  • MIPS Example: Check the input character and determine is it alphabet, digit or .

  • MIPS Example: Read 2 operands and  an operator and print the result

  • MIPS Example: Compute the sum of N integers: (1 + 2 + ... + N),  While Structure

3.Functions in MIPS Assembly Language with Several Examples

  • Functions in MIPS - Jump and Link (jal) & jump Register(jr) Instructions

  • Functions in MIPS - How to Pass Arguments to the Functions?

  • Functions in MIPS - Who saves the register? Spilling Registers

  • Functions in MIPS - MIPS's conventions to split register spilling chores

  • Functions in MIPS - MIPS Stack and Push and Pop Implementations

  • Functions in MIPS - Factorial Function

  • MIPS Example: Write a function to read N numbers and store them in an array

  • MIPS Example: Write a function to reverse an input array

  • MIPS Example: Write a function to count the number of divisors of an argument

4.MIPS Instruction Encoding

  • MIPS Instruction Encoding: R-Type Instructions

  • MIPS Instruction Encoding: I-Type Instructions

  • MIPS Instruction Encoding : J-Type Instruction

5. Computer Architecture: Processor Datapath, ALU and Register File Design

  • Generic Datapath and Register Files Part 1

  • Generic Datapath and Register Files Part 2

  • ALU Design Part 1

  • ALU Design Part 2


6. Single-Cycle Datapath for MIPS Architecture

  • MIPS Datapath Overview

  • Datapath for Fetching an Instruction and increment PC  in MIPS Architecture

  • Datapath for R-type Instruction in MIPS Architecture

  • MIPS Datapath for Load Word (LW) and Store Word (SW) Instructions

  • Datapath for Branch Instructions in MIPS Architecture

  • Combining the Datapaths of R-type Instructions and LW/SW Instructions

  • Integrating  the datapaths of R-Type, Memory and Branch Instructions in MIPS Arc

  • R-Type  + Memory Instructions Data Path

  • Control Unit for the Single-cycle  MIPS Processor

  • ALU Control Unit Design for MIPS Architecture

7. Multi-Cycle Datapath for MIPS Architecture

  • Multi-Cycle Datapath for MIPS Architecture Part 1

  • Multi-Cycle Datapath for MIPS Architecture Part 2

  • Multi-Cycle Datapath for MIPS Architecture Part 3

  • Multi-Cycle Datapath for MIPS Architecture Part 4

8. Tutorials + Assignments

  • Tutorial + Assignment: Introduction to MARS

  • Tutorial + Assignment: Introduction to MIPS Assembly Programming

  • Tutorial + Assignment: Integer Arithmetic

  • Tutorial + Assignment: Flow Control

  • Tutorial + Assignment: Arrays and Files

  • Tutorial + Assignment: Integer Multiplication and Division

  • Tutorial + Assignment: MIPS Functions and the Stack Segment

  • Fibonacci sequence

  • Compute the summation of even numbers between 2 input numbers

  • Simple I/O in MIPS Assembly Language

  • IF-ELSE-IF Structure in MIPS Assembly Language

  • Single-Cycle Datapath Quiz with Video Solution

  • Multi-cycle Datapth

The course is Example-based. Almost every lecture and component of the course directly leads to a hands-on laboratory assignment with a solution. The more you practice with MIPS hardware and software, the more proficient you will become.

I use lots and lots of examples. I take you step-by-step through the lessons – each time providing sample code and documentation to make sure you are supported through the course.

The course does not waste your time. From the very beginning, we jump right into your first project – Let's Get Started.

I am here to help. I am an educator with a singular focus on providing a meaningful experience for my students. And, while I cannot do the work for you, I am willing to work WITH you to help you succeed.

The goal of this course is to shed light on the obscure interface layer between hardware and software. In this context, we will go over instruction set architectures, assembly programming, computer/memory organization, machine language conversion, data bus, and sub-routines, which are all important topics in computer architecture. This course teaches students about the core hardware components of a computer and how they interact with one another. It educates students about the computer's many layers, such as the application level, operating system level, assembly language level, and machine language level.

Computer architectures, which I recommend to anyone working on electronic system design or computer programming and who is interested in processor design, have opened many doors for me in my own career. I hope you find this tutorial useful as well.



Who this course is for:

  • Computer or Electrical Engineering students
  • Programmers who want to learn about computer hardware / software interface
  • Everyone who is interested in Computer / Processor structures!
  • Candidates considering applying for embedded system design / programming positions in defense industry, aerospace, R&D and IT companies