Course Code |
CSC346 |
Course Title |
Comp Organization & Assembly Lang |
Credit Hours |
3+1 |
Prerequisites by Course(s) and Topics |
Digital logic design and Object oriented programming |
Assessment Instruments with Weights (homework, quizzes, midterms, final, programming assignments, lab work, etc.) |
SESSIONAL (Quizzes, Assignments, Presentations) =25 %
Midterm Exam =25 %
Final Exam = 50%
|
Course Coordinator |
Muhammad Daniyal Baig |
URL (if any) |
|
Current Catalog Description |
|
Textbook (or Laboratory Manual for Laboratory Courses) |
1. Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e), Randal E. Bryant and David R.O' Hallaron, Carnegie Mellon University |
Reference Material |
https://www.tutorialspoint.com/assembly_programming/index.htm https://emu8086-microprocessor-emulator.en.softonic.com/ |
Course Goals |
Computer technology requires professionals of every computing specialty to understand both hardware (HW) and software (SW). The interaction between HW and SW also offers a framework for understanding the fundamentals of computing. In this course students will study topics such as Instruction Set Architecture, Basic Assembly Instructions, Addressing Modes, Computer Performance evaluation, Floating Point Data, Data Path Design for Single Cycle and Multiple Cycle Computers, Pipelined Data Path Basics, Hazards in Pipelining, Memory hierarchy design, storage and I/O |
Course Learning Outcomes (CLOs): |
At the end of the course the students will be able to: | Domain | BT Level* |
Analyze and demonstrate the in depth knowledge and core concept of the Computer organization and assembly language. |
C |
3,4 |
Explain and adapt strategies using assembly language for error detection and fault tolerance. |
C |
1,3 |
Construct application level programs using assembly language and assemble all the modules to develop a final product. |
P |
4 |
* BT= Bloom’s Taxonomy, C=Cognitive domain, P=Psychomotor domain, A= Affective domain |
|
|
|
Topics Covered in the Course, with Number of Lectures on Each Topic (assume 15-week instruction and one-hour lectures) |
Week | Lecture | Topics Covered |
Week 1 |
1 |
Introduction to computer systems |
|
2 |
Information is bits + context, programs are translated by other programs into different forms, processors read interpret instructions |
Week 2 |
3 |
Caches matter ,Storage devices form a hierarchy |
|
4 |
Representing and manipulating information |
Week 3 |
5 |
Operating system manages the hardware, systems communicate with other systems using networks |
|
6 |
Integer representations |
Week 4 |
7 |
Integer arithmetic |
|
8 |
Floating point |
Week 5 |
9 |
Machine-level representation of programs |
|
10 |
Understanding pointers |
Week 6 |
11 |
Using the gdb debugger |
|
12 |
Out-of-bounds memory references |
Week 7 |
13 |
Buffer overflow |
|
14 |
x86-64: extending ia32 to 64 bits |
Week 8 |
1 hours |
Mid Term |
Week 9 |
15 |
Machine-level representations of floating-point programs |
|
16 |
Processor architecture: the Y86 instruction set architecture |
Week 10 |
17 |
Logic design and the Hardware Control Language (HCL) |
|
18 |
Sequential Y86 implementations |
Week 11 |
19 |
Pipelined Y86 implementations |
|
20 |
Processor architecture |
Week 12 |
21 |
Assembly Language Forms |
|
22 |
Instruction set architecture |
Week 13 |
23 |
Assembly Instructions |
|
24 |
Assembly Instructions (contd.) |
Week 14 |
25 |
Extending ia32 to 64 bit |
|
26 |
Hardware control language |
Week 15 |
27 |
Assembly Language directives |
|
28 |
Pipelining introduction |
Week 16 |
29 |
Pipelining using y86 Architecture |
|
30 |
Pipelining using sequential instructions |
Week 17 |
2 hours |
Final Term |
|
Laboratory Projects/Experiments Done in the Course |
|
Programming Assignments Done in the Course |
4 programming assignments |