CSCI 304/504: Computer Organization (Fall 2016)

Meetings:
Section I: 8:00AM-9:20AM (TR), Washington Hall 302
Section II: 11:00AM-12:20PM (TR), Washington Hall 201

Instructor: Qun Li (liqun@cs)
Office: McGlothlin-Street 118
Office Hours: (Tentative) 2:00-5:00 (Tue.) or by appointment (send me an email)
TA:  Lishan Yang (lyang11 AT email.wm.edu) Office: 001

Course Description

This course will cover the following subjects: performance measurement, parallelism, computer organization, cache, virtual memory, I/O, how higher level programs are translated into machine language, assembly language, and other topics.


This course involves heavy programming assignments. You are highly encouraged to learn how to program in C before taking the class.

You can start from here to prepare for the class:
Introducing the Linux command line
C for Python programmers
Pointers in C
Class for C
(summary of important information about C)

C tutorial
Test your C


Text Books

Authors: Randal E. Bryant and David R. O'Hallaron
Title: Computer Systems: A Programmer's Perspective
Edition: Third Edition
3rd Edition:
ISBN-10: 013409266X | ISBN-13: 978-0134092669
CMU course page 

and

The C Programming Language,
Second Edition by Kernighan and Ritchie ("K&R"),
or any other suitable book for C language.

Homeworks and Projects

We will have homeworks almost every week and 5~6 projects.

You are encouraged to work together to do homework problems. What is important is a student's eventual understanding of homework problems, and not how that is achieved. Students may consult any source, except for another student's final draft, in learning how to do homework problems. Students must state what sources they have consulted, with whom they have collaborated, and from whom they have received help.

Exams

We have one midterm exams and one final exam. Midterm is tentatively scheduled on 10/25. Final exam will be held on 12/8/2016  (Thur.) 2-5 (for 8AM Section) and 12/14/2016 (Wed.) 2-5 (for 11AM Section)

http://www.wm.edu/offices/registrar/calendarsandexams/examschedules/fall16exam/index.php

Grades

10% Quizzes
10% Homeworks
40% Projects
10% Midterm exam
30% Final exam

Honor Code

The honor code of the College of William and Mary applies to this course.

Students with Disabilities

Any student with a disability needing academic adjustments or accommodations should contact the instructor immediately.

----------------------------------------------------------------------------------------------------

Lecture, Reading, and Assignment Calendar



Week

Date

Lecture Topic


Reading

External Notes

Labs

Homework

1

08/23
Tu

class starts on 8/24



Class for C
(summary of important information about C)

Get a CS account

use lab machines


08/25
Th

First class



2

08/30
Tu

C Basics, Pointers,



C for Python programmers
Pointers in C
Data representation
Bit operations


HW01
due 9/8

09/01
Th

number representation, integer, two's complement


Bits and Bytes video

3

09/06
Tu

integer, floating point, overflow, bit-wise/logic operations, little endian


Integers video
Floating Point  video

array, string, pointer

Lab1: datalab (html)
due 9/24

HW02
due 9/15

09/08
Th

datalab examples, array,



4

09/13
Tu

machine prog.: basics 


Basics video


 

HW03
due 9/22

09/15
Th

machine prog.: arithmetic operations and control 


Control video

5

09/20
Tu

machine prog.: procedure


Procedures video


Lab 2: bomblab (html)
due: 10/8

HW04
due 9/29

09/22
Th

Procedure, loop,
GDB



6

09/27
Tu

Review - stack, string and pointers





HW05
due 10/6

09/29
Th

buffer overflow


CSAPP: 3.10
Advanced
video

7

10/04
Tu

machine prog.: data (array, struct, alignment, union)


CSAPP: 3.8-3.9
Data
video


Lab 3: attacklab
Due: 10/22


10/06
Th

 array, union, buffer overflow



8

10/11
Tu

Fall break (10/08-10/11) -- no class






10/13
Th

cache -- directed mapped cache

cache
video

9

10/18
Tu

cache misses, set associative cache 




Lab4: cachelab
Due: 11/12


10/20
Th

review



10

10/25
Tu



X



HW06
due 11/3

10/27
Th

Midterm Exam


X

11

11/01
Tu

cache write, AMAT, cache blocking




Lab5: malloclab
Due: 11/28

HW07
Due 11/10

11/03
Th

dynamic memory allocation


dynamic memory allo. basic
video

12

11/08
Tu

dynamic memory allocation - advanced 


advanced
video




11/10
Th

Virtual memory


VM concepts
video

13

11/15
Tu

Virtual memory


VM systems
video


Lab6: misc.
Due: 12/4


11/17
Th

exception and process


video

14

11/22
Tu

logic circuit design






11/24
Th

Thanksgiving holiday (11/23-11/27) -- no class



15

11/29
Tu







12/01
Th




Last day

12/02

Last day of class

Finals

12/16
Wed.

8:00AM Section: 12/8/2016 (Thur.) 2:00-5:00pm
11:00AM Section: 12/14/2016 (Wed.) 2:00-5:00pm
(Fall 2016 exam schedule)