CSCI 463: Computer Architecture and Systems Organization
Fall 2022

Course Information

Organization and use of computer systems. Basic concepts and examples from microcomputers and networks, peripheral components, data communications, and the relationship between hardware components and the operating system.

Course Syllabus

Contact Information and Office Hours

Instructor
John Winans (You can contact me via Linked In)
Office Hours:
Tuesdays & Thursdays 8:45am - 10:45am & 12:30pm - 1:30pm
and by appointment

Tentative Schedule

Week Topics Assignment
1 - 08/21 Introduction
Computing History
Boolean Algebra
A1
2 - 08/28 Counting In Binary (review)
Integer Representation
Floating Point Numeric Representation
Bitwise Operators
3 - 09/04 Combinational Circuits
A2
4 - 09/11 Sequential Circuits
Latches, Memory
Counters
Finite State Machines
5 - 09/18 Data/Memory Buses
Von Neumann machines
Addressing Modes
The Instruction Cycle
Assembly Language
A3
6 - 09/25 Machine Instruction Formats
Subroutine Calling Conventions
7 - 10/02 Multiprocessors/Multicore Organization
The Flynn Taxonomy
Bus Arbitration
Virtual Memory
Page Fault Handling
Shared Memory
A4
8 - 10/09 Freestanding programs Midterm 
9 - 10/16 Storage Systems
Memory Hierarchy
Latency
10 - 10/23 Cache Memories
Inter-core Synchronization
11 - 10/30 Threads
A5
12 - 11/06 (Election)
I/O
Interrupts
13 - 11/13 Introduction To Networks
IPC
A6
14 - 11/20 External Storage
Data Integrity
RAID
(Thanksgiving)
15 - 11/27 Multimedia A7
16 - 12/04 Final Exam on: Tuesday, December 6, 10-11:50 a.m.

Assignments

All assignments are due at, or before, 23:59:59 in US/Central time on the dates specified. The timestamp of the assignment submission shall be used to determine when you handed it in.

NOTICE: No late work will be accepted after December 2. Plan accordingly!

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Course Information

Using Linux, MacOS, WSL,...

DANGER WILL ROBINSON! Developing and testing your assignments on your own PC is encouraged. However, your grade is based solely on our ability to build and run your program on hopper.cs.niu.edu as described in the assignment handouts! Therefore, it does not matter if it runs OK on your own system. A program that fails to build or run on hopper.cs.niu.edu will be graded as such.

You must test your program on hopper.cs.niu.edu before handing it in.

[On Windows, you can install WSL & Ubuntu and then use one of its terminal windows to do development and testing of Linux code on a Windows PC.]

But... you must still test your program on hopper.cs.niu.edu before handing it in.

C++ Stuff You Should Know (Review)

Here are some more topics you might find useful. There are placed here for you to refer back to if/when it becomes necessary to review.

Reading, Printing, and Formatting Numbers in C++ (Review)

Bonus!! Some reviews for those that forgot how to do this!

Lectures:

Some Useful C++ Standard Library References

Command-Line Arguments & getopt(3) (bonus lecture!)

getopt(3) is a standard library helper function for parsing command-line options.

Lectures:

Web Links:

Common Compiler Issues (bonus lecture!)

Lectures:

Design For Debugging (bonus lecture!)

Lectures:

Other Resources and Courses

A number of good resources are available with discussions of the topics discussed in this course. Here are some popular ones.

Introduction

Lectures:

Computer History

Lectures:

Web Links:

Boolean Algebra

Lectures:

Handouts:

Web Links:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

How to use Doxygen

Lectures:

Handouts:

Web Links:

Numeric Representation

Lectures:

Handouts:

Web Links:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Logic & Bitwise Operations

Lectures:

Web Links:

Combinational Circuits

Lectures (1):

Lectures (2):

Schematic Handouts (1):

Schematic Handouts (2):

Web Links:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Sequential Circuits & Memory

Lectures:

Schematics & Other Handouts:

Web Links:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Counters & Finite State Machines

Lectures:

Schematics & Other Handouts:

Web Links:

Note that there are more types of latches and flip-flops than I will discuss in this course. If you look around the web for more information you might find yourself confused if you run into those other types. Here are some links that discuss this subject using D-Latches:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

The Von Neumann Machine

Lectures:

Web Links:

I was always confused why the common term for the von Neumann machine was to refer to it as an architecture when the topic is actually referring to its organization.

The so-called von Neumann architecture might be easier to understand when discussed in the same context as an alternative approach that is referred to as the Harvard architecture.

Addressing Modes

Lectures:

Handouts:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

RISC-V Architecture

Lectures:

A Cure For Insomnia:

The following two lectures turned out to be way longer than I had expected. I post them here if you are interested in the details connecting combinational and sequential circuits with finite state machine concepts to design a viable RV32I processor. The content in these two lectures will not appear in quizzes nor exams.

Handouts:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Address Spaces & Subroutine Calling Conventions

Lectures:

Writing Freestanding Programs for a RISC-V CPU

Lectures:

Web Links:

Multiprocessors

Lectures:

Web Links:

Memory

Lectures:

Handouts:

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

Threads & Synchronization

Lectures:

Input/Output

Lectures:

Web Links:

Interrupts

Lectures:

Web Links:

Networks & IPC

Lectures:

Handouts:

Note: The IPC and Advanced IPC tutorials are shared below under the 4-Clause BSD copyright.

Questions/comments/corrections and source code for RVALP and other handouts can be found on github.

RAID (Redundant Array of Inexpensive Disks)

Lectures:

Web Links:

Audio Files

Lectures:

Handouts:

Web Links:

Last modified: 2024-12-09T15:21:06+00:00