Announcements
- December 9, 2017: The final exam is now on-line. It is open-notes and open-internet. It must be taken at one of the prearranged examination rooms. Good luck!
- December 4, 2017: In problem set #5, there were several small typos regarding the size of the immediate fields of the ARM7 ldr and str instructions. These errors are now fixed. If they impacted any answer that you submitted, please reconsider your answer.
- November 30, 2017: The final lab, Lab 9, is now online.
- November 29, 2017: Midterm #2 is online and can be accessed from this link. You can submit and resubmit solutions until 10:20am. This exam is open notes and open internet. However, you cannot use the internet as a means for communicating to any person about answers. Finally, this test must be taken in Sitterson 014, or in some other a prearranged and monitored location.
- November 28, 2017: The first question on Problem Set 5 is fair game for tomorrow's midterm. Make sure you look at it and the relevant slides.
- November 28, 2017: I apologize, but I am too sick to hold a midterm study session tonight.
- November 24, 2017: Problem Set #5 is online and is due on 12/06.
- November 16, 2017: Lab 8 is now online.
- November 13, 2017: Bhavya will not have his office hours on Wednesday, 11/15.
- November 9, 2017: Problem Set #4 is online and is due on 11/22.
- November 9, 2017: Lab 7 is now on-line. Go ahead and do the pre-lab
- November 2, 2017: Lab 6 is now on-line. Go ahead and do the pre-lab.
- October 30, 2017: Bhavya will not be holding his office hours for today (Monday).
- October 26, 2017: Lab 5 is now on-line. Go ahead and start the pre-lab.
- October 25, 2017: Problem Set #3 is now online and is due on 11/8. Get started soon. I think it is easier than the previous problem set.
- October 18, 2017: I fixed bugs on Slides 10 and 11 of Lecture17.
- October 13, 2017: Midterm #1 is online and can be accessed from this link. You can submit and resubmit solutions until 10:20am. Your browser will keep track of past solutions you have already submitted.
- October 12, 2017: I am sorry for the late notice, but tomorrow, rather than receiving your midterm via an email message, I will instead provide a link from this web site.
- October 5, 2017: Lab4 is now on-line. Do the prelab before tomorrow's class meeting.
- September 30,2017: Problem Set #2 is now available on-line. Please get started as soon as possible.
- September 29,2017: I am extending the due date of Lab 3 until 11:00am on 9/30.
- September 29, 2017: I have modified the miniARM assembler so that you do not have to decide whether to use the
MOV or MVN to construct specific immediate constants. The assembler uses whichever is appropriate. If you specify an immediate value that cannot be encoded with either MOV or MVN , the assembler reports an error.
- September 28, 2017: Lab3 is now on-line. Do the prelab before tomorrow's class meeting.
- September 21, 2017: I am sorry for the late notice, but tomorrow's lab will involve a significant "hands-on demo", rather than a pre-lab. It will be posted on-line just before the start of class.
- September 18, 2017: Bhavya's office hours for Wednesday, 9/20, will be held in the lower Sitterson lobby (right outside where class is held) from 5pm-7pm.
- September 14, 2017: There will be no lab held on Friday 9/15. Instead I will hold a short lecture to complete our discussion of addressing modes and branching.
- September 13, 2017: For PROBLEM SETS: Please note that you are allowed to make as many submissions as you wish and the 'Submit' button saves all of your preivous work and it will reappear whenever you resume working on the problem set.
- September 7, 2017: Lab 2 is now on-line. You should do the before prelab ahead of time.
- September 5, 2017: Problem Set #1 is now available on-line. You can submit partial solutions, and your submitted answers will be retained and shown in your answer sheet when you return later.
- September 4, 2017: Do not attempt to execute the "
sudo " command on "comp411.cs.unc.edu ". Doing so is a serious honor code violation, and we are logging all attempts, as some of you are already aware.
- August 31, 2017: Lab 1 is now on-line. It includes a prelab, which you should attempt before coming to class on Friday 9/1. You can also start on the lab if you wish. You ae allowed to submit a partial set of checkoffs. However, all checkoffs must be submitted before 11:00am on 9/1.
- August 23, 2017: The first class meeting in SN014 (
summer is over).
Course Description
Comp 411, Computer Organization, explores the topic of how computers work, in terms of both software and hardware. It covers a wide range of topics including what a bit is, and why bits are the atoms in the universe of computation. We also discuss how information is represented and processed in hardware, and arrive to the conclusion that, to a computer, everything is data, including the instructions that underly software.
Comp 411 also covers the wide range of languages, and layers of translation, used for computation-- spanning from machine language to assembly language to high-level compiled and interpreted languages. We will also touch on the conventions that will enable us to constuct large programs, modular software systems, and even programs that manage the loading, execution, and creation of other programs.
We will then delve deeper into computer hardware to discover what means to be digital. We will explore how simple combinational logic can be made to perform math and manipulate bits and how logic with state can be made to perform a series of operations. This will culminate in the virtual construction of a simple, yet fully functional computer.
In the last third of the class we will discuss issues of performance. What the measures of MIPS and CPI mean, and how they can be improved. We will discuss simple techniques for increasing the rates which computer execute instructions including pipelining and parallelism. We will then address techniques for improving the apparent memory bandwidth of a computer and finally how to simulate more memory that we can actually afford,
Grading will be based on:
- 6 5 Problem sets with the lowest dropped (25%)
- 2 In-class exams (32%)
- 10 9 Labs with the lowest dropped (18%)
- Final Exam (25%)
Detailed Course Syllabus
Book, Course Information, and Prerequisites
Textbook: |
I will be using no book this semester. We will be depending on my notes and online materials.
|
Credit Hours: |
3 + 1 mandatory lab
|
Location: |
SN014 |
Time: |
M, W - 9am-10:15am, Friday lab - 9am-11am |
URL: |
http://csbio.unc.edu/mcmillan/index.py?run=Courses.Comp411F17
|
Prerequisite: |
COMP 401 and COMP 283 |
Course Instructors
Instructor: |
Leonard McMillan |
Office: |
SN316 |
email: |
mcmillan@unc.edu |
Office Hours: |
M 2-4pm
|
Teaching Assistant: |
Bhavya Vyas |
Office: |
SN312 |
email: |
bdvyas@cs.unc.edu |
Office Hours: |
M 1pm-3pm, W 11am-1pm |
Teaching Assistant: |
Yubo Luo |
Office: |
SN313 |
email: |
yubo@cs.unc.edu |
Office Hours: |
T,Th 2pm-4pm |
Schedule
Midterm will be open notes & open Internet. However, this time it must be taken in SN014 or another pre-arranged and monitored location.
Date |
Topic |
Homework |
August 23 |
Introduction (slides) |
|
August 25 |
Information Please (slides) |
|
August 28 |
More Binary Representations (slides) |
|
August 30 |
Behind the Curtains (slides) |
|
September 1 |
Lab #1. The UNIX shell |
|
September 4 |
No Class (Labor Day) |
September 6 |
Concocting an Instruction Set (slides) |
Problem Set #1 |
September 8 |
Lab #2. Editing and Compiling C in Linux |
|
September 11 |
Read the Instructions |
|
September 13 |
Addressing Modes and Branches |
|
September 15 |
No Lab, Continue Addressing Modes and Branches |
|
September 18 |
Assembling the Last Few Bits |
|
September 20 |
Stacks and Procedures |
|
September 22 |
Meet the miniARM simulator |
|
September 25 |
Compilers and Interpreters |
|
September 27 |
Assemblers and Linkers |
Problem Set #2 |
September 29 |
Lab #3: Some Assembly Required |
|
October 2 |
Low-level code optimizations |
|
October 4 |
Physical Bits: Transistors and Logic |
|
October 6 |
Lab #4: Let it "C" |
|
October 9 |
Gates and Combinational Logic |
|
October 11 |
Gates and Combinational Logic (cont) |
PSet #2 due |
October 13 |
Midterm #1: Covers to Lecture 12, PSets #1 and #2, and Labs 1-4 |
October 16 |
Arithmetic Circuits (slide 9 has been fixed) |
|
October 18 |
Shifting and Logic Units |
|
October 20 |
No Class (Fall Break) |
October 23 |
Multiplication |
|
October 25 |
Structured Logic and Memory |
Problem Set #3 |
October 27 |
Lab #5: Arrays, Pointers, and Structures |
|
October 30 |
Synchronous Logic |
|
November 1 |
FSMs and Turing Machines |
|
November 3 |
Lab #6: A Program in Many Parts |
|
November 6 |
Building a Computer |
|
November 8 |
Building a Computer (cont) |
Problem Set #4 |
November 10 |
Lab #7: Recursion, Debugging, and Stack Dumps |
|
November 13 |
Computer Performance |
|
November 15 |
Pipelining |
|
November 17 |
Lab #8: Function Pointers |
|
November 20 |
Pipelining a CPU |
|
November 22 |
No Class (Thanksgiving Break) |
Problem Set #5 |
November 24 |
No Class (Thanksgiving Break) |
|
November 27 |
Memory Caches |
|
November 29 |
Midterm #2: Covers to Lectures 13-23, PSets #3 and #4, and Labs 4-7. Open notes & open Internet. However, this time it must be taken in SN014, or another prearranged and monitored location. |
December 1 |
Lab #9: Final Lab |
|
December 4 |
Virtual Memory |
|
December 6 |
Course Review |
|
December 9 |
Final Exam: In SN014 from 8am-11am. Open notes & open Internet. Must be taken in SN014, or another prearranged and monitored location. |
Resources
|