Proposed Revision to Outcomes for CS3432 Computer Architecture I

Fall 2007
Eric Freudenthal

Proposed revisions appear in italics.

Knowledge and abilities required before students enter the course

  1. Knowledge and Comprehension:
    Students have been introduced to:
  2. black box model of computer architecture (CPU/Memory)
  3. digital logic (and/or gates, flip-flops, registers, counters, multiplexors, decoders)
  4. combinational logic, clocks, memory elements
  5. structure of simple adder, simple ALU
  6. Application and Analysis:
    Students are able to apply:
  7. able to use the campus computing environment (windows PCs)
  8. can evaluate logic expressions
  9. differentiate between real numbers and integers
  10. differentiate between mathematical relations and functions
  11. Synthesis and Evaluation
    Students are able to:
  12. know about and can use arrays, stacks, queues, linked lists, and basic ADTs
  13. know about and can use references to objects in a high level language that supports automatic garbage collection
  14. apply a high-level language to solve a problem
  15. know about and can use pointers in a high-level language

Learning Outcomes

  1. Knowledge and Comprehension:
    Upon successful completion of this course, students will have been introduced to:
  2. symbol table
  3. functions of a compiler
  4. fixed and floating-point numbers
  5. RAM, ROM, EPROM, E2PROM/Flash
  6. disk architecture/access time (seek time, rotational latency, transfer time)
  7. explicitly programmed memory management (e.g. the need for malloc/free), performance implications of automatic garbage collection
  8. implementation of function and data members within objects
  9. Application and Analysis:
    Upon successful completion of this course, students will be able to apply:
  10. finite state machines
  11. separate compilation: functions of compiler, assembler, linker, and loader and relocatable code, assembler directives and source-language macros
  1. fetch/decode/execute cycle, program counter, machine state, instruction execution time, i.e., why some instructions take longer to execute than others (w.r.t. memory access) †¡, effective address calculation
  2. use of registers and memory (stored program concept), addressing bytes and words in memory
  3. interrupt handling
  4. knowledge of and manipulation of stack, stack pointer, frame, frame pointer
  5. I/O models (essentially same as prev version)
  6. synchronization: interrupt-driven vs. polled
  7. data transfer: programmed vs. DMA
  8. output: sofware generated pulse-width-modulation
  9. input: management of A/D converter, interpretation of values
  10. The implementation of composite types (e.g. "C" structs), their relationship to objects
  11. Commnd-line user interfaces including a unix shell, source-level debugger, and a project compilation management tool (e.g. make)
  12. Introduction to the C Programming language
  13. subroutine linkage including stack-based argument passing
  14. allocation of local variables
  15. explicit memory management
  16. declaration of composite types
  17. pointer and address-of operators (*, &)
  18. pointer arithmetic, explicit pointer casting, and arrays
  19. cpp: simple macros, #include
  20. representation of C primitive integer and pointer types
  21. no exposure to standard C library
  1. Synthesis and Evaluation
    Upon successful completion of this course, students will be able to apply the following in new situations: knowledge of
  2. Numeric data representation and number bases (powers of 2, binary, decimal, and hexadecimal represenation)
  3. Representation of nonnumeric data
  4. Conversion from one representation to another
  5. Least- and most- significant bits
  6. Signed and unsigned numbers, sign extension, overflow detection, underflow detection, one's complement, two's complement, and sign magnitude representation
  7. Basic machine organization, control unit and function
  8. Assembly/machine language programming including
  9. Assembly language
  10. Machine language (assembly/disassembly)
  11. Assembly language representations of high-level programming constructs such as if-then-else, while loop, repeat-until loop, do loop, case statement
  12. Instruction set architecture, i.e., opcodes, operands, instruction formats and types (data manipulation, control, I/O)
  13. Condition code register and its function
  14. Addressing modes: register, base or displacement, immediate, PC-relative, pseudodirect
  15. Data, text, and stack segments
  16. Subroutines, caller, callee, return address, parameter passing techniques
  17. Program design, implementation (modularization), testing, documentation
  18. Know about and can use pointers in a high-level language; Understand the relationship of pointers to memory addresses, the relevance of indexed addressing modes, and the arithmetic manipulation of pointers for array and struct access.
  19. Problem solving techniques
  20. Written and oral communication skills w.r.t. expressing themselves precisely
  21. Simulation
  22. Two-pass assembler, backpatching