CSCI Departmental Logo
ComputerScience







 Home

 Contacts

 Courses

 Academics

 Research

 People

 Calendar

 Resources

 Facilities

                [H|C]335 Computer Structures

DESCRIPTION AND GOALS

[H|C]335 explores how programs written in a high level langauge are
evaulated by a processor to control the physical world.
The course will touch upon topics
covered in a number of subsequent CS classes including compilers,
operating systems, computer architecture, and digital design.  It's
obvious that we will be skimming the surface of these topics; for
example, we will examine what a compiler and its associated tools
(assembler, linker) do in some detail, but not how they are
implemented to perform their function.

At the end of this course, every student should be able to explain, in
a technically accurate manner, the path from program to I/O and to be
proficient in using one representive set of C based tools to control a
defined physical world.

TOPICS:

The following does not necessarily represent the order
of presentation -- some interleaving of topics is almost
essential (for example topics 2-3).

1. Data Representation     (2.5 hours)
   A. Bits, Bytes, Words
   B. Binary, Hexadecimal
   C. ASCII
   B. Memory, Endianness

2. Computer Instruction Sets   (7.5 hours)
   A. Stored Program Concept
   B. Operands
   C. Logical Operations
   D. Arithmetic Operations
   E. Instruction Representation
   F. Control Flow Operations
   G. Addressing Modes

3. Implementing C in Assembly Language  (5 hours)
   A. Register/Memory Use (Application Binary Interface)
   B. Static Variables
   C. C integer Representation
   D. C struct Representation
   E. C Control Structures (if-then-else, while, for)
   F. Procedure Calls (especially Stack Frames)
   G. Parameter Passing
   H. Dynamic Variables
   I. Linking C and assembly code programs

4. Programming Tools (2.5 hours)
   A. Compilers
   B. Assemblers
   C. Linkers
   E. Loaders
   F. Binary Utilities (nm, objdump)

6. Computer I/O   (3.75 hours)
   A. Serial I/O
   B. Timers/Counters
   C. Interrupts
   D. DMA

7. Embedded Software Structures (Optional) (5 hours)
   A. Control Loop
   B. Cooperating FSMs
   C. Timer and interrupt driven software

8. Computer Arithmetic (3.75 hours)
   A. Number Representations (2's complement, fixed point, floating point)
   B. Addition and Subtraction
   C. Multiplication
   D. Basic Integer Arithmetic Circuits

9. Instruction Set Interpretation  (5 hours)
   A. Datapath Block Diagrams
   B. RTL (Register Transfer Level) Controller Descriptions
   C. Fetch-decode-read-execute-write interpretation cycle
   D. Instruction Set Interpreter in RTL

A significant part of the 335 experience is a hands on laboratory in
which the students use C and Assembly language to directly program an
embedded processor to control a physical device.

For example, in the current [C|H]335, we use "Goofy Giggles", a three
wheeled robot with an embedded processor, an infrared (IR) remote
control, an audio system, and various sensors.

TOOLS:

Programming assignments are in C and Assembly and are developed
in a UNIX shell environment utilizing the Make and GDB.

SUGGESTED TEXTS:

TBD

APPENDIX A:

[e] ==> Essential Background
[#] ==> Helpful Topics


Tools
----

[e] Unix shell
[e] Unix text editor
[e] C
[#] make
[#] debugger

Propositional Logic
-------------------

[e] Truth Tables
[#] Bitwise Operators

Program Structures
------------------

[e] Sequential programs
[e] Conditionals
[e] Loops
[e] Procedures
[e] call-by-value
[e] call-by-reference
[e] Recursion

Basic Data Types
----------------

[e] Numbers (integers, reals, etc.)
[e] Booleans
[e] Strings, characters
[e] Variables
[e] Arrays

Abstract Data Types
-------------------

[e] Number Systems (binary, octal, hex)
[#] Integer representations

Languages
---------

[e] interpretation
[#] finite state automata

APPENDIX B:

  Courses that depend on this material (TBD)  should
  list course number,name and topics

  Courses from which assumed knowlege is derived (TBD)









Valid HTML 4.01!