Prerequisites: COSC 110 or equivalent
Discussion of the basic computer architecture elements: gates, combinational and sequential logic, hardware arithmetic, CPU and memory structure. Examination of the languages of machines: representation of data, addressing techniques, symbolic coding, assembly, and linking. Problem solving using assembly language.
Course Outcomes
Upon successful completion of this course, the student will be able to
- Describe the operation of various logic gates and the theory (Boolean algebra) behind them.
- Distinguish between combinational and sequential logic and discuss the function of the clock.
- Describe how a CPU performs instructions during the fetch-decode-execute cycle and how the memory supports its actions.
- Design simple digital logic to produce a specific result from given inputs and/or simplify digital logic to improve the efficiency of producing a result.
- Describe how information of various data types are represented in a computer.
- Explain how standard arithmetic operations (+, -, *, and /) are performed by the hardware.
- Read, write, and debug programs in assembly language.
- Explain the uses of various machine addressing modes and why they are used.
- Use system services in a program.
- Explain the internal workings of the machine on a procedure call and describe the structure of the call frame.
- Distinguish between situations in which procedures or macros are appropriate.
Detailed Course Outline
A. Building logic gates from transistors — 0.5 week
B. Application of Boolean algebra to digital logic — 0.5 week
- Truth tables
- Identities
- Simplification of logic
C. Combinational logic — 1.0 week
- Karnaugh Maps
- Quine-McKluskey algorithm
- Programmable Logic Arrays
D. Computer arithmetic — 1.0 week
- Half adder
- Adder-subtractor
- carry ripple adder
- carry lookahead adder
- fast adders
- Introduction to multiplication and division
E. Sequential logic — 1.0 week
- Flip flop types
- Role of the clock
- Use in registers
F. Memory hierarchy — 0.5 week
- Main memory organization
- Need for address translation
- Role of cache
G. CPU Organization — 1.0 week
- Clock
- Registers
- Fetch decode execute cycle
- Introduction to pipelined CPU
H. Number representation — 1.0 week
- 2’s complement integers
- range of values
- overflow
- Floating point
- range of values (IEEE form)
- excess notation
- overflow and underflow
- special values
- accuracy, truncation, and roundoff
- Hexadecimal form
I. Assembly Language Forms — 1.0 week
- Instructions
- op codes
- operand forms
- addressing modes
- Directives
- reserving and initializing storage
- defining symbols
- Macros or pseudo instructions
J. Arithmetic instructions — 1.0 week
- Integer operations
- Floating point operations
K. Assembling, linking and executing assembly language programs — 0.5 week
L. Character manipulation instructions — 0.5 week
M. Bit operations — 0.5 week
- Shifting
- Logical operations
N. Conditional branching — 0.5 week
- Comparison of integers, floating point values, characters
- Limitations of branches
- Use of flag bits or registers
O. Loop Control — 0.5 week
- Development of loop algorithms
- Managing flags and distances
P. Conversion: numeric strings to/from 2’s complement — 0.5 week
Q. System services — 0.5 week
- Requesting input and output
- keyboard and screen
- files
- Getting information
R. Procedures — 1.0 week
- Use of the stack
- Call frame
- Argument passing (by reference and by value)
- Recursion
In-class examinations — 1.0 week
Total: 14 weeks
Final Exam: During Final Exam week
Evaluation Methods
55% Examinations. Three mid-term exams, each counting 12%; one final exam counting 19%. Examinations consist of short-answer, code segment, and analysis questions.
30% Assignments. Four to six programming assignments worth varying numbers of points, totaling 150 to 200 points. The assignments are directly related to the objectives.
15% Quizzes. Three or four announced quizzes on the lecture material.
Generally, assignments are expected to be handed in on time and examinations are expected to be taken on the designated date and time. Valid excuses, e.g. documented illness, are required for any exceptions to be made. Grading penalties for late assignments are rather severe: 20 percent for one day late, 40 percent for two days late, 70 percent for three days late, 100 percent after that. Quizzes cannot be made up; they must be taken when given. However, allowances can be made for valid excuses.
Example Grading Scale
90%–100% — A
80%–89% — B
70%–79% — C
60%–69% — D
below 60% — F
Undergraduate Attendance Policy
Class attendance is regarded as being very important. Individual faculty may establish penalties for excessive numbers of unexcused absences. Excused absences will be allowed for illness, family emergencies, and involvement in university activities, such as sports. The penalties specified will meet university guidelines and be distributed to students with the course syllabus on the first day of class.
Required Textbook, Supplemental Books and Readings
Irvine, K., Assembly Language for Intel-Based Computers, 5th edition, Prentice Hall, 2006.