Disciplina: Programação Avançada

Área Científica:

Informática

HORAS CONTACTO:

80 Horas

NÚMERO DE ECTS:

7,5 ECTS

IDIOMA:

Português

Objetivos Gerais:

1 - Complementar os conhecimentos adquiridos nas disciplinas de introdução à programação
2 - Programação Paralela: através do estudo de multithreading, concorrência e escalonamento de recursos.
2.1 - Dado um problema escolher o método adequado para a divisão em sub problemas
2.2 - Implementação de soluções paralelas utilizando threads, thread queues, semáforos e comunicação
3 - Segurança: Com o estudo de técnicas de segurança, como encriptação, utilização de chaves de acesso e a utilização de frameworks terceiras para esse efeito.
3.1 - Escolher e implementar a melhor solução de segurança para cada problema.
3.2 - Compreender o custo computacional de diversos métodos de segurança.
4 - Introdução à computação gráfica: Através do estudo de técnicas de médio e baixo nível usadas para a apresentação de gráficos.
4.1 - Implementar animações gráficas de baixo nível
4.2 - Compreender a pipeline de processamento gráfico num sistema
4.3 - Compreender o sistema de coordenadas, transformações e renderização de um sistema computacional

Conteúdos / Programa:

1 - 1. Introdução a computação paralela, exemplos e tecnologias
2 - 2. Arquitetura para o desenvolvimento de soluções paralelas/concorrentes
3 - 3. Threads, processos, thread queues, semáforos e sincronização
4 - 4. Desenvolvimento paralelo/concorrente em JavaScript
5 - 5. Segurança de informação
6 - 6. Encriptação e autenticação
7 - 7. Introdução à computação gráfica
8 - 8. Transformações geométricas
9 - 9. Pipeline de processamento
10 - 10. Desenvolvimento gráfico em JavaScript (webGL e Babylon)

Bibliografia / Fontes de Informação:

E. Angel, D. Shreiner , 2015 , Interactive Computer Graphics: A Top-Down Approach with WebGL , Pearson Education
W. Stallings, L. Brown , 2018 , Computer Security: Principles and Practice , Peason
R. Seacord , Secure coding and C++ ,
T. Rauber , 2010 , Parallel Programming for Multicore and Cluster Systems , Springer

Métodos e Critérios de Avaliação:

Tipo de Classificação: Quantitativa (0-20)

Metodologia de Avaliação:
Aulas teóricas em que são apresentados os conceitos mais gerais das tecnologias parte do programa da disciplina. Estímulo à participação dos alunos com questões em aberto. Utilização de pequenos exemplos demonstrando os conceitos abordados na disciplina. Aulas teórico práticas em que cada conceito é demonstrado com um ou mais exercícios práticos. Aulas de discussão em que os alunos apresentam e discutem os projetos previstos nos critérios de avaliação da disciplina Critérios de avaliação 1. Duas Frequências a resolver individualmente (40%); 2. Três projetos realizados em grupos de 4 elementos: 3. 1 projeto focado em computação paralela (20%) 4. 1 projeto focado em segurança (20%) 5. 1 projeto focado em computação gráfica (20%)