Students will gain knowledge of both theoretical and practical aspects of computer architecture, the latter being acquired through a series of labs, problem sets and projects.The course will allow students to gain an understanding of assembly languages, and its relation with higher level languages (C as an example). Furthermore, the students will learn how assembly code is translated to machine language programs, and what is the hardware that is required to execute them, focusing on several aspects of computer organization like CPU, memory, and I/O units.
Knowledge
Competencies and aptitudes
1. Programming in C.
2. Number representation.
3. Assembly language: instruction types, instruction format, procedures and calling conventions.
4. Compiling, linking, assembling, and loading.
5. Internal organization of processing units. Single cycle processor. Pipelining. Advanced concepts.
6. Caches and memory units. Virtual memory basics.
7. I/O.
Computer Systems: A Programmer''s Perspective, 2/E , Randal E. Bryant, David R. O''Hallaron, Prentice Hall, 2011
Computer Organization and Design: The Hardware/Software Interface (revised Fourth Edition). By David A. Patterson, John L. Hennessy. Morgan Kaufmann editors, 2011.
C Programming Language (2nd Edition). By Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, 1988.
Introduction to Programming (Introdução à Programação) and Logical Systems (Sistemas Lógicos).
Hours per credit | 28 | ||
Hours per week | Weeks | Hours | |
Aulas práticas e laboratoriais | 26.0 | ||
Aulas teóricas | 39.0 | ||
Avaliação | 6.0 | ||
Self study | 61.0 | ||
Project | 120.0 | ||
Total hours | 252 | ||
ECTS | 9.0 |