Teaching
List of subjects in which João Luzio has been involved or had some degree of responsibility while in a Teaching Assistant position.
Awarded with the 2022/23 Outstanding Teaching Diploma
Department of Electrical and Computer Engineering (DEEC)
Instituto Superior Técnico (IST)
Second Semester, 2023/2024
Shift Types: Laboratory
Program
Introduction to autonomous systems: mobile robots, mobile and static sensor networks. Uncertainty in robotics.
Probabilistic representation of uncertainty: probabilistic models of observation and action. Bayesian inference. Bayes filter and its particular cases.
Bayesian localization.
Probabilistic occupancy grid mapping.
Simultaneous localization and mapping (SLAM).
Task planning: classical planning; planning under uncertainty: Markov decision processes (MDP). Reinforcement learning.
Plan representation and its execution coordination. Performance analysis.
Cooperative systems: cooperative localization and tracking of objects. Sensor integration: distributed sensor fusion methods. Cooperative task assignment, planning, and coordination.
Functional, software, and hardware architectures.
Objectives
Fundamental concepts involved in systems composed of diverse physical agents are covered, with diverse autonomy degrees (sensors, processors, actuators, robots) spatially distributed. Fundamental concepts and methods for self-localization under uncertainty on the observation and motion models are described. Methods for integrating the information from multiple sensors are presented, for positioning and for representing the world map where the sensors are situated, as well as methods for problem solving in cooperative systems, including cooperative perception, and task assignment, planning, and coordination. Fundamental concepts on functional, software, and hardware architectures concludes the course.
Second Semester, 2023/2024
Shift Types: Laboratory
Program
During the course the following topics will be addressed:
Introduction to real-time distributed control systems: definitions, architectures and types. Hardware for control, computation, and communications in real-time distributed control systems.
The C++ programming language. Programming microcontrollers with computational and memory constraints.
Introduction to computer-controlled systems. Feedforward and Feedback controllers. PID controllers, anti-windup, and velocity algorithms. Discretization of continuous-time controllers.
Communications for real-time control. Local control networks. Examples of real-time networks in control and automation, e.g. the CAN BUS.
Programming multitask and concurrent systems in real time.
Formulation of optimal control problems.
Some coordination and optimization algorithms in Distributed Control Systems: e.g. feedforward from accessible disturbances and the consensus algorithm.
Objectives
The purpose of this course is to introduce the concepts and tools needed for the design, analysis, and implementation of real-time control systems in distributed environments, namely:
The different components, architectures, and types of distributed control systems
Ways of modeling and formulating control problems in a distributed paradigm
Tools to implement distributed real-time control system solutions based on PCs and microcontrollers using the C++ programming language.
The gained knowledge will be developed through the execution of a practical project on a real-time distributed control system, where the students have to assemble the control network devices, model the system, formulate the control objectives, develop controllers, distribute computation among the different nodes, coordinate the communications between nodes, plan experiments to compare different control approaches, and acquire data to report results.
Second Semester, 2022/2023
Shift Types: Laboratory
Program
Historical evolution of computing systems.
Instruction Set Architectures: operands and operation types; memory map; peripherals interface; handling of interruptions and exceptions.
Processors' operation: datapath; control structures; single-cycle and pipelined architectures.
Memory hierarchy: structure and operation of cache memories; hierarchical cache systems; physical and virtual addressing and translation.
Advances in computer architectures.
Objectives
Identify the fundamental computer architecture components and their roles.
Identify the main processor's components and their role.
Identify the different instruction types and the required mechanisms for their execution (at an introductory-level).
Understand how a program, written in a high-level language, is executed, including the role of the compiler, assembler, and loader.
Write simple programs in Assembly language.
Understand the underlying principals of interruptions/exceptions and the interface with processor peripherals.
Understand the importance of a hierarchical memory subsystem and its role in the performance of applications.
Identify the advantages and drawbacks stemming from the evolution of computers with respect to the original architecture.
Second Semester, 2022/2023
Shift Types: Laboratory
Program
Basic notions: Operating systems;
Programming developing cycle: Algorithm, compilation and debugging;
Computer programming language: Lexicon,Syntax and Semantic; Basic programming concepts: Structure of a computer program; Basic data types, constants, variables, operators and expressions; Input and output functions;
Flow Control: Decision:the if instruction.
Repetition/Loops: The while, do..while, and for instructions.
Selection: the switch instruction.
Structured programming: Functions. Passing data to and from functions;
Scope: Local and global variables; Compiling a program with several modules (files); Using the debugger.
Structuring data: Arrays (one dimension and multidimensional), Sorting and searching, Strings Data structures, enumerated types.
Text Files: Functions to handle data in text files; Basic notion of binary file.
Notion of linked lists: Dynamic and static vectors; Linked list, FIFO, LILO;Creating, searching, inserting and deleting nodes; Rings.
Objectives
The Programming course aims to provide students with the basics of procedural programming in high level languages. The students are expected to acquire the indispensable concepts for algorithmic problem solving, with special emphasis on those that usually arise in the area of Engineering, data abstraction and structured programming.
First Semester, 2022/2023
Shift Types: Laboratory and Problems
Program
Binary, octal and hexadecimal number systems, arithmetic operations, decimal and alphanumeric codes. Logic circuits: binary logic and gates, Boolean algebra, logic functions, standard forms, incompletely specified functions, algebraic and map minimization, circuits with NAND and NOR gates. Elementary technology elements: logic families, tri-state gates, propagation delays. Combinational circuits: encoders, decoders, multiplexers, demultiplexers, comparators, adders and subtractors. Sequential circuits: latches and flip-flops, timing analysis and timing synchronization. Registers and Counters: registers, shift registers, counters, counter interconnection and expansion. Synchronous sequential circuits: Mealy and Moore models, state diagrams and state tables, state encoding, classical synthesis, alternative synthesis methods, state minimization. Memories: RAM, ROM and PROM.
Objectives
Use binary number systems and binary arithmetic.
Derive, manipulate and minimize boolean functions.
Implement boolean functions with circuits with logic gates.
Understand the operation of the fundamental building blocks of combinational circuits.
Understand the operation of basic memory elements, and work with registers and counters.
Specify and synthesize synchronous sequential circuits.
Understand basic timing issues, including clocking, timing constraints, and propagation delays.
Design low-complexity digital systems with both combinational and sequential components.