SYLLABUS

                             1/7/05


 

Topics in Computing & Software Systems

“Introduction to Computer Systems”
TCSS 490A - Winter 2005

6:45 – 9:00 pm TTH

Class: Cherry Parkes 105

Laboratory: Cherry Parkes 206D

 

Instructor:

Professor Larry Crum

E-mail:

 lcrum@u.washington.edu

Phone:

(253) 692-5866

Office:

Pinkerton 317

Office Hours:

TTH 6:10 - 6:40, 9:00- ;   Appointment recommended for other times.

Graduate Assistant:

Li Jiao

E-mail:

 lj23@u.washington.edu

Phone:

(253) 692-4630

Office:

Cherry Parkes 206A

Office hours:

TBA

Text:

 

 

 

Introduction to Computing Systems, from bits & gates to C & beyond      Yale N. Patt  &  Sanjay J. Patel                                                                McGraw Hill, ISBN: 0-07-237690-2      http://www.mhhe.com/engcs/compsci/patt/

 

Course Description: TCSS490A provides a look under the hood of digital computers, with a motivation to make you a stronger programmer, and provide foundations for software systems design.  It provides:

·  an introduction to the basic hardware and organization of computers,

·  an understanding of the relationship between hardware and software,

·  an appreciation and insight into the power, constraints, and options that support robust and efficient computing system design, and

·  an introduction to the foundations for embedded computing.

 

Prerequisites: TCSS 142 or equivalent, and precalculus.

 

Primary Course Goals:

1.      Knowledge of fundamental computer organization (CPU, Bus, Memory and I/O) and Instruction Set Architecture.

2.      Knowledge of digital logic related to implementation of the above.

3.      Understanding of the basic machine cycles, computational operations, and timing.

4.      Ability to write small programs and function modules in native assembly language.

5.      Understanding of how high-level programs (we will use C) are executed, and how programs can be created through programming at optimal levels.

 

Schedule:

 

 

    Week

Topics Covered

Readings (Chapters)

Homework/Projects               (Typically Due the next Tue)

1: Jan 4, 6

Bits, Data Types, & Operations

1 & 2

HW 1 – Binary Arithmetic

2: Jan 11, 13

Digital Logic

3

HW 2 – Circuit Design

3: Jan 18, 20

Organization and Instruction Set Architecture (ISA)                      Midterm - Chapters 1 thru 3

4 & 5.1

HW 3 – ALU Design

4: Jan 25, 27

ISA II

5.2-5.6

HW 4 – Instruction Design

5: Feb 1, 3

Programming and Assembly Language I

6 & 7.1-7.2

HW 5 – Hand Assembly

6: Feb 8, 10

Midterm – Chapters 4 thru 6 Assembly Language II, Input/Output

7.3-7.4 & 8

HW 6 – Assembly Program design

7: Feb 15, 17

Assembly Subroutines and Stacks

9 & 10

HW 7 – Assembly Program design    - Part 1

8: Feb 22, 24

Introduction to C Language                      Midterm – Chapters 7 thru 10

11, 12, 13 & 14

HW 8 – Assembly Program design    - Complete

9: Mar 1, 3

Debugging, Pointers, & Arrays

15, 16

HW 9 – C Program Hand Compile

10: Mar 8, 10

I/O and Data Structures

18 & 19

HW10 - C Program Hand Compile   - Complete (Due Mar 10th)

11: Mar 15

Final Exam 6:45 - 9:00

 

HW11- Lab Presentation

 

Laboratory:  We will do some hands on exploratory work in our laboratory (CP 206D), led by teams of students.  The teams will prepare the presentations and will get credit toward their homework grade.

 

Grading: Homework (25%), Midterms (40%) Final Exam (25%), Class Participation (10%)

Characteristics of an A student – Work done is outstanding and shows particular insight and creativity.  It is presented very professionally.

Characteristics of a B student – Work done is complete, predominance of it is correct, and it is presented well.

Characteristics of a C student – Work is basically complete and correct, and it is presented coherently. The student is prepared to use the material in the next course but will likely need more study in the area.

 

Plagiarism:  Students are encouraged to collaborate with their colleagues on understanding assignments and gaining insight on solutions.  However, any significant contribution in a submission must be acknowledged and the responsible student given due credit.  See http://depts.washington.edu/grading/issue1/honesty.htm .

______________________________________________________________________________

If you would like to request academic accommodations due to a temporary or permanent disability, contact Lisa Tice, Manager for Disability Support Services (DSS) in the Mattress Factory Bldg, Suite 206. An appointment can be made through the front desk of Student Affairs (692-4400), through Student Development and Success (692-4501), by phoning Lisa directly at 692-4493 (voice) or 692-4413 (TTY), or by e-mail ltice@u.washington.edu. Appropriate accommodations are arranged after you've conferred with the DSS Manager and presented the required documentation of your disability toDSS.

 

Topics covered

1.       Machine representation of numbers and non-numeric data

a.       Binary representations of fixed precision whole numbers

b.       Binary arithmetic

c.       Floating point representation and arithmetic

d.       ASCII, Unicode – representation of characters

e.       General data types

2.       Digital logic

a.       Gates

b.       Combinational circuits

                                                   i.      Digital logic

                                                 ii.      Boolean algebra applied to circuits

                                                iii.      Representative circuits (multiplexers, decoders, adders, etc.)

                                               iv.      Arithmetic-logic unit

c.       Sequential circuits

                                                   i.      latches, flip-flops, registers

                                                 ii.      registers

d.       Memory organization

                                                   i.      register files

                                                 ii.      main memory

                                                iii.      types of memory (ROM, EEPROM, etc.)

e.       Bus structures and functions

                                                   i.      CPU internal data flow

                                                 ii.      data bus

                                                iii.      address bus

                                               iv.      control bus

3.       Computer organization

a.       CPU internal (registers, bus, ALU, flags, etc.)

b.       Main memory and memory maps

c.       Busses

d.       Simple I/O (keyboard, video, external storage)

e.       External storage

4.       Instruction Set Architecture

a.       ISA of a typical 8/16 bit CPU

                                                   i.      data movement instructions

                                                 ii.      arithmetic/logic instructions

                                                iii.      flow of control instructions (unconditional and conditional branches)

                                               iv.      I/O (separate I/O space vs. memory mapped I/O)

                                                 v.      control instructions

                                               vi.      introduction to interrupts and traps

                                              vii.      addressing modes

b.       machine cycle (fetch, decode, execute)

                                                   i.      simulation of a simple machine

c.       examples of numeric and non-numeric computations

5.       Assembly language and machine translation

a.       Introduction to assembly process

b.       the assembly development tools

c.       machine translation from assembly statements into machine code

d.       modular assembly, linking and creation of executable programs

6.       Introduction to C language and interface with assembly modules such as

a.       Differences between C and Java/C++ (esp. struct, pointers, memory mangagement and compilation process)

b.       Standard library functions (stdio, stdlib, etc.)

c.       function call conventions in C

d.      inline assembly instructions