-
Apresentação
Apresentação
Os objectivos desta UC são: Ensinar aos alunos competências que lhes permitam, no papel de “software developer”, delegar de forma responsável partes do trabalho de desenvolvimento de software em LLMs e outras ferramentas de IA Generativa. Exemplos: requisitos, funções / classes pequenas, eventualmente testes, etc. Desenvolver o pensamento crítico face a estas novas ferramentas e outras do mesmo género (avaliar, questionar os resultados, comparar, tirar conclusões, etc.) Desenvolver competências de comunicação clara e não ambígua (p.e. dar exemplos, contextualizar, etc.) Promover uso ético e responsável no uso destas ferramentas.
-
Disciplina do curso
Disciplina do curso
-
Grau | Semestres | ECTS
Grau | Semestres | ECTS
Licenciado | Semestral | 4
-
Ano | Natureza | Lingua
Ano | Natureza | Lingua
2 | Obrigatório | Português
-
Código
Código
ULHT260-19082
-
Pré-requisitos e co-requisitos
Pré-requisitos e co-requisitos
Não aplicável
-
Estágio Profissional
Estágio Profissional
Não
-
Conteúdos Programáticos
Conteúdos Programáticos
Literacia de IA Generativa Introdução aos Large Language Models Ética e Direitos de Autor Implicações éticas do uso dos LLMs (ética, propriedade intelectual, segurança, …) Técnicas de melhoria de soluções dos LLMs: fine tunning, RAG, prompt engineering Leitura e análise sistemática de código Debugging com recurso ao debugger do IntelliJ Pensamento Crítico e Pensamento Céptico Introdução aos 2 tipos de pensamento Diferenças chave entre os 2 tipos de pensamento A importância dos 2 tipos de pensamento na era dos LLMs Decomposição de problemas e modularização Testes de Software Tipos de testes (e.g., manuais, automaticos, integração, unitários, etc) Testes Unitários com JUnit Test Driven Development (TDD) Introdução à Revisão/Verificação de Código (Code Review) Exploração de Código Existente com base em LLMs Integração de LLMs em software via API Retrieval Augmented Generation
-
Objetivos
Objetivos
- Conhecer e compreender os funcionamentos base dos Large Language Models, as suas características, limitações, e afins - Code reading: leitura e interpretação de programas de forma sistemática - Debugging: recorrendo ao debugger do IntelliJ - Unit Testing: recorrendo ao JUnit - Exploração e documentação de de código existente usando LLMs - Pensamento crítico e pensamento céptico - Code Review: análise crítica de código - Técnicas de "Prompt engineering"
-
Metodologias de ensino e avaliação
Metodologias de ensino e avaliação
Uso de "Custom GPTs" configurados para dar erros que os alunos têm de encontrar no código. Interacção guiada com LLMs (i.e. ChatGPT, etc). Apresentação de casos de uso reais nos quais os LLMs geraram problemas.
-
Bibliografia principal
Bibliografia principal
Vladimir Khorikov – Unit Testing: Principles, Practices, and Patterns. 2.ª edição. Shelter Island, NY : Manning Publications, 2020. 1 volume (xx + 300 p.) : il. ISBN 9781617296277. Roy Osherove – The Art of Unit Testing: With Examples in .NET. 2.ª edição. Shelter Island, NY : Manning Publications, 2013. 1 volume (xx + 320 p.) : il. ISBN 9781617290893.
-
Horário de Atendimento
Horário de Atendimento
-
Mobilidade
Mobilidade
Não