CS/ECE 354: Machine Organization and Programming

Last updated by Karen on Nov 9, 2009

Class Announcements

Please send me e-mail and stay home if you have fever and other flu symptoms.

To reduce my effort in sending class announcements to those who are ill, I am introducing this new little web page section to note class announcements. Items will not remain on this page for the entire semester, but will instead will represent the current week's announcements.

Week of Nov 23


Links within this web page


Instructor:

Teaching Assistants:


Textbook information

There will be no assigned textbook for this course, this semester. Use the provided writings and lecture notes (links below, within the Schedule), and listen in class for direction relating to readings from textbooks.

You will need access to information about programming in the C language. Most any textbook that introduces the C language (not C++) is acceptable, so if you already have a book, use it. If you do not already have a book, please purchase a copy of

The C Programming Language
Brian W. Kernighan and Dennis M. Ritchie
Second Edition

You will find this book relevant and useful in both further coursework and in industry. The university bookstore will not have many copies, and they will not be in the textbook section. In today's world, it will be easy and quick to obtain a copy at local bookstores or online sources.


Handouts


Assignments

There are both written homeworks and programs in this course. Programs focus on course topics. Grading is based on both correctness and programming style. You write both C and assembly language programs in this course. You will be expected to design algorithms and organize code for these programs. Algorithm details will not often be covered in class. You are expected to write grammatically correct, clear documentation for the code. A description of our expectations for programs is given in this Guidelines for Programs document. You will not be given test cases for your programs. So, you will need to identify reasonable test cases, and test your own program with them.

You will use computers that are running RedHat 5 Linux, a Unix operating system. If you had an account in CS last semester, it will still be available to you. Otherwise, you have been assigned a new account. Learn how to access your account by logging in as "newuser" on one of the Unix machines (leave the password entry blank). If this is not clear, you should attend one of the Unix Orientation Sessions.

Programs and homeworks are due as stated on each assignment: given by both a due date and a time. Assignments will be turned in online. Any assignment turned in after the due date/time and up to 24 hours late will receive a deduction of 25% of the total available points. Any assignment turned in more than 24 hours after the due date/time will not be graded, and it will receive a zero score. Exceptions to this late policy will be considered only if discussed with your instructor well before the assignment is due.

You may work in pairs on assignments. Both students working together must be enrolled in the course. Each student must (individually) turn in each assignment. On collaborated assignments, there will be 2 copies of the assignment turned in: one by each of the pair working together. Include the names of both students involved. The TA will choose to grade just one of these turned in assignments, giving the same score to both students. Pairings may be different on different assignments.

Here are links to some information about pair programming. You will need to sift through some these to get details that might help in this class.

Exam questions will require your understanding of both homeworks and programs. Expect exam questions to determine whether you both did and understood the assignments.


Solutions & Statistics


Examinations

There will be 3 exams. The first two are given during class time; the last exam is given during the summary activity period. The dates of the exams are given in the schedule below.

Policies

Bring a current photo ID to all exams. Your UW student ID is preferred. No ID, no exam!

Each student may use one 8.5 by 11 inch sheet of paper with hand-written notes when taking the exams. Both sides of the paper may be used. These notes may not be shared when taking the exam.

Copies of appropriate tables for ASCII/MAL/TAL will be provided with the exam.

No electronic devices (such as calculators and laptop computers) may be used during exams. Cell phones or pagers will be turned off during exams. A phone that rings during an exam may result in a penalty, determined by the instructor.

If you have a conflict with any listed exam time, you must notify your instructor by the end of the second week of classes.

Here are many previous exams (some with solutions). Some of the questions are representative of questions you are likely to see on this semester's exams. However, because of changes in the course as well as the credit reduction, lots of questions are neither representative nor appropriate. The more recent the exam, the more appropriate the questions. The course material on function linkage, implementation, and MIPS conventions for register usage were extensively changed as of the Spring 2007 semester.

University policies will be followed strictly in this course. Please, pay particular attention to policies on academic misconduct and incompletes.


Grading

Grades will be based on the exams, homework, and program scores. More difficult, and more time consuming assignments will be given more weight than easier ones.
  percentage
homeworks and programs  30% 
exam 1  20% 
exam 2  25% 
exam 3  25% 

A small amount of extra credit is available. It is described in this extra credit description handout.

Requests for re-grades must be made within one week after graded work is returned. For programs and homeworks, contact the TA listed as the grader on your grade sheet. For exams, talk to Karen.


Helpful Links

Here are some (possibly) helpful web pages.

C Programming

addressing mode links

Class Examples


Course Schedule

Tentative schedule for Fall 2009.

All students are responsible for the material under the headings of Writings and Lecture Notes and On Your Own. The difference between these 2 categories is that the material under the heading of On Your Own will not be covered in class.

Dates Topics Writings and Lecture Notes On Your Own Beyond 354 Due Dates
- prerequisite material: Number Systems
9/2-4 class policies,
how computers work
the basics of computer operation
9/7-11 C programming introduction,
I/O,
on pointers,
on functions and memory allocation
on argv and argc:
questions, questions with answers
No class Monday Sept 7 (Labor Day)
9/14-18 C programming integer representations:
questions, questions with answers

character representation:
questions, questions with answers
floating point representation finish the optional Assignment 0 by Monday
9/21-25 finish C programming, integer arithmetic and logical operations integer arithmetic, logical, and shift operations two's complement multiplication Assignment 1 due Friday: C program
9/28-10/2 Assembly language: with MIPS R2000 examples
motivation for registers,
basics of MAL (MIPS assembly language),
MIPS instructions,
code implementation examples
need-to-know aspects of MAL No class Monday Sept 28 (Yom Kippur)
10/5-9 MIPS assembly language
on addressing modes
addressibility: questions, questions with answers Exam 1 WEDNESDAY
(covers thru arithmetic and logical operations)
10/12-16
data structures
arrays, stacks, and queues array code implementation: questions, questions with answers
Assignment 2 due Monday: super simple MAL program
10/19-23
functions
function implementation MIPS conventions
Assignment 3 due Friday: MAL program using arrays
10/26-30 finish material on functions,
the assembly process
the assembly process linking and loading
11/2-6 finish material on the assembly process
on I/O
input and output, more on I/O and DMA Assignment 4 due Friday: MAL programs with functions
11/9-13 finish material on I/O
11/16-20 exception handling interrupts, an incomplete kernel, and a complete, non-reentrant kernel.
Just for fun, read The Story of Mel.
Exam 2 MONDAY
(covers thru function implementation)

Assignment 5 due Friday: hand assembly
11/23-27 finish exception handling No class Wednesday Nov 25 (Thanksgiving)
11/30-12/4 performance on perfomance issues pipelining Assignment 6 due Friday: MAL program using interrupts
12/7-11 finish performance, extra topics floating point appreciation,
Intel x86 appreciation
12/14 finish extra topics
Saturday Dec 19, 10:05am-12:05pm Exam 3 during Summary Activity period
(Covers the assembly process, I/O, interrupts, performance, and end-of-semester topics.)
Location: 5206 Soc Sci


Miscellanea