UFCDs
Conteúdos Abordados ao Longo da Formação.


5425
Projeto de Tecnologias e Programação de Sistemas de Informação
Esta UFCD é destinada ao desenvolvimento de um projeto de conclusão de curso para a aquisição da Qualificação de Programador de Informática, Nível 4 no Catálogo Nacional de Qualificações.
O Projeto por mim escolhido é um projeto de gestão de frota de automóveis a fim de proporcionar o utilizador uma interface unificada para o acompanhamento de veículos e seus eventos de serviços, inspeções ou similares intervenções.
O Projeto foi denominado Auto Service Manager e consiste em um WebApp desenvolvido em ASP.NET MVC e na Linguagem C#.
A aplicação utiliza tecnologias e metodologias como as seguintes:
-
MVC Pattern
-
.NET Framework 6.0.12 (LTS)
-
Entity Framework Core
-
MS SQL Server
-
N-Tier Architecture
-
Repositórios
-
Localização e Globalização (multilingue/multicultural)
-
Identidade
-
Autenticação e Autorização
-
Nivels distintos de Acesso
-
ViewModels
-
Bootstrap
O projeto teve Auxilio e supervisão do formador Pedro Soares e foi submetido para a avaliação do mesmo.
O desenvolvimento do projeto continuará mesmo após a avaliação de forma a poder ser usado como uma ferramenta funcional tal como servindo de "canvas" para a exploração de diferentes tecnologias, estas que inicialmente visiono serem Java, Docker, MySQL, Self-Hosting com Debian ou sistemas baseados em RHEL além da implementação de novas funcionalidades.
0814
Programação em Linguagem SQL Avançada
Consolidação dos conceitos abordados na UFCD 10788 relacionados à sintaxe e uso da linguagem SQL e Bases de Dados Relacionais.
Otimização e boas praticas na realização de ações CRUD, aplicação do conceito de vistas e foco na performance na realização de Queries.
Exploração de ferramentas relacionadas ao motor de base de dados MySQL, o pacote de aplicações de gestão disponibilizado e mantido pela Oracle e a conexão e manipulação de entidades exemplificada com a linguagem PHP.


3933
Administração de Bases de Dados Para Programadores
Esta UFCD foi designada à consolidação dos conhecimentos adquiridos na UFCD 10792 direcionada ao desenvolvimento em ASP.NET tal como auxílio preliminar à UFCD 5425 destinada ao projeto de conclusão de curso.
De Inicio abordamos de forma um pouco mais abrangente as funcionalidades de Autenticação e Autorização em ASP.NET MVC WebApps tal como Alojamento e Publicação das mesmas em servidores localhost e plataformas de WebHosting de forma a realizar o Deployment de tais aplicações.
Posteriormente começamos a trabalhar no projeto que será apresentado na UFCD 5425 de forma a poder ter maior período de supervisão e auxílio do formador e desenvolvimento e aprimoramento do primeiro.
10792
Programação ASP.NET Core MVC
Introdução ao desenvolvimento de aplicações web em ASP.NET e ao MVC Design Pattern e aplicação dos conceitos explorados na UFCD anterior referentes à linguagem C#, ao Visual Studio IDE e ao Entity Framework no intuito de implementar WebApps multicamadas.
Explorar o Padrão de Design MVC (Model-View-Controller), e seu uso de múltiplas camadas para a separação de dados (Model), apresentação (View) e lógica (Controller) a fim de proporcionar melhor organização, escalabilidade e segurança em aplicações de nivel empresarial.
Exploramos também conceitos relacionados à MVC, aplicados de forma a otimizar performance, segurança e/ou funcionalidade, tal como o uso da Arquitetura N-Tier, Repositórios e ViewModels.
Integração com bases de dados via Entity Framework Code-First aplicados a camada de Modelos em MVC, implementação de Cardinalidade e a Migração dos modelos de dados, neste caso em específico, direcionado a uma base de dados MS SQL Server e customização da parte de apresentação por via do Web Framework Bootstrap, Html, CSS e componentes de JavaScript.


3935
Programação em C#
Desenvolvimento em C# e DotNet Framework via o ambiente Visual Studio.
Explorar sintaxe e características da linguagem C# como a natureza Strongly Typed, Orientada à Objetos e compilada Just-In-Time. Tal como as palavras reservadas using e namespace, seus tipos de dados nativos, garbage-collection e sua inspiração em linguagens como Java e C++.
Desenvolvimento de aplicações em Windows Forms e Web Forms, Orientação à Eventos, recursos integrados ao DotNet Framework.
Conexão e gestão de bases de dados, Entity Framework Code-First e ações CRUD.
Exploramos também o Desnevolvimento de Apps Nativas com WPF (Windows Presentation Foundation) e UWP (Universal Windows Platform) , Ficheiros XAML e Integração com o pacote Office e ficheiros Excel e Word.
0815
Metodologias de Programação em Sistemas Distribuídos
Esta UFCD foi re-designada ao reforço dos conteúdos anteriormente abordados nas UFCDs referentes às linguagens C & C++.
Por meio de exercicios consolidamos os conehcimentos no desenvolvimento de código funcional e otimizado e revimos conceitos mais sofisticados relacionados à arquitetura da propria linguaguem, e.g. o uso de ponteiros e alocação/libertação de memória além de explorar a malnipulação de ficheiros e estruturas de dados.


10795
Segurança no Desenvolvimento de Software
Foram exploradas praticas de desenvolvimento de código de forma a evitar vulnerabilidades, mitigar os riscos de ciberataques e consequentemente o comprometimento de dados, serviços e sistemas, de uma maneira geral.
Ao analisar e reconhecer as principais causas de ataques bem-sucedidos, voltamos nossos olhos para a estruturação do código e dos sistemas que o hospedam e como aplicar a eles segurança passiva a fim de evitar injeção de código SQL, quebras de autenticação e/ou elevação de privilégios.
Abordadas também foram boas praticas em relação a componentes e serviços integrados no código e sua manutenção em relação a patches de segurança e atualização de forma geral assim como fontes de informação e utilitários voltados ao auxílio ao programador.
10794
Programação Avançada - Python
Em continuidade à UFCD 10793, exploramos o desenvolvimento considerando boas praticas de programação, desenvolvimento de código dinâmico e as características de uma linguagem interpretada.
A otimização de código, Short Hands e o uso do equivalente operador ternário foram abordados assim como o uso de funções lambda, manipulação de strings e a aplicação de loops para manipulação de estruturas.
Foram, também, explorados de forma mais abrangente os conceitos de OOP anteriormente introduzidos assim como o uso de modificadores de acesso, herança e composição.
A abordagem para Web teve como meio Django, conexão à motores de bases de dados e APIs, analisando características do sistema de ficheiros da framework de modo a compreender o funcionamento da mesma.


10793
Fundamentos - Python
Introdução à sintaxe e características da linguagem, sua natureza interpretada, multi-paradigma e dinamicamente tipada e o “use case” em especificas áreas da indústria.
Exploramos a instalação e organização de ambientes de desenvolvimento e suas características como o ambiente virtual (venv) e sistema de ficheiros assim como ambientes específicos como PyCharm e Visual Studio Code e também o desenvolvimento diretamente via terminal.
Foram abordados tipos de dados nativos e estruturas de dados como listas, tuplas e dicionários assim como a importação de bibliotecas (e.g. Numpy e MatPlotLib) e/ou componentes específicos e a instalação de bibliotecas Não nativas via PIP Package Manager.
Ciclos For e While, Statements If e Match e Tratamento de exceções foram exemplificados na sintaxe especifica de Python considerando também o uso de else e finally.
Explorados, também, foram diferentes paradigmas aplicados a Python como programação procedimental e orientada à objetos.
10791
Desenvolvimento de Aplicações Web - JAVA
Em continuidade à UFCD 0816, abordamos de forma mais abrangente os conceitos de herança e polimorfismo tal como o uso de composição e interfaces.
Visto de forma introdutória o uso e sintaxe de linguagens voltadas à Frontend Development como JavaScript, CSS e Html e sua correlação com Java como linguagem de Backend.
Abordado também foi a conexão a bases de dados (JDBC) tal como a implementação de APIs.


10790
Projeto de Programação
Esta UFCD foi direcionada ao reforço aos conteúdos inicialmente associados à UFCD 0804 - Algoritmos.
Nas sessões realizadas exercitamos a construção de pseudo-códigos, fluxogramas e algoritmos em si a fim de solidificar os conhecimentos voltados à lógica aplicada vistos de forma introdutória na UFCD inicial.
10788
Fundamentos da Linguagem SQL
Introdução à linguagem SQL e à bases de dados relacionais.
Abordar o conceito de bases de dados relacionais (e.g. MySQL, SQLlite, MS SQL, etc.) e o contraste às não-relacionais (e.g. MongoDB, Cassandra, etc.) tendo em consideração diferentes Database Engines e seus Use-Cases.
Exploramos os conceitos de relação entre entidades, cardinalidade e obrigatoriedade assim como a sintaxe da linguagem e construção de Queries voltadas à implementação de ações CRUD (Create, Read, Update & Delete).


0816
Programação de Sistemas Distribuídos - JAVA
Este módulo baseou-se nos conceitos básicos e características da linguagem Java, tal como a Programação Orientada à Objetos (OOP), sintaxe, tipos de dados e tratamento de exceções. Também discutidos foram componentes incluídos na arquitetura da linguagem como:
-
Java Virtual Machine (JVM);
-
Java Runtime Environment (JRE);
-
Java Development Kit (JDK).
Foram abordados a criação de classes e objetos, o conceito de atributos e métodos, o uso de pacotes e encapsulamento, assim como diferentes modificadores de acesso (public, protected e private) e o conceito de construtores, getters e setters.
De forma introdutória, foram discutidos os conceitos de herança e polimorfismo assim como os conceitos de override e overload.
0811
Análise de sistemas
Abordagem das metodologias de análise de sistemas de informação com a finalidade e compreender a disposição e organização de dados de forma a serem armazenados, processados e distribuídos conforme a demanda.
Vimos características de diferentes tipos de diagramas e suas aplicações praticas, como:
Estruturação de diagramas de Modelo Físico, baseada fundamentalmente em um modelo de tabelas e relação entre dados partilhados, estes são da fácil e rápida compreensão devido a natureza básica dos mesmos.
Diagrama de Fluxo de Dados, com ênfase nos processos e na comunicação entre os mesmos de forma direcional com simbologias simples e efetivas e de fácil construção e compreensão.
Diagrama Entidade-Associação (Entidade Relacionamento), com uma correlação mais estreita com o desenvolvimento de uma base de dados, permitindo uma visualização mais completa das entidades, atributos e relacionamentos.
Conceitos de Chaves primárias, candidatas e estrangeiras assim como diferentes cardinalidades (1:1, 1:N, N:N).
Abordamos também, de forma introdutória, os princípios da linguagem SQL a fim de exercitar os conceitos discutidos, com a utilização de Ubuntu Server e MariaDB, ao realizar “Queries” para o acesso aos dados.
_database_schema_svg.png)

0810
Programação em C/C++ Avançada
Em subsequência à UFCD de fundamentos, exploramos conceitos mais elaborados e aplicações praticas dos mesmos.
Como o uso de “libraries”, sua inclusão e invocação. O Conceito de estruturas, seus tipos, sua declaração e instanciação, leitura e escrita assim como outras operações de manipulação das mesmas.
Abordamos o uso de apontadores, sua declaração e atribuição de valores, uso dos operadores ‘*’ e ‘&’, passagem de dados por referência, sua utilização em operações e sua corelação com estruturas (strings, arrays, vetores, matrizes). Tal como os conceitos de Alocação e Libertação de memória com funções como “malloc” e “free”
Por fim a manipulação de ficheiros com abertura e fecho de ficheiros, seus variados modos de abertura (r, w, a , rb, wb, ab, r+, w+, a+, rb+, wb+, ab+) para escrita, leitura e adição de dados, considerando exceções e eventuais erros como permissões e a existência de tais ficheiros.
0809
Programação em C/C++ Fundamentos
Introdução ás linguagens de programação C e C++, suas sintaxes, características, diferenças e similaridades bem como a estruturação de um programa e caracteristicas da função main.
Compreensão dos conceitos de variáveis e constantes e a associação com os tipos de dados nativos (int, float, double e char) e conversão dos mesmos (cast), tal como a estruturação de cadeias de carateres e outras estruturas de dados.
Estruturação de funções (argumentos, variáveis locais e recursão) tal como funções nativas como:
-
printf - Formatação e Sequências de escape
-
scanf – formatação, modificação e operador &
-
strlen e sizeof
Como também:
-
Expressões aritméticas.
-
operadores
-
atribuição (+=, -=, *=, /= e %=)
-
relacionais (==, != ,>, <, >=, <=).
-
-
Ciclos
-
While
-
For
-
Do While
-
-
Statements
-
if
-
if else
-
switch
-
-
Instruções
-
Break
-
contine
-
go to
-


0806
Princípios Metodológicos de Programação
Introdução às metodologias fundamentais ao desenvolvimento de código.
-
Entrada e saída de dados
-
Funções e Procedimentos
-
Loops e Statements
-
Sequencia de Instruções
-
Organização e Agrupamento
Abordamos também o Manifesto AGILE, Sua origem, ideologia e aplicação prática em métodos como Scrum e Kanban.
0805
Estruturas de Dados
Esta Ufcd focou na introdução às diferentes estruturas de dados e sua construção no âmbito da linguagem C++.
-
Listas
-
Matrizes (Uni e Multidimensionais)
-
Arvores Binárias
-
Ordenação (Selection, Insertion, Quick, Bubble)
-
Acesso, inserção e supressão de elementos
-
Filas e Pilhas (FIFO & LIFO)
-
Ponteiros


0804
Algoritmos
Introdução e contexto pratico de Pseudocódigos e Fluxogramas e a utilização de VisuAlg como recurso para a aplicação de conceitos como:
-
Sintaxe
-
Constantes e Variáveis
-
Condições e regras de inicialização e alteração
-
Entrada e saída de dados
-
Expressões aritméticas
-
Validação de dados
-
Estruturas lógicas
-
Estrutura sequencial, alternativa e repetitiva
-
Validação de dados
-
Contadores
-
Construção e chamada de procedimentos e funções
0802
Processamento Computacional
Abordagem sobre o funcionamento lógico de um computador, na qual foram descritos seus componentes e suas correlações no âmbito do processamento de informação.
Descrição da estrutura do Processador e suas unidades de calculo e controlo, tal como células de memória e endereçamento.
Bases binaria, octal, decimal e hexadecimal tal como seus valores em bits.
Abordado, também, foi o contexto histórico da logica computacional desde o Ábaco, a origem de computadores à válvulas e a invenção e implementação de transístores até a utilização de circuitos integrados.


0801
Administração De Redes Locais
Variados tipos de Backups (Completos, Incrementais, Diferenciais, Delta...), suas aplicações e o contexto na qual seriam viáveis em relação a custos, desempenho e disponibilidade. Além de estratégias, localização e tipos de tecnologias empregadas e.g. discos internos, externos, NAS, Cloud, etc.
O conceito de Fault-Tolerance foi abordado com praticas de Redundância (de Software, Hardware, Informação e Tempo) como por exemplo sistemas RAID que utilizam múltiplos HDDs e guardam informações de forma duplicada, com métodos específicos a cada tipo (1, 5,10, etc.), tendo em mente a probabilidade de falhas e a vida útil destes mesmos discos e de forma a recuperar a informação evitando perdas de dados sensíveis.
A redundância pode ser aplicada ainda à uma ampla variedade de elementos desde de componentes como CPUs até ligações de redes ou fornecimento de serviços. O conceito fundamental é a manutenção da qualidade e fiabilidade dos processos em decorrência.
Com a disseminação e popularização da Internet, uma outra faceta de Fault-Tolerance é o combate e prevenção de ataques de segurança (DDoS, Phishing, Eavesdroping, etc.). Monitorização de tráfego e medidas de autenticação e verificação passaram a ser cruciais para a estabilidade de operações.
Auditorias são formas de garantir o bom funcionamento de serviços ao visar confirmar a implementação e eficiência de controlos internos tal como os vistos acima.
0800
Serviços Adicionais de Redes
Exploramos Ferramentas como o Cisco Packet Tracer para simular a implementação de redes empresariais e seus serviços associados, como por exemplo:
-
Configuração de Routers e Switches;
-
Comunicação entre maquinas;
-
Relação entre Routers Terminais e routers ISP;
-
Comportamento e Trajetoria dos "packets";
-
Port Fowarding de Web (80 & 443) e DNS Servers (53);
-
Configuração de NAT & DHCP;
-
Endereçamento de IPs
-
Entre outras.
Por Fim, Realizamos uma atividade de Avaliação que consistia em aplicar tais conhecimentos para implementar uma simulação de uma rede com duas empresas e uma rede residencial conectadas via uma rede de Internet com Redundância de Routers.


0799
Sistemas De Rede Local
Sistemas operativos associados ao uso em redes informáticas.
Diferenças entre tipologias Peer-to-Peer e Cliente-Servidor.
Tipos de servidores e serviços associados (Arquivos, Banco de Dados, Virtualização, Etc.), protocolos TCP/IP e Modelo OSI, hardware associado com serviços (UPSs, Servidores Com Hot Swapping de HDDs, Controladores RAID, Etc.), variedade de OSs utilizados(UNIX, Linux, BSD, Etc.)
Abordamos também o aspecto da segurança relacionada a esses sistemas (Controle de Acesso e Trafego, Autenticação, Logs de Eventos, Etc.), niveis de permisões (Users, Admins, SUDO, Etc.) tal como instalação e configuração de Sistemas Operativos, migração entra diferentes Sistemas e Multi-Boot.
0798
Utilitários
Programas e Ferramentas para Auxilio à Produtividade.
Configuração e instalação de Suites de Segurança, Gestores de disco, Conversores de Dados, Browsers, Terminais, Etc.
Abordamos Também a Relação Cliente Servidor no âmbito em questão como na Transferência de ficheiros, Acesso a bases de dados, monitorização de tráfego de redes e Software de Virtualização.
O intuito era termos recursos para realização de tarefas de forma fiavel e eficiente tendo em consideração os tipos de licenças associadas a tais utilitários e seus direitos de utilização.


0797
Sistemas Operativos – Tipologias
Nesta UFCD abordamos os diferentes tipos de Sistemas Operativos, suas caracteristicas, métodos de instalação e correlação com os programas neles instalados.
Além de uma instalação Tradicional (BareMetal), vimos de Forma teórica e prática Formas de Virtualização e a Interação entre Diferentes Maquinas Virtuais dentro de um Networks Virtuais.
Sistemas Linux foram parte integral da Unidade de Formação e seu uso em servidores, para alojamento de Bases de Dados (MariaDB), tal como no "lado do cliente".
0771
Conexões de Rede
Noções básicas de tipologias de redes e suas ligações, configurações e funcionamento.
Conceitos de Comunicação como Broadcast, Multicast e Unicast tal qual Tipologias de redes (Bus, Estrela, Anel, Mesh, etc) foram abordados nesta UFCD.
Vimos os Diferentes tipos de Componentes de Hardware necessários ou potencialmente incluidos em uma Rede. Routers, Switches, Hubs e Access Points são alguns exemplos.
Tipologias de Cabos e Conectores Foram Também Abordados, as diferentes categorias de Cabos Ethernet (Cat5, CAt5e, CAt6, Cat7, etc) tal como tipos de proteção dos mesmos (UTP, STP, FTP, F/UTP, F/FTP, S/FTP, etc), tal como Cabos de Fibra Óptica (Multimodo e Monomodo) e seu conectores (SC, LC, ST e FC).


0770
Dispositivos e periféricos
Instalação e configuração de dispositivos para que interajam com o computador.
O objetivo é criar uma base teórica de como proceder com ditas configurações tal como detetar problemas e possíveis soluções caso necessário.
0769
Arquitetura Interna do Computador
Neste Módulo de Formação abordamos de forma introdutória componentes de hardware e suas funcionalidades bem como a correlação entre os mesmos.


7846
Informática - Noções Básicas
Abranger o uso de um computador à ótica do utilizador. Explorar ferramentas, componentes, utilidades e praticas a visar produtividade.