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
- Knowledge and Comprehension:
Students have been introduced to: - black box model of computer architecture (CPU/Memory)
- digital logic (and/or gates, flip-flops, registers, counters, multiplexors, decoders)
- combinational logic, clocks, memory elements
- structure of simple adder, simple ALU
- Application and Analysis:
Students are able to apply: - able to use the campus computing environment (windows PCs)
- can evaluate logic expressions
- differentiate between real numbers and integers
- differentiate between mathematical relations and functions
- Synthesis and Evaluation
Students are able to: - know about and can use arrays, stacks, queues, linked lists, and basic ADTs
- know about and can use references to objects in a high level language that supports automatic garbage collection
- apply a high-level language to solve a problem
- know about and can use pointers in a high-level language
Learning Outcomes
- Knowledge and Comprehension:
Upon successful completion of this course, students will have been introduced to: - symbol table
- functions of a compiler
- fixed and floating-point numbers
- RAM, ROM, EPROM, E2PROM/Flash
- disk architecture/access time (seek time, rotational latency, transfer time)
- explicitly programmed memory management (e.g. the need for malloc/free), performance implications of automatic garbage collection
- implementation of function and data members within objects
- Application and Analysis:
Upon successful completion of this course, students will be able to apply: - finite state machines
- separate compilation: functions of compiler, assembler, linker, and loader and relocatable code, assembler directives and source-language macros
- 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
- use of registers and memory (stored program concept), addressing bytes and words in memory
- interrupt handling
- knowledge of and manipulation of stack, stack pointer, frame, frame pointer
- I/O models (essentially same as prev version)
- synchronization: interrupt-driven vs. polled
- data transfer: programmed vs. DMA
- output: sofware generated pulse-width-modulation
- input: management of A/D converter, interpretation of values
- The implementation of composite types (e.g. "C" structs), their relationship to objects
- Commnd-line user interfaces including a unix shell, source-level debugger, and a project compilation management tool (e.g. make)
- Introduction to the C Programming language
- subroutine linkage including stack-based argument passing
- allocation of local variables
- explicit memory management
- declaration of composite types
- pointer and address-of operators (*, &)
- pointer arithmetic, explicit pointer casting, and arrays
- cpp: simple macros, #include
- representation of C primitive integer and pointer types
- no exposure to standard C library
- Synthesis and Evaluation
Upon successful completion of this course, students will be able to apply the following in new situations: knowledge of - Numeric data representation and number bases (powers of 2, binary, decimal, and hexadecimal represenation)
- Representation of nonnumeric data
- Conversion from one representation to another
- Least- and most- significant bits
- Signed and unsigned numbers, sign extension, overflow detection, underflow detection, one's complement, two's complement, and sign magnitude representation
- Basic machine organization, control unit and function
- Assembly/machine language programming including
- Assembly language
- Machine language (assembly/disassembly)
- Assembly language representations of high-level programming constructs such as if-then-else, while loop, repeat-until loop, do loop, case statement
- Instruction set architecture, i.e., opcodes, operands, instruction formats and types (data manipulation, control, I/O)
- Condition code register and its function
- Addressing modes: register, base or displacement, immediate, PC-relative, pseudodirect
- Data, text, and stack segments
- Subroutines, caller, callee, return address, parameter passing techniques
- Program design, implementation (modularization), testing, documentation
- 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.
- Problem solving techniques
- Written and oral communication skills w.r.t. expressing themselves precisely
- Simulation
- Two-pass assembler, backpatching