Computer Architecture

Objectives

Knowledge

  • The general organization of computer hardware, and the inner workings of the CPU.
  • The hardware representation of data and instructions.
  • The translation process from C programs to assembly language and machine language.
  • The low level interfaces to I/O devices.
  • The organization and characteristics of memory units.

Competencies and aptitudes

  • C programming, assembly programming, translating between the two.
  • Detailled knowledge about the components of the Von Neumann architecture.

General characterization

Code

11152

Credits

9.0

Responsible teacher

Pedro Abílio Duarte de Medeiros

Hours

Weekly - 5

Total - 70

Teaching language

Português

Prerequisites

Introduction to Programming (Introdução à Programação) and Digital Systems (Sistemas Lógicos).

Bibliography

Dive Into Systems: A Gentle Introduction to Computer Systems, Suzanne Matthews et al., No Starch Press, 2022  https://diveintosystems.org/#_read_the_book

Operating Systems: Three Easy Pieces v1.00 (2018) , Remzi Arpaci-Dusseau e Andrea Arapci-Dusseau, https://pages.cs.wisc.edu/~remzi/OSTEP/#book-chapters

How to Think Like a Computer Scientist - C VersionThomas Scheffler and Allen B. Downey,  June 27th, 2019, https://github.com/tscheffl/ThinkC/


Teaching method

In lectures we will explain and discuss the sequence of points in the course program. 

 During lab classes students will develop a series of practical programming assignments, whose objective is to apply and consolidate the concepts that were learned in lecture. 

Evaluation method

The final mark (FM) is obtained using two components: theoretical-practical mark (TPM) and laboratory mark (ML):

FM = 0,70*TPM+0,30*ML

Theoretical-practical mark (TPM) is obtained in two tests or in final exam

TPM = (mark of test 1 + mark of test 2 ) / 2   or

TPM = mark of final exam

To pass the course TPM should be higher than 9,5

Laboratory mark (ML): is obtained through 4 programmig assignments with marks NEP1, NEP2, NEP3, NEP4.  Programming assignments are developed in groups of two students. The use of tools like Copilot and ChatGPT is allowed, but must be reported through the insertion of commentaries in the source code submitted; these annotations will be crutial if the delivered code is subjected to plagiarism detection software.

ML = (NEP1 + NEP2 + NEP3 + NEP4) / 4

To pass the course and to have access to the final exam, ML should be higher than 6,0

Each mark NEPi has two components:

- NGi  group mark between 0 an 20, which is related with the functionality of the code delivered

- NTPi individual mark between 0 and 100, obtained through the grading of the answers to a special part of the test with questions about programming assignments: in test 1 about 1st and 2nd assignment and in test 2 about 3rd and 4th assignment.

                if NTPi >= 50,  NEPi = minimum( 20 , NGi )
                else if NTPi >= 20,  NEPi = mínimum( 12, NGi )
                else NEPi  = 0

Subject matter

1. Levels in a computational system. Von Neumann architecture. Operating system level. Operating system functions; the file abstraction. The operating system command interpreter.

2. The CPU component: general organization, data representation, machine instruction types and formats, suport of high level programming language concepts by CPU instructions. 

3. The main memory (RAM) component: Levels of the memory hierarchy; Cache memory. Physical and Virtual Adresses. Paging. Compiling, linking  and loading.

4. The input/output system component: input/output devices, device support by the operating system.

Programs

Programs where the course is taught: