CSCI 140
Assembler Programming and Computer Organization

Spring Semester 2002


Welcome to CSCI 140.  For this course, we will centralize the distribution of information on this course web page. This page can be found on the Clark web server at http://babbage.clarku.edu/~jbreecher/comp_org/comp_org.html.


*Basic Information
*Course Description
*Textbook
*Lectures
*Your Evaluation
*Weekly Events
*The Projects

Basic Information

Professor: Dr. Jerry Breecher, jbreecher@clarku.edu
Carlson Room 102, (508)793-7396
Meeting Time: Lecture: Monday, Wednesday 1:00 p.m. - 2:15 p.m.
Lab: Thursday, 1:15 p.m. - 2:25 p.m.
Office Hours: Monday, Wednesday 2:15 - 3:45
By appointment; 24 hour response by email

Course Description

This is what the catalog says:

140 Assembly Language And Computer Organization/ Lecture, Laboratory

Covers fundamentals of assembly language programming such as data representation, the instruction set, addressing mode, macros, procedures, input and output facilities, assembler and linker, introduction to logic circuits, and the basic machine organization of conventional computers. The goal is to understand how a computer performs various tasks that are completely hidden from the user in a high-level language. For the laboratory component, students will write several programs in assembly language.

Textbook

Patterson and Hennessey, Computer Organization & Design, The Hardware/Software Interface, Second Edition 1998, Morgan Kaufmann ISBN 1-55860-428-6.

Lectures

In the Table below are pointers to the notes for the course.  The formats available can be read by Microsoft Powerpoint (.ppt), read by Apache (.pdf) or downloaded to a postscript printer (.ps).  Lectures generally will be from these notes. Feel free to print them out and use them during class to avoid extensive notetaking. You can simply annotate these notes rather than writing everything. But warning, don't be lulled into a false sense of security. What's talked about in the class will be in MUCH MORE DETAIL than is present on these slides.

An added advantage of written out notes is that you know what to read in the text. In general, I follow the book fairly closely so you should have no trouble figuring out where to find material to amplify these course notes.

The following Notes are arranged in book order, not necessarily in the order we'll lecture on them.

Lecture Title PowerPoint Adobe Acrobat Postscript
Computer Abstractions and Technology Introduction.ppt Introduction.pdf Introduction.ps
The Role of Performance Performance.ppt Performance.pdf Performance.ps
Lecture Title PowerPoint Adobe Acrobat 2X to page Adobe Acrobat 6X to page
Instructions: Language of the Machine Instruction_Set1.ppt Instruction_Set1-2X.pdf Instruction_Set1-6X.pdf
Instructions: Continued Instruction_Set2.ppt Instruction_Set2-2X.pdf Instruction_Set2-6X.pdf
Instructions: Continued Instruction_Set3.ppt Instruction_Set3-2X.pdf Instruction_Set3-6X.pdf
Instructions: Continued Instruction_Set4.ppt Instruction_Set4-2X.pdf Instruction_Set4-6X.pdf
Arithmetic For Computers Arithmetic1.ppt Arithmetic1-2X.pdf Arithmetic1-6X.pdf
How Hardware Interprets Instructions Interpreting Instructions.ppt Interpreting Instructions.ps Interpreting Instructions.pdf
Arithmetic For Computers Arithmetic2.ppt Arithmetic2-2X.pdf Arithmetic2-6X.pdf
The Processor: Datapath and Control Processor1.ppt Processor1-2X.pdf Processor1-6X.pdf
The Processor: Datapath and Control Processor2.ppt Processor2-2X.pdf Processor2-6X.pdf
Enhanced Performance with Pipelining Pipelining1.ppt Pipelining1.pdf Pipelining1.ps
Enhanced Performance with Pipelining Pipelining2.ppt Pipelining2.pdf Pipelining2.ps
The Memory Hierarchy Memory1.ppt Memory1.pdf Memory1.ps
The Memory Hierarchy Memory2.ppt Memory2.pdf Memory2.ps
Interfacing Processors and Peripherals Peripherals.ppt Peripherals.pdf Peripherals.ps
Multiprocessors Multiprocessors.ppt Multiprocessors.pdf Multiprocessors.ps
SPIM: Assemblers, Linkers and all that Assemblers.ppt Assemblers.pdf Assemblers.ps

LABS: This is a chance for you to practice what will be done in the projects. Attendance is expected in these labs, but the main purpose is that you will see what is to happen in the projects. Small demonstrations will happen every week for your amusement and edification.

PROJECTS: These are programming assignments that you are expected to turn in. There's a schedule for these that's given later in this syllabus.

Your Evaluation

Your evaluation in this course is determined by:

05% Labs

45% Projects - The lowest project grade (of those of 1 week duration) will be dropped.

30% 3 Midterm Exams - The lowest of the 3 midterm exams will be dropped.

20% Final Exam

Weekly Events

Here's how the material and deliverables break down for the semester.

Date

Topic

Jan 14

  Chapter 1:  Computer Technology

Jan 16

  Chapter 1: 

Jan 21

  Appendix A:  Assemblers - The Mips Instruction Set

Jan 23

  Chapter 3:  Instruction Set Architecture

Jan 28

  Chapter 3: 

Jan 30

  Chapter 3: 

Feb 4

  Chapter 3: 

Feb 6

EXAM 1

Feb 11

  Appendix B:  Hardware

Feb 13

  Appendix B: 

Feb 18

  Chapter 4:  Computer Arithmetic

Feb 20

  Chapter 4: 

Feb 25

  Chapter 4: 

Feb 27

  Chapter 4: 

Mar 4, 6

SPRING BREAK

Mar 11

  Chapter 5:  The Processor

Mar 13

EXAM 2

Mar 18

  Chapter 5: 

Mar 20

  Chapter 5: 

Mar 25

  Chapter 6:  Pipelining

Mar 27

  Chapter 6: 

Apr 1

  Chapter 7:  Memory Hierarchy

Apr 3

  Chapter 7: 

Apr 8

EXAM 3

Apr 10

  Chapter 8:  Peripherals & Busses

Apr 15

  Chapter 8: 

Apr 17

  Chapter 8: 

Apr 22

  Chapter 9:  Multiprocessors

Apr 24

  Chapter 9: 

May 1-3,6

FINAL EXAM

 

The Projects

You will be expected to write a number of programs using the MIPS Assembly language running on the XSPIM simulator. These programs will start off small, but grow in complexity during the course of the semester. Attendence at the lab assures that you will be properly prepared to do these labs.

THURSDAY

BRIEF DESCRIPTION

.PPT

.PS

.PDF

Jan 17

Learning UNIX. Use xspim to run a simple program.

Proj01.ppt Proj01.ps Proj01.pdf

Jan 24

Use SPIM. Trying various functions. How to debug assembler code. Write a four function calculator.

Proj02.ppt Proj02.ps Proj02.pdf

Jan 31

Using subroutines, etc. Write subroutines to be used in your calculator.

Proj03.ppt Proj03.ps Proj03.pdf

Feb 14

Using subroutines, stacks, etc. Use your subroutines to build a parser for your calculator- Part 2.

Proj04.ppt Proj04.ps Proj04.pdf

Feb 14

BONUS - how to put an exception handler in your project.

Proj04-extra.ppt Proj04-extra.ps Proj04-extra.pdf

Feb 21

Practice using the Debugger

Proj05.ppt Proj05.ps Proj05.pdf

Feb 28

Lab Exam - Using the debugger

Mar 14

Software Engineering - Breaking down a project into smaller pieces.

Proj06.ppt Proj06.ps Proj06.pdf

Mar 21

Prototyping in a High Level Language.

Proj07.ppt Proj07.ps Proj07.pdf

Mar 28

Laying out the Foundation of the project.

Proj10.ppt Proj10.ps Proj10.pdf

Apr 4

Putting it all together

Proj09.ppt Proj09.ps Proj09.pdf

Apr 11

Working with arrays.

Proj10.ppt Proj10.ps Proj10.pdf

Apr 18

Running DLXSim - a simulator that lets you look at what the processor is doing

Proj11.ppt Proj11.ps Proj11.pdf

Feedback (constructive criticism) on these course web pages is welcome, and should be directed to jbreecher@clarku.edu.