The Left Navigation Bar: Links to class syllabus, assignments, projects, examples,
web tools, downloads, & more (possibly useful) information. Note: Links are specific to course.
Welcome to CS 301, Computer Organization!
This course is an introduction to representation of data, machine arithmetic, processor and memory organizations, instruction execution, assembly and machine languages, addressing mechanisms, and implementation of high level language constructs.
Students will gain a vision of levels of abstraction in hardware and software, the nature of the Von Neumann machine and the nature of high level languages.
Course Prerequisites: CS-200 and CS-201 with a minimum grade of C
Required Textbook:
Digital Design, 6th Ed., M. Morris Mano and Michael D. Ciletti, ISBN: 978-0-13-454989-7 We will be using portions of this textbook in the first half of the class. We will not be covering all the topics nor will we dive completely into all the material in the chapters that will be used. It is the best textbook for the material that we will cover and you should plan to keep this textbook for future reference in other courses.
There is a copy of the course textbook on reserve at the library. You may use it in the library if you do not have a copy of the book.
This week the plan is to get aquainted with our online environment for this course.
Please watch the video tour of our learning environment.
This course is broken into Weekly Modules.
The modules start on Mondays and conclude on the following Sunday by 11:59 p.m.
Note: This video is from Fall 2021. All the information on how to navigate this course is the same, only the dates have changed, including office hours. Also, if you are reading this, you have FOUND the location for the course home page for this semester.
Read the syllabus
A link to the syllabus is located in the navigation bar located on the left side of this page.
The syllabus contains the plan for the course. Here is a "short list" of some of the key details that you will find in the syllabus:
general course description
contact information to reach me (Freddy Porps - your instructor on this journey)
supplies you will need
list of topics that will be covered
learning outcomes for you as a result of successfully completing this course
the workload (student tasks/assignments/requirements) - the tasks you will do to show your understanding of the materials
grading policy ("How do I get an 'A' or 'B' or...?")
miscellaneous course policies (rules)
HOW TO: communicate with me
and finally - your FREE gift with the syllabus, a handy worksheet to calculate your course points and current grade :-) Yes, FREE with your enrollment in this class.
Explore the course home page
Time to check out this place!
← View the links in the navigation bar on the left side of the page - click on them - and check out the content.
Try out the quick links at the top of the page. Then, LOOK AHEAD at the plan for Week 2.
Complete the exploration assignment
Assignments are marked in the shaded boxes. Read them carefully each week (as the directions for what you are to submit and how you are to submit it will vary from week to week), then follow the directions for submitting your work.
Assignment: 01 > DUE: Sunday, 8.31.25 by 11:59 p.m.
Complete this Google Form: Welcome to CS 301 Online! after reviewing the Week 1 content listed above.(3 pts.)
Week # 2 - (9.3.25 - 9.7.25)
9.3.25 - Labor Day Holiday! - University Closed/No Classes
Introduction to the von Neumann Architecture (the components of the computer and how they interact)
Setting up of virtual machine and software for practical exercises
Positional Number Systems: Binary, Octal, and Hexadecimal Numbers
Content to discover/learn for this week...
Read: Chapter 1 (1.1 - 1.4) in the text
Introduction to the von Neumann Architecture (the components of the computer and how they interact)
Assignment: 02 > DUE: Sunday, 9.7.25 by 11:59 p.m.
Install the Ubuntu Linux Virtual Machine on Virtual Box (Print the instructions to follow them as you do this task, noting that it is a just guide to the steps and some of versions/screens have been updated. Also, if you have a newer computer you may skip Step 1.) Important! We will use it later in the course, but I want to make sure you can install it now.
See Tutorials section of the navigation bar on the left for 2 other tutorials (one is a video) on how to do this task if you have trouble. Send a screen shot of the completed installation on your computer via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 2 (3 pts.).
Upon successful completion of this module, you have met the course objective(s):
Understand the basic blocks of a computer system and
understand the relationship between hardware and software
Week # 3 - (1.29.24 - 2.4.24)
Binary numbers, Octal, and Hexadecimal number conversions
Signed number arithmetic
Boolean algebra and logic functions
Content to discover/learn for this week...
Read: Chapter 1 (1.5 - 2's complement and Subtraction with Complements, 1.6, 1.7 ASCII Character Code,1.8, and 1.9) in the text
Computers work with machine language, zeros and ones, so we need a way to convert everything we do to binary.
Read about: Unicode
then look at the code (click on any one from the list),
finally, check out the American Standard Code for Information Interchange (ASCII), a subset of Unicode
(find the link on the Unicode website under "Other").
Binary numbers, Octal, and Hexadecimal number conversions (review)
1. Basic addition in any base of a positional number system
2. Computers store numbers in registers.
Registers are of a fixed size, thus contain a fixed range of values.
See: Java Primitive Data Types table
3. Worksheet to complete: "The 2's Complement Method"
(or how to create/store negative numbers)
and BONUS: MORE INFORMATION ON REGISTERS!
4. Working with a computer register to add,
subtract utilizing "The 2's Complement Method" (actually adding using the negative represtentation of the value),
sign bit errors, and
overflow
5. How does the computer multiply (<<) or divide (>>)?
Read: Left Shift and Right Shift Operators in C/C++ Note: this works with unsigned values and you can run the C code samples on Ubuntu, after you learn how to code, compile and run "Hello World" below.
Try out your NEW Ubuntu O/S! (with some C language code)*
*Bonus Activity! Programming C in Linux - Hello World Try it to make sure your Ubuntu O/S is working properly before you need it in the latter portion of the class. If it is not working properly - please visit during office hours or see a CS tutor for help with the installation and running this program.
Click on the blue text link above (↑) for the assignment document.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx, save them as .pdf . Then send them via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 3 (3 pts.).
If you do not have MS Office products on your home computer - download free office products.
(see my home page for links to Open Office and Libre Office)
If you would like to create an alternate final activity, replacing the D2L final test, plan to stop by during any of my office hours BEFORE Week 5 to set up the contract for your work.
Week # 4 - (9.15.25 - 9.21.25)
Boolean algebra and logic functions continued
Minimization techniques
Quiz 01
Located: in CS 301 D2L Course Shell
Available: 9.15.25 at 12:01 a.m.
Due: 9.16.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based primarily on Week 02 & Week 03 materials
Format: multiple choice, T/F, short answer, math showing calculation steps
Assignment: 04 > Complete 2.18 (a-e) on page 78 in the text > DUE: Sunday, 9.21.25 by 11:59 p.m.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and save as .pdf. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Send them via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 4 (3 pts.).
If you do not have MS Office products on your home computer - download free office products.
(see my home page for links to Open Office and Libre Office)
Quiz 02
Located: in CS 301 D2L Course Shell
Available: 9.22.25 at 12:01 a.m.
Due: 9.23.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: Primarily all concepts related to Boolean Algebra and Logic Gates
but, any concepts prior to Week 5 may be included.
Format: multiple choice, T/F, short answer, math showing calculation steps
Content to discover/learn for this week...
Read: Chapter 3 (3.1-3.4)
Karnaugh maps
1. Use this K-Map Grids worksheet with the videos below, and to work on other sample problems.
4. Discover how easy it is to take a SOP (minterms) expression, determine its function output using a truth table, and then minimize it using a K-Map. Watch the video below.
5. Practice what you learned!
Try the following problems from the text: 3.3, 3.6, 3.7, and 3.8
6. Try this one, too - from the text p.93 Practice Exercise 3.6, (hint: 4 corners can be connected too to make a group of 4.) then see Practice Exercise 3.6 Solution (SOP) (to understand the book's notation)
7. Just one more example - from the text p.98 goes over (POS) see PRODUCT-OF-MAXTERMS using a k-map
Assignment: 05 > Complete 3.4 (g) on page 141 in the text, then check your work using a truth table showing initial function values and minimized function, and finally, draw the corresponding logic gate diagram > DUE: Sunday, 9.28.25 by 11:59 p.m.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and save as .pdf. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 5 (3 pts.).
If you do not have MS Office products on your home computer - download free office products.
(see my home page for links to Open Office and Libre Office)
Week # 6 - (9.29.25 - 10.5.25)
Combinational circuits – Full Adder, Half Adder, Implementation of a Binary Adder
Quiz 03
Located: in CS 301 D2L Course Shell
quiz file to complete will be found in the course ANNOUCEMENTS
then complete Quiz 03 based on your answers in the quiz file
Available: 9.29.25 at 12:01 a.m.
Due: 9.30.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: Primarily all concepts related to Canonical Forms (minterms and maxterms) and Karnaugh Maps
but, any concepts prior to Week 6 may be included. br/>
Format: multiple choice, T/F, short answer, math showing calculation steps
Content to discover/learn for this week...
Read: Chapter 4 (4.1-4.5) in the text
Before you start this week's topic: Combinational Circuits, you may find it helpful to understand how they differ from Sequential Circuits as they will be the next topic.
Assignment: 06 > Complete 4.1 (a,b,c) on page 236 in the text > DUE: Sunday 10.5.25 by 11:59 p.m.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and save as .pdf. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 6 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Helpful Hint! Working with a 16 row truth table:
If you have made plans with me for an alternate final activity, replacing the D2L final test, your contract is due: 10.5.25 by 11:59 p.m.
Week # 7 - (10.6.25 - 10.12.25)
Combinational circuits – Binary Subtractor
OverFlow
Combinational circuits – Binary Multiplier
Combinational circuits – Decoders and Encoders
Combinational circuits – Multiplexer
Quiz 04
Located: in CS 301 D2L Course Shell
Available: 10.6.25 at 12:01 a.m.
Due: 10.7.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based primarily on Week 05 & Week 06 materials
but, any concepts prior to Week 7 may be included.
Format: multiple choice, T/F, short answer, fill-in-the-blank
Content to discover/learn for this week...
Read: Continue Chapter 4 in the text (see specific pages below)
Combinational circuits – Binary Subtractor
1. Read pages: 165-166 in the text
2. Review your notes on the 2's complement method for signed integer registers (see Week 2)
Click on the blue text link above (↑) for the assignment document.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and save as .pdf. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 7 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Week # 8 - (10.13.25 - 10.19.25)
Introduction to Sequential circuits
Sequential circuits – Latches and Flip Flops
Sequential circuits - used as registers and memory devices
Quiz 05
Located: in CS 301 D2L Course Shell
Available: 10.13.25 at 12:01 a.m.
Due: 10.14.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based on Week 7 materials
and including any concepts prior to Week 8
to serve as a review of the first half of the course.
Format: multiple choice, T/F, short answer, fill-in-the-blank
Assignment: 08 > DUE: Sunday, 10.19.25 by 11:59 p.m.
The course has just passed the half way point. At this time, please reflect upon what you have learned thus far.
After reviewing your notes, describe in detail three (3) concepts that you feel very confident that you understand well, i.e. "explain the material back to me using your own words." Number each concept (i.e. 1, 2, 3) Write 1 paragraph (4-6 sentences) for each concept and include screen shots of the notes you took on the concept as well. Your notes are part of the work to submit, without them your work will receive only half credit. Submit your work as .pdf or .docx file. Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 8 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Upon successful completion of this module, you have met the course objective(s):
Understand the design and operation of the basic components of a computer block
Week # 9 - (10.20.25 - 10.26.25)
Progress Check
Design of primitive computer: understanding registers, counters, memory, and Programmable Logic
Content to discover/learn for this week...
Progress Check
Please check in with me on your progress thus far in the course, during office hours or via email. (+3 pts. extra credit - see syllabus for form to complete and bring with you :-)
Design of primitive computer: understanding registers, counters, memory, and Programmable Logic
Read: Chapters 6 6.1 - 6.5 (skipping BCD) AND Chapter 7 in the text
Connecting concepts: From circuits(weeks 6, 7 and 8) to Coding in Assembly Language
There is no review document this week. Why? You will be creating your own for assignment 09.
Assignment: 09 > DUE: Sunday, 10.26.25 by 11:59 p.m.
Create a detailed list of 10 concepts that you learned from the reading this week. A detailed list is a numbered list that includes a brief description describing the list item (3 - 4 sentences from your notes). Submit your work as .pdf or .docx file. Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 9 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Upon successful completion of this module, you have met the course objective(s):
Understand the processor and memory organizations
Week # 10 - (10.27.25 - 11.2.25)
Introduction to Assembly Language
Content to discover/learn for this week...
Introduction to Assembly Language
We will be using the GNU Assembly Language (GAS) for the remainder of the course, but this first video will introduce you to Assembly Language.
3. Watch this: GNU Assembly Tutorial 1 (9:13) Methods/functions return a value to the caller. The caller may be your main method, or it may be the Operating System (O/S) that invoked the program to run. In this tutorial (near the end of the video), you will see how the eax register is used to return a value to the caller. A return value of zero (0) in most cases signals to the O/S that the program completed successfully. You can create other return values to handle when a program does not terminate successfully. Although in Java, you probably only used the return statement when your method's return type was not void, the return statement could be used, without a value (or when it is excluded entirely) the default return value is zero (0).
Assignment: 10 > DUE: Sunday, 11.2.25 by 11:59 p.m.
Choose any six (6) of the questions/concepts listed on the "Week 10 Review" web page, paste them into a .docx file, then provide detailed answers specific to the GAS assembly language. Include an example GAS assembly language statement example for each of the 6 questions that you choose to answer. The example for each is required in order to receive full credit for your work.
If you take pictures of your work, paste them into a word.docx and send them. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Submit your work as .pdf or .docx file. Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 10 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Upon successful completion of this module, you have met the course objective(s):
Understand the relationship between machine language, assembly language and high level language
If you choose to terminate participation in a class, and wish to receive a grade of withdrawn (W), the deadline to drop a course is 11.3.25 by 11:59 p.m., via NEIUport. If you do not officially withdraw from a class, you will still receive the grade for the course. Please email me or stop by during office hours to discuss your performance in class before making this decision.
Week # 11 - (11.3.25 - 11.9.25)
Assembly Language programming structures: branching and loops
Quiz 06
Located: in CS 301 D2L Course Shell
Available: 11.3.25 at 12:01 a.m. 🦉
Due: 11.4.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based primarily on Weeks 9 and 10 material
Format: multiple choice, T/F, short answer, fill-in-the-blank
Bookmark this: Assembler Directives to understand directives (.) found in the disassembled code. Directives are commands that are part of the assembler syntax but are not related to the x86 processor instruction set.
Optional Learning experience with nasm assembler...
1. When using the Linux VM you can install the nasm assembler. It is an open source assembler, but note that the syntax is not exactly the same as the code for the GNU assembler (as) that was provided with your installation. You will notice the assignment of values is from right to left in nasm, as in the as it is left to right.
Read more about nasm: Netwide Assembler.
Watch this:x86_64 Linux Assembly #1 - Hello, World! and complete the steps to run the code illustrated.
Assignment: 11 > DUE: Sunday, 11.9.25 by 11:59 p.m.
Modify the findmax.s file illustrated in the tutorial above (labeled #3 from last week's worksheet code) to find the minimum value in the list. REQUIRED SPECIFICATIONS:
Create your own list of 12 values that are within the range of a signed byte data type.
The minimum value may not be placed in the first or last position in the list.
Use the byte data type rather than the int (hint: you will need to use the smallest sized register and move over by a byte for reading next value)
Adjust suffixes to match register destination size
Submit: screenshot of your .s file in the text editor (you may need multiple screenshots to show entire file)
and screenshot of terminal window showing assembly, loading, executing, and finally exit value proving code works.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and send them. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 11 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Week # 12 - (11.10.25 - 11.16.25)
Assembly Language programming: programming structures continued
Introduction to the stack
Quiz 07
Located: in CS 301 D2L Course Shell
Available: 11.10.25 at 12:01 a.m.
Due: 11.11.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based on assembly language materials
Format: written response (code writing), multiple choice, T/F, short answer, fill-in-the-blank
Review this: Week 11 review to prepare for the quiz.
IMPORTANT! The file you will need in order to take the quiz, will be posted in the course D2L announcements at the start time of the quiz. Please read the file for understanding and write notes on it before starting the quiz.
Content to discover/learn for this week...
Assembly Language programming: programming structures continued
The stack is an abstract data type (ADT) that uses a set of methods to access the data stored within the stack in a particular way. Think of a stack of blocks on your desk...you can put a new block (piece of data) on the top (push) or take a piece off the top (pop), but you cannot take out one from the middle without collapsing the tower.
Read more about the stack data type before proceeding with this week's Assembly code.
3. Watch this: Subroutines and the stack in assembly language IMPORTANT NOTE! The syntax of the code in this video has the source and destination flipped from the syntax we are using in the course. This video is still worthwhile because you can see the registers and memory.
Watch this to review last week's quiz code and to understand the task for your Week 12 assignment.
Assignment: 12 > DUE: Sunday, 11.16.254 by 11:59 p.m.
Modify the quiz7code.s file used as part of Quiz 7 to count the numbers less than 20(base 16). REQUIRED SPECIFICATIONS:
Use the list of numbers provided, but change the sentinel value from 19, a base 10 value (Hint), to the base 10 eqivalent of 3A(base 16).
Make sure all the values in the list are checked (hint: one of them is not being checked)
Submit: screenshot of your .s file in the text editor (you may need multiple screenshots to show entire file)
and screenshot of terminal window showing assembly, loading, executing, and finally exit value proving code works.
Email the file as .pdf or .docx - if you take pictures of your work, paste them into a word.docx and send them. Please make sure that your images are right side up, and not sideways or upside down. They will be returned to you for resubmission if they are not readable without turning my monitor sideways or upside down;-) Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 12 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)
Week # 13 - (11.17.25 - 11.23.25)
Assembly Language programming: stack programming continued
Switch/case example in Assembly Language
Quiz 08
Located: in CS 301 D2L Course Shell
Available: 11.17.25 at 12:01 a.m.
Due: 11.18.25 by 11:59 p.m.
Allowed time: 60 minutes once started
Content: based on assembly language materials (have your completed worksheet available)
Format: written response (code writing), multiple choice, T/F, short answer, fill-in-the-blank IMPORTANT! The file you will need in order to take the quiz, will be posted in the course D2L announcements at the start time of the quiz. Please read the file for understanding and write notes on it before starting the quiz. Also, there will be a few questions on the stack ADT.
Content to discover/learn for this week...
Assembly Language programming: stack programming continued
Assignment: 13 > DUE: Sunday, 11.23.25 by 11:59 p.m.
See Week 13 Review (link above) for specifications. Go!
Upon successful completion of this module, you have met the course objective(s):
Understand how the instructions/programs are executed and
Be able to program in assembly language
Week # 14 - (11.14.25 - 11.30.25)
Final Test
Final Test (50 pts.)
Final Test
Located: in CS 301 D2L Course Shell
Available: 11.24.25 at 12:01 a.m.
Due: 11.25.25 by 11:59 p.m.
Allowed time: 120 minutes (2 hours) once started
You may use your textbook and notes.
If you chose an alternate final activity (contracted with me before Week 5) it is due by 11:59 p.m. 11.25.25.
Assignment: 14 > DUE: TUESDAY, 11.25.25 by 11:59 p.m.
The assignment points (3 pts.) have been embedded within the final test.
11.27.25 - 11.30.25: Thanksgiving Holiday - University Closed/No Classes.
Week # 15 - (12.1.25 - 12.8.25)
Assignment 15
Assignment 15
Assignment: 15 > DUE: Sunday, 12.7.25 by 11:59 p.m.
The course is now complete. At this time, please reflect upon what you have learned this semester. Describe in detail (i.e. as if the concept were a question asked of you on a job interview) three (3) concepts that you feel very confident that you understand well. Format: Number each question and response (i.e. 1, 2, 3) Write an "Interview type" question. Then, write 1 paragraph (4-6 sentences) detailed response using your own words as I will be reading to hear "your voice" in the answer, not a canned AI response. Submit your work as .pdf or .docx file.Then send your work via email to: f-porps@neiu.edu, subject line of the email: CS 301 > Assignment 15 (3 pts.).
If you do not have MS Office products on your home computer - download free MS Office 365.
(see my home page for link to Office 365 Free for Students)