Tecnologias e Arquitetura de Computadores

Base Knowledge

Basic concepts of programming, algorithms and data structures. 

Teaching Methodologies

The following methodologies are used in this course:

1 – Expository method: an explanatory method where theoretical foundations and concept are presented by the lecturer and discussed with the class, followed by demonstrative examples;
2 – Experimental method: an active method where the student develops knowledge through problem-solving and the development of individual laboratory projects or group dynamics.

Each class will consist of two moments:

1 – Introductory presentation: At the beginning of the class, the lecturer exposes and discusses the new contents understudy with the students;
2 – Practical application: After the introductory presentation, students develop worksheets and problem solving, individually and together, for practical application of new concepts, autonomously and under the guidance of the lecturer; 

Learning Results

Upon completion of UC, students should be able to:

1. Identify the future evolution of computers based on the knowledge of their evolution until today.

2. Express the basic mathematical and logical operations and different ways of representing numerical and non-numerical quantities.

3. Identify the general architecture of computers.

4. Develop algorithms and implement programs and or procedures in low-level languages.

5. Identify different techniques to increase the processing speed of applications, both in terms of hardware and software.

6. Use microcontrollers to acquire and control analog and digital signals as well as communicate the microcontroller with a computer. 

Program

1. Brief history of computers

2. Review of fundamental concepts for computer architecture a) Bits, Bytes, Words
b) Numbers representation in different bases
c) Operations with numbers in different bases

d) Negative numbers representation e) Floating points
f) Nonnumeric data representation

3. General architecture of computers a) General organization of a CPU
b) Different types of BUS
c) Device I / O

4. 80XXX architecture.
a) Architectures CISC / RISC

5. Memory organization
a) Memory hierarchies
b) Real mode / protected mode c) Virtual memory
d) Cache memory 

e) Memory alignment and its influence on performance.

6. Introduction to low-level Programming

a)Instructions
b) Subroutines
c) interrupts

7. Techniques for speed optimizing a) Pipeline
b) SIMD
c) Superscalar architecture

d) Forecast jumps
e) Speculative execution

8. Introduction to microcontrollers
a. Basics for using Arduino
b. Read analog and digital signals
c. Control analog and digital signals
d. Communications between Arduino and Computer
e. Interrupts in Arduino: advantages and limitations 

Curricular Unit Teachers

Grading Methods

Periodic Evaluation
  • - one or more written tests - 35.0%
  • - final group project - 35.0%
  • - individual practical work - 30.0%
Final evaluation
  • - a written test - 65.0%
  • - an individual project - 35.0%

Internship(s)

NAO

Bibliography

Arroz, G., Monteiro, J. C., & Oliveira, A. (2007). Arquitectura de Computadores, dos Sistemas Digitais aos Microprocessadores. IST

Delgado, J., & Ribeiro, C. (2014). Arquitectura de Computadores (5th ed.). FCA.

Monk, S. (2018). Programming Arduino Next Steps: Going Further with Sketches (2nd ed.). McGraw Hill.