Fig. 1: This computer costs more than your car.
Overview
Course location: French Science 2231
Course time: MW, 4:40PM - 5:55PM
Instructor: Dr. Tyler Bletsch
Email: Tyler.Bletsch AT duke.edu
Office Hours: After class or by appointment
Graduate Teaching Assistants:
- Alfredo Velasco (alfredo.velasco AT duke.edu) — Logistics
- Bryan Prosser (bryan.prosser AT duke.edu) — Assignment development
- Andrew Bihl (andrew.bihl AT duke.edu) — Recitation section 04 (Th 1:25pm)
- Virginia Cheng (virginia.cheng AT duke.edu) — Recitation section 04 (Th 1:25pm)
- Adithya Raghunathan (raghunathan.adithya AT duke.edu) — Recitation section 05 (Th 3:05pm)
- Rahul Swaminathan (rahul.swaminathan AT duke.edu) — Recitation section 05 (Th 3:05pm)
- Annie Tang (annie.tang AT duke.edu)
- Helen Murphy (helen.a.murphy AT duke.edu)
- Janan Zhu (janan.zhu AT duke.edu)
- Matthew Olson (matthew.e.olson AT duke.edu)
- Sean Hudson (sean.hudson AT duke.edu)
- Zach Bears (zachary.bears AT duke.edu)
Course Textbook: David A. Patterson and John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 5th edition, Morgan-Kaufmann. (Amazon, AddAll) — (Not the "ARM" edition or the "Revised Printing")
Links:
Schedule
# | Date | Topic | Reading | Homework due (11:55:00pm) |
---|---|---|---|---|
L01 | Wed 1/13 | Intro/Overview | Chapter 1 | |
R01 | Thu 1/14 | Recitation: Unix, text editing | ||
Mon 1/18 | MLK DAY | |||
L02 | Wed 1/20 | C programming | (See Resources below) | |
R02 | Thu 1/21 | Recitation: Intro to writing C program | ||
L03 | Mon 1/25 | C programming | (See Resources below) | |
L04 | Wed 1/27 | From C to binary | Sec 2.1-2.4, 3.2, 3.5 | |
R03 | Thu 1/28 | Recitation: C programming: Pointers and memory management | ||
L05 | Mon 2/1 | Assembly | Sec 2.5-end | Homework 1, homework1.tar.gz, prog.c (Formerly due 1/27) |
L06 | Wed 2/3 | Assembly | Sec 2.5-end | |
R04 | Thu 2/4 | Recitation: Assembly programming examples & using SPIM | ||
L07 | Mon 2/8 | Combinational logic | Sec 4.1-4.2, B.1-B.3, B.5 basic_logic.circ | |
L08 | Wed 2/10 | Review day | ||
R05 | Thu 2/11 | Recitation: Assembly programming examples: focus on calling conventions | ||
Mon 2/15 | Snow day | Homework 2, homework2.tar.gz, prog_part.c, simple.s (+24hr extension) | ||
L09 | Wed 2/17 | Sequential logic | Sec B.7-B.11 | |
R06 | Thu 2/18 | Recitation: Digital design examples & using Logisim | ||
L10 | Mon 2/22 | EXAM 1 | Past exam 1 Past exam 1 solutions Reference sheet Study guide | |
L11 | Wed 2/24 | Finite state machines, Datapath design | Sec B.10, 4.3-4.4 combo_lock.circ | |
R07 | Thu 2/25 | Recitation: Using Logisim for larger projects | ||
L12 | Mon 2/29 | Exceptions/interrupts/syscalls (latter part of deck) | Sec 4.9 | Homework 3 |
L13 | Wed 3/2 | Memory hierarchies (first part of deck) | Sec 5.1-5.5 | |
R08 | Thu 3/3 | Recitation: Register file and ALU | ||
L14 | Mon 3/7 | Caches (latter part of deck) | Sec 5.1-5.5 | |
L15 | Wed 3/9 | Caches (latter part of deck) | Sec 5.1-5.5 | |
R09 | Thu 3/10 | Recitation: Caching and Memory | ||
Mon 3/14 | SPRING BREAK | |||
Wed 3/16 | SPRING BREAK | |||
Thu 3/17 | Recitation: SPRING BREAK | |||
L16 | Mon 3/21 | Virtual Memory | Sec 5.6-5.9 | |
L17 | Wed 3/23 | Virtual Memory | Sec 5.6-5.9 | |
R10 | Thu 3/24 | Recitation: review for midterm #2 (see study guide questions) | ||
Mon 3/28 | EXAM 2 | Study guide ↑ practice questions here Reference sheet | ||
L18 | Wed 3/30 | I/O | Sec A.8 | |
R11 | Thu 3/31 | Recitation: Cache+virtual memory examples | Due Fri 4/1 Homework 4 Assembler and simulator | |
L19 | Mon 4/4 | I/O | Sec A.8 | |
L20 | Wed 4/6 | Pipelined cores | Sec 4.5-end | |
R12 | Thu 4/7 | Recitation: Starting the cache simulator project | ||
L21 | Mon 4/11 | Pipelined cores | Sec 4.5-end | |
L22 | Wed 4/13 | Pipelined cores | Sec 4.5-end | |
R13 | Thu 4/14 | Recitation: Real world pipelines | Due Fri 4/15 Homework 5 hw5-helper-kit.tgz | |
L23 | Mon 4/18 | Multicore | Chapter 6 | |
L24 | Wed 4/20 | Multicore | Chapter 6 | |
R14 | Thu 4/21 | Recitation: pipelining exercises (plus review for final) | ||
L25 | Mon 4/25 | Intel x86 | Example code, Intel developer manual (pages 1..3908) | |
L26 | Wed 4/27 | Review for the final | ||
Sat 5/7 | FINAL (9am-12pm) | Study guide Practice final |
Syllabus & policies
Course synopsis
Computer structure, machine language, instruction execution, addressing techniques, and digital representation of data. Computer systems organization, logic design, microprogramming, and interpreters. Symbolic coding and assembly systems.Prerequisite: Computer Science 201 or consent of instructor.
Grading
This course will require readings from the textbook, problem sets, programming assignments, and digital logic design. Grading breakdown:
Category | % |
---|---|
Homework | 50% |
Exam 1 | 10% |
Exam 2 | 10% |
Final exam | 25% |
Recitation | 5% |
You are expected to complete the homework individually unless otherwise stated. However, you may discuss topics covered in the class.
Late homework submissions incur penalties as follows:
- Submission is 0-24 hours late: total score is multiplied by 0.9
- Submission is 24-48 hours late: total score is multiplied by 0.8
- Submission is more than 48 hours late: total score is multiplied by the Planck constant (as measured in J·s)
NOTE: If you feel in advance that you may need an extension, contact the instructor. We can work with you if you see a scheduling problem coming, but extensions cannot be granted at or near the due date!
Recitation is where you'll learn concrete skills to complement the lecture's theoretical material, and is essential. Recitation grading works as follows:
- Attendance at recitation is expected. Students attending and making good faith effort will receive full credit for the day.
- You may miss a week's recitation if the exercise for that week is completed and submitted by 8am on the morning of the recitation. Good faith effort is required.
Grade appeals
All regrade requests must be in writing. Email [TA TO BE DETERMINED] with your questions. After speaking with the TA, if you still have concerns, contact the instructorAll regrade requests must be submitted to the instructor no later than 2 weeks after the assignment was returned to you.
Academic integrity
I take academic integrity extremely seriously. Academic misconduct will not be tolerated, and all suspected violations of the Duke Undergraduate Honor Code will be referred to the Office of Student Conduct. A student found responsible for academic dishonesty faces formal disciplinary action, which may include suspension. A student twice suspended automatically faces a minimum 5-year separation from Duke University.In addition to the measures taken by the Office of Student Conduct, the affected assignment(s) will receive zero credit, or possibly -100% in egregious cases.
If you are considering this course of action, please see me instead, and we can work something out! I want every student in my course to be successful.
Resources
- Recordings of Dr. Sorin's section of ECE/CS 250
- Remote access to Linux machines.
- We will use the Duke OIT Linux machines for portions of this course. Please read this document on how to remotely access these machines.
- Unix Tutorial
- You should also go through this short tutorial on Linux.
- File Access
- You can use CIFS to access the files in your home directory. Please see the OIT documentation on CIFS.
- Tools -- Text Editors
- nedit and gedit are a fairly simple GUI-based editors on the Linux machines.
- If you want to become a more sophisticated user of Linux editors you can explore gvim, vim, or emacs on your own.
- Alternately, you can use a local text editor and save files over CIFS or SFTP. For example, Notepad++ on Windows includes an SFTP plugin.
- C Programming Language
- Dr. Bletsch's "C and Software Tools" course from NC State -- has lots of C programming resources
- Video snippets by Prof Drew Hilton (Duke ECE)
- This is an MIT OpenCourseWare set of lectures that does a good job of covering the basics for C programming.
- C Programming Examples
- C Memory Layout Example array as list
- C Bit Manipulation bit manipulation of Hex to extract float fields or for a float input with casting via pointers extract float fields from float input .
- C Memory Layout Example array as list
- Tools -- Compilers (gcc)
- Compilation: gcc -o newApp test.c
- Generate compile time warnings: gcc -Wall test.c
- Include debug symbols into the application: gcc -g -o newApp test.c
- Introduction to gcc
- Tools -- Debugger (gdb)
- Documentation
- GDB essentials
- Quick reference card (annotated version with most useful commands highlighted)
- MIPS Instructions
- SPIM: A MIPS32 Simulator
- Download the appropriate binary for your platform from the SPIM web site.
- Assembly Programming Examples
- Logic Design Online Book
- Pragmatic Logic by William J. Eccles
- Logic Design Tool
- Logisim is a convenient tool that runs on any platform (Mac, Windows, Linux). You will use Logisim to design and test circuits. Click through the download links until you arrive at the sourceforge.net site and then look for the green download button. Click download and it should autodetect your system so you get the right version.