Introdução ao desenvolvimento de software e programação de computadores.
Ambientes do Anaconda. O Jupyter Notebook.
Python: variáveis, tipos de dados básicos e operadores.
Estruturas de controlo: condições e ciclos. Funções.
Bibliotecas: Random, Math e Numpy.
Listas, Tuplos, Dicionários e Conjuntos.
Recorrência. Verificação e correção de erros.
Extração de dados de ficheiros CSV e Excel.
Introdução ao Pandas para análise de dados. O conceito de DataFrame.
Exemplos de aplicação.
Análise de Sistemas de Informação
Introdução à análise de sistemas de informação de gestão.
Apresentação do UML. Visão Geral dos Diagramas.
Identificação de requisitos.
Use Cases – Atores, casos de uso, relacionamentos e narrativas.
O Modelo Relacional. Diagramas de Classes.
Diagramas de Atividade e de Sequência.
Apresentação de Diagramas de Estado e de Componentes.
Gestão de Bases de Dados
Fundamentos de Bases de Dados e Sistemas de Gestão de Bases de Dados.
Modelação de Dados – Diagramas ER e conversão para modelo relacional.
Linguagem SQL. Comandos fundamentais.
Manipulação e atualização de dados.
Interrogação de dados. Criação de Views.
Regras de integridade e restrições.
Normalização.
Gestão de Utilizadores e Permissões.
Backups e Recuperação.
BLOCO 2
Programação Orientada a Objetos
Introdução à programação orientada a objetos.
Definição de classes e criação de objetos em Python.
Atributos e métodos: instância versus classe.
Métodos especiais e funções avançadas.
Encapsulamento: atributos públicos, protegidos e privados.
Herança entre classes. Polimorfismo.
Utilização de GUI.
Exemplos de aplicação.
Desenvolvimento Web
Introdução à Web: funcionamento da web, HTTP, navegadores e servidores.
Estrutura de páginas, tags principais, formulários e links.
Estilização de páginas, cores e layouts.
Variáveis, funções e eventos.
Validação de formulários e efeitos dinâmicos.
Desenvolvimento uma aplicação web.
Programação Mobile
Introdução ao desenvolvimento de aplicações para dispositivos móveis.
Características, funcionalidades e limitações dos dispositivos móveis.
Modelo de programação e desenho de aplicações para dispositivos móveis.
Armazenamento persistente de dados no dispositivo móvel.
Plataformas de desenvolvimento.
Planeamento e conceção de projeto de desenvolvimento de aplicações para dispositivos móveis.
Ciclo de produção: desenvolvimento, instalação, monitoração, diagnóstico e depuração de erros.
Aspetos de realização e boas práticas considerando as especificidades das plataformas móveis.
BLOCO 3
Programação para Data Analytics
Importação de dados em formatos CSV, Excel e texto.
Visualização de dados. Representações gráficas.
Limpeza, Transformação e Integração de Dados: tratamento de dados ausentes, deteção e correção de outliers, erros nos dados e duplicações; codificação de dados, estandardização e normalização de dados.
Análise univariada e multivariada de dados.
Análise exploratória de dados: correlação e associação entre variáveis numéricas; correlação e associação entre variáveis categóricas.
Análise de dados temporais. Estatística descritiva de dados temporais, modelos de avaliação de tendências, regressões lineares.
Introdução ao Machine Learning: regressão, classificação, clustering e redes neuronais.
Estudo de casos empresariais. Elaboração e discussão de projetos com dados reais.
Programação com Código Seguro
Introdução à programação segura, Fail safe, Separação de privilégios, privilégio mínimo, Open design, multi layer security, TCB.
Princípios de criptografia em OpenSSL: assinaturas digitais, hashes, simétrica e assimétria.
Buffer overflows, format strings, injeção de comandos, race conditions (monitores, semáforos), Segurança de processos e validação de memória.
Vulnerabilidades em programação web: PHP, JAVA, .NET: SQL Injection, XSS, CSRF, Deserialização, XXE, Autenticação e autorização, Upload de ficheiros.
OWASP top 10: Vulnerabilidades comuns em aplicações web.
Gestão de sessões web: session fixation, session hijacking.
Validação de input e codificação de output.
Projeto de Desenvolvimento de Software
Introdução ao desenvolvimento de software de gestão: ciclo de vida e métodos.