1st Cycle Studies
Computer Technology; Introduction to Programming and Problem Solving; Introduction to Procedural Programming.
The theoretical sessions introduce some of the fundamental concepts behind the design and implementation of a computer architecture, presenting the way software relates to this architecture.
The theoretical and practical sessions will focus on problem-solving, for subsequent application of the acquired knowledge in practical laboratory classes.
The lab sessions consist of weekly practical assignments, previously available to the students, that apply and illustrate the contents taught during the theoretical courses.
Providing a global view about the functioning of modern computers, filling the gap between the contents taught during the courses of high-level programming languages and digital systems design. At the end of the curricular unit the student is expected to acquire the following skills: (i) knowledge about modern computer architectures and tradeoffs that must be considered during the design of a computer system; (ii) programming using Assembly languages; (iii) proficiency in C programming by fully understanding the interaction between software and hardware.
Globally, the students should be able of developing and acquiring analysis and synthesis competencies, problem solving techniques, capacity to develop teamwork, analyzing problems under different perspectives and propose new solutions, understanding other people’s language, autonomous learning, adaptability to new situations and practical adaptation of theoretical knowledge.
Module 1: Introduction to Computer Architecture
- CPU organization (datapath and control unit)
- Parallel execution using Pipelining
- Memory Hierarchy
- Polling and interrupts (if time available)
Module 2: Assembly for MIPS
- Basic arithmetic instructions
- Reading and writing in the memory
- Mechnisms for controlling the execution flow
- Instruction codification
- Numbers and floating-point representation
- Making an executable (compiler, assembler, linker, etc.)
Module 3: C Language and Hardware (if time available)
- C Language (revision of basic concepts)
- Pointers and memory addressing
- Memory zones: code segment, static memory, stack, heap and dynamic allocation
- Management of dynamic memory
I/O ports and hardware programming
Gabriel Falcão Paiva Fernandes
Laboratory work or Field work: 25.0%
1. Slides das Aulas / Slides from the Theoretical Courses
2. D.A. Patterson and J. L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 4th edition, Morgan Kaufmann.
3. B. W. Kernighan and D. M. Ritchie. The C Programming Language, 2nd edition, Prentice Hall.