Spring 2014: Computer Architecture
ECE/CS 250, TuTh 1:25PM - 2:40PM, CIEMAS Schiciano Auditorium

[Syllabus]
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.


Faculty

Professor Benjamin Lee
benjamin.c.lee@duke.edu
Office Hours: TuTh 2:40-4:00pm
Office: Hudson 210


Teaching Assistants

Heather Duschl
heather.duschl@duke.edu
Office Hours: W 2:00-4:00pm
Office: Hudson 161

Mohamed Ibrahim
mohamed.s.ibrahim@duke.edu

Yuxuan Li
lyuxuan@cs.duke.edu
Office Hours: M 4:00-6:00pm
Office: North 306


Undergraduate Teaching Assistants

Ruslan Ardashev
ruslan.ardashev@duke.edu
Section: 06D F 3:05-4:20pm
Office Hours: F 4:30-6:30 @ Link

Jeannie Chung
hojeannie.chung@duke.edu
Office Hours: F 3-5 @ Link

Chris Dee
christopher.dee@duke.edu
Section: 05D W 1:25-2:40pm
Section: 03D F 1:25-2:40pm
Office Hours: Th 7-9 @ Link

Xavier de Gunten
xavier.de.gunten@duke.edu
Section: 04D F 3:05-4:20pm
Office Hours: W 4:45-6:45 @ Hudson Cluster

Amanda Duffy
amanda.duffy@duke.edu
Section: 02D W 3:05-4:20pm
Office Hours: Tu 4-6 @ Link

Derek Eidum
derek.eidum@duke.edu
Section: 05D W 1:25-2:40pm
Office Hours: M 1-3 @ Teer Cluster

Rahul Harikrishnan
rahul.harikrishnan@duke.edu
Office Hours: F 3-5 @ Link

Jonathan Im
jonathan.im@duke.edu
Office Hours: F 1-3 @ Link

Eli Lichtenberg
eli.lichtenberg@duke.edu
Section: 02D W 3:05-4:20pm
Office Hours: Th 5-7 Link

Helio Liu
helio.liu@duke.edu
Section: 01D W 1:25-2:40pm
Section: 03D F 1:25-2:40pm
Office Hours: Tu 6-8 Hudson Cluster

David Spruill
david.spruill@duke.edu
Section: 04D F 3:05-4:20pm
Office Hours: W 6:30-8:30 @ Link

Bryan Yang
bryan.yang@duke.edu
Office Hours: M 5-7 @ Link


Discussion Forum

We will use Piazza for class discussion. This system is designed to get you help, fast and efficiently, from your classmates, the TAs, and myself. Rather than eamiling questions to teaching staff, you should post your questions on Piazza.

Register and/or Login Here






Syllabus

Textbooks
D.A. Patterson and J.L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 4th Edition, Morgan-Kaufmann.

Kernighan and Ritchie. The C Programming Language, 2nd Edition (optional)


Grading
This course will require readings from the textbook, problem sets, programming assignments, and one multi-part project. Grades are assigned based on homework (50%), midterm-1 (12.5%), midterm-2 (12.5%), and final (25%).

Homework is assigned throughout the semester. You are expected to complete the homework individually unless otherwise stated. However, you may discuss topics covered in the class. There will be two midterms and a cumulative final exam.

Deadlines will be enforced except under extreme circumstances. Late submissions incur a 10% penalty when <24 hours late, incur a 20% penalty when 24-48 hours late, and receive no credit when >48 hours late. Students should consider turning in something not quite done on time rather than turning in something after the deadline. Start assignments and projects early!


Academic Policy
University policy, as codified by the Duke Undergraduate Honor Code, will be strictly enforced with zero tolerance for cheating and/or plagiarism. If a student is suspected of academic dishonesty (e.g., cheating on an exam, copying code, collaborating inappropriately on an assignment), faculty are required to report the matter 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.






Schedule

Fall 2013 Videos

Prof. Lebeck Lectures

1/13

Introduction and Overview (slides)

1/15-17

Recitation -- C Programming (exercises)

1/16

C Programming (slides)

1/21

Data Representations, Memory (slides)

1/23

Data Representations, Memory II (slides)

1/28

Instruction Set Architecture (slides)

1/30

MIPS Instruction Set (slides)

2/4

Assembly Programming (slides)

2/6

Procedure Calls, Recursion (slides)
mySwap.s (code)
myFactorial.c (code)
myFactorial.s (code)

2/17

Practice Midterm (pdf)

2/18

Boolean Algebra and Logic Gates (slides)

2/25

ALU and Storage Elements (slides)

2/27

Finite State Machines (slides)

3/3

Datapath (slides)

3/6

Control (slides)

3/18

Caches (slides)

3/27

Caches and Performance (slides)

4/1

Practice Midterm #2 (pdf)

4/3

Main Memory (slides)

4/8

Virtual Memory (slides)

4/10

Exceptions and Interrupts (slides)

4/15

I/O (slides)

4/17

Pipelining (slides)






Homework

Visit the Duke Sakai webpage for homework assignments.






Docs/Resources

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 is a fairly simple GUI-based editor 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.

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

C Programming Language
-- 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 .

MIPS Instructions
-- Assemblers, Linkers, and the SPIM Simulator (PDF).
-- A two page MIPS quick reference guide from MIPS is here.
-- A three page document from me with MIPS instructions is here.

SPIM: A MIPS32 Simulator
Download the appropriate binary for your platform from the SPIM web site.

Assembly Programming Examples
-- sum = sum + i*i is here.
-- sum array is here.
-- recursive sum array is here.
-- recursive sum i*i is here.

Logic Design Online Book
Pragmatic Logic by William J. Eccles

Logic Design Tool
Logisim is a very nice tool that runs on any platform (MAC, Windows, Linux). You can use this 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 that it should autodetect your system so you get the right version.

Logisim
-- 8-bit Register File: compsci250.jar
-- Instruction memory initialization file: d_mem.hex
-- 8-bit ALU: ALU.circ