On this page:
Computer Architecture (Fall 2015)
1 Introduction
2 Lectures
3 Assignments
4 Turn-In and Grading
4.1 Bitbucket
4.2 Turn-in
4.3 Assignment Scores
4.4 Exam Policy
4.5 Numeric Grade
4.6 Letter Grade
5 Help
6 Readings
7 Software
8 Fine Print

Computer Architecture (Fall 2015)

This class is taught by Jay McCarthy. Call him Jay. Email him at first-name DOT last-name AT gmail DOT com.

We meet in Olsen 109 at 3:30pm-4:45pm TR.

Jay McCarthy’s office hours are 7am-11:30am MWF & noon-3pm TR in Olsen 221.

There is a mailing list hosted at Google Groups. Use it to ask non-revealing questions and receive answers, as well as general course announcements. You are responsible for reading the content of this mailing list.

1 Introduction

Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code.

2 Lectures

 

Day

 

Date

 

Topic

 

Links

 

Notes

 

1

 

09/01

 

Integers

 

 

CSAPP Ch 2-2.3 (slides)

 

2

 

09/03

 

Floating Point

 

 

Floating Point review; CSAPP, Ch 2.4

 

3

 

09/08

 

MIC-1 Architecture

 

 

Digital Logic review; SCO, Ch 4: excerpt and figures

 

4

 

09/10

 

MIC-1 Assembly

 

 

 

5

 

09/15

 

MIC-1 Microcode

 

 

 

6

 

09/17

 

Assignment Review

 

 

 

7

 

09/22

 

MIC-1 New microcode

 

 

 

8

 

09/24

 

MIC-1 Implementing new instructions

 

 

 

9

 

09/29

 

MIC-1 Integration

 

 

 

10

 

10/01

 

Exam 1 Review

 

 

help

 

11

 

10/06

 

Exam 1 Review

 

 

see above

 

12

 

10/08

 

Exam 1

 

 

 

13

 

10/15

 

MIC-1 UART

 

 

help

 

14

 

10/20

 

The Memory Hierarchy

 

 

CSAPP Ch 6-6.4 (slides)

 

15

 

10/22

 

Cache Memories

 

 

CSAPP Ch 6.6 (slides)

 

16

 

10/27

 

Cache Models

 

code

 

CSAPP Ch 6.5-6.7 (slides)

 

17

 

10/29

 

Cache Models

 

 

CSAPP Ch 6.5-6.7 (slides)

 

18

 

11/03

 

Linkers

 

code

 

CSAPP Ch 7-7.6 (slides)

 

19

 

11/05

 

Relocation

 

 

CSAPP Ch 7.7 (slides)

 

20

 

11/10

 

Executables

 

code

 

CSAPP Ch 7.8-7.9 (slides)

 

21

 

11/12

 

Exam 2 Review

 

 

help

 

22

 

11/17

 

Exam 2

 

 

 

23

 

11/19

 

Dynamic Linking & Shared Libraries

 

 

CSAPP Ch 7.10-7.11 (slides)

 

24

 

11/24

 

Exceptions and Processes

 

 

CSAPP Ch 8-8.2 (slides)

 

25

 

12/01

 

System Calls & Process Control

 

 

CSAPP Ch 8.3-8.4 (slides)

 

26

 

12/03

 

Signals et al

 

 

CSAPP Ch 8.5-8.8 (slides)

 

27

 

12/08

 

Final Review

 

 

help

 

28

 

12/11

 

Final @ 11:30-14:30 in Olsen 109

 

 

Jay will not be present on days marked with a * in the Notes column.

This schedule is likely to change.

3 Assignments

 

Assignment

 

Code

 

Out

 

Due

 

Floating Point Representation

 

a1

 

09/01

 

09/10

 

DIY Floating Point Addition

 

a2

 

09/08

 

09/22

 

MIC-1 Fibonacci

 

a3

 

09/17

 

09/29

 

Exam 1

 

exam1

 

 

 

10/08

 

MIC-1 Microcode Extension

 

a4

 

09/29

 

10/20

 

MIC-1 Calculator

 

a5

 

10/15

 

11/03

 

Exam 2

 

exam2

 

 

 

11/17

 

MIC-1 Linker

 

a6

 

10/29

 

11/19

 

UNIX Processes

 

a7

 

11/19

 

12/08

 

Cache Simulator*

 

e1

 

11/19

 

12/11

 

Final

 

final

 

 

 

12/11

Out dates are suggestions—you may need to start earlier—but we ensure that the course will have covered everything necessary by that date.

This schedule may change.

4 Turn-In and Grading

I highly recommend that you read this article about grading. I also recommend you read this article about the stress that you may experience in a computer science program. Please try to make healthy productive choices in your life. I would love the opportunity to help you in any ways I can.

4.1 Bitbucket

You should do all your work for the course in a single private Bitbucket Git repository. (You can use Github if you want, but the private repositories there are limited, so don’t feel like you have to spend that resource on me.) When you start the class, you should go through the following process:
  • Create a Bitbucket account if you do not have one.

  • Create a repository named 2015-Fall-91.305.

    Ensure it is configured as a Git repository that is private. You can configure it with No forks, if you want.

  • Click on Settings and then click on Access management then add me (username: jeapostrophe) to the repository with the Read permission.

  • Initialize the repository by following the instructions on the Bitbucket site.

As you work on assignments, you should create a directory in the repository with the name of assignment and do all your work in that directory. You should commit and push often. I will watch over your shoulder and try to give you advice as you work. Thus, the more you push, the easier it will be for you, because you’ll get more attention from me. This video is a good tutorial on Git.

4.2 Turn-in

You should email your assignments to me before 6PM Lowell time on the due date listed. If you send an assignment late (even by a single second), it will not be graded. This is a real due date and due time. Please use this early due time to get a good night’s sleep and enjoy your evenings.

Your email should have [CS305] code as the subject, where code is the code listed on the assignment table. Do not send multiple emails, if you do, I’ll count the oldest one.

Your email should contain one Zip file with your code and data files inside it, such that they extract to a directory with the same name as the code of the assignment. Any non-code documents should be submitted as a PDF and should be separate attachments (so that I can just look at them in my browser and download the Zip separately.) (I assume that they will also be in the Zip, because it is harder to remove them, but it doesn’t really matter.) I recommend producing PDFs with LaTeX. Finally, you must send me a link to the commit in your repository that the turn-in corresponds to, so I can see the history of the files submitted.

Turn-ins that are not in the correct format will not be graded.

4.3 Assignment Scores

Each assignment’s page describes how it will be graded. All assignments will receive a grade from the closed interval between 0 and 1.

4.4 Exam Policy

Exams must be taken in person, at the scheduled time, and must be turned in on stapled-together paper with your writing on it as produced by your hand and a pen or pencil, except in special situations as required by students with special needs.

Exams must be completed without any notes, books, or resources of any kind, except for one single-sided hot-pink 3-inch-by-5-inch index card, such as is available from Amazon. No other colors or sizes are acceptable.

Each exam will receive a grade from the closed interval between 0 and 1.

4.5 Numeric Grade

I will take your various points and combine them with this function to get a numeric grade:

> (define (sum l)
    (foldl + 0 l))
> (define (average l)
    (/ (sum l) (length l)))
> (define (combine a1 a2 a3 a4 a5 a6 a7 exam1 exam2 final)
    (+ (* 0.4 (average (list exam1 exam2)))
       (* 0.2 final)
       (* 0.4 (average (list a1 a2 a3 a4 a5 a6 a7)))))

Examples:
> (combine 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0)

0.0

> (combine 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5)

0.5

> (combine 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.5 0.9 1.0)

0.76

> (combine 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.8 0.8 0.8)

0.8800000000000001

> (combine 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0)

1.0

4.6 Letter Grade

I will then run the following function to convert it to a letter:
> (define (convert-to-letter ng)
    (cond
      [(> ng 0.93) "A"]
      [(> ng 0.9) "A-"]
      [(> ng 0.86) "B+"]
      [(> ng 0.83) "B"]
      [(> ng 0.8) "B-"]
      [(> ng 0.76) "C+"]
      [(> ng 0.73) "C"]
      [(> ng 0.7) "C-"]
      [(> ng 0.66) "D+"]
      [(> ng 0.6) "D"]
      [else "F"]))

Examples:
> (convert-to-letter 1)

"A"

> (convert-to-letter 0.94)

"A"

> (convert-to-letter 0.899999)

"B+"

> (convert-to-letter 0.81)

"B-"

> (convert-to-letter 0.74)

"C"

> (convert-to-letter 0.6999999)

"D+"

> (convert-to-letter 0.62)

"D"

> (convert-to-letter 0.57)

"F"

5 Help

My job is to help you.

If you need a "shallow" amount of help, then look at the Google Group. First, see if I have already answered your question. Then, send your own email.

Only send me personal email if you need to talk about something private, such as your grades. Anything else is best discussed in public, so others can benefit. If you do send personal email, put [CS305] as a prefix in the subject.

If you need a "deep" amount of help, please come to my office or call me (801-361-0732) and we’ll talk and try to resolve whatever ails you.

6 Readings

(CSAPP) We’ll be using the book Computer Systems: A Programmer’s Perspective (2nd Edition), by R. Bryant and D. O’Hallaron (Amazon link).

(SCO) We will also use some excerpts from the book Structured Computer Organization, by Andrew S. Tanenbaum and James R. Goodman (Amazon link).

We’ll provide excerpts of SCO, but you are expected to procure CSAPP yourself. You may want to also get SCO. Both are available in digital formats. I highly recommend searching for those.

7 Software

The programming assignments should be written in C or using the MIC-1 system which we will discuss in class. The tools we will use is available on Github in the jeapostrophe/mic1 repository.

If you’d like a refresher on C, I recommend this tutorial and if you want an in-depth study, I suggest Learn C the Hard Way.

I highly suggest that you learn to do all your editting and programming in either Emacs or Vim and do everything using the command-line.

Finally, I’d like you to do all your work on a Bitbucket repository that you share with me, so make sure you get yourself set up with that.

8 Fine Print

In this course, all work is to be each student’s own. Students should therefore be familiar with the University’s rules on academic dishonesty, which can be found in the Bulletin of Undergraduate Studies and in the Schedule of Classes. In particular, plagiarism will not be tolerated! Any student caught plagiarizing another’s work will automatically receive a grade of F for the course. If you are unsure as to what constitutes plagiarism, it is your responsibility to check with the instructor. Other forms of dishonesty will result in similar actions. You may collaborate with your classmates on the design and results of the programs you will write in this course, but each student must implement these programs alone. Submission of shared student code is not permissible, and will result in a grade of F for the course. Help files are typically provided for each programming assignment, and students are encouraged to cut and paste useful code from these help files into their assignment submissions, but all other code must be the specific work of each student.

This course is based on 91.305 by Prof. Moloney.