Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Área científica / Scientific area
Ciências e Tecnologias da Programação
Departamento / Department
Departamento de Ciências e Tecnologias da Informação
Ano letivo / Execution Year
2024/2025
Pré-requisitos / Pre-Requisites
Esta UC tem como precedência as seguintes UC: - Programação Orientada aos Objetos
Objetivos Gerais / Objectives
Atingir um nível de programação que permita desenvolver, em colaboração, aplicações multiparadigma interativas de média dimensão.
Objetivos de Aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes) / Learning outcomes
Ao completar com sucesso esta unidade curricular, o estudante estará apto a: OA1: entender os princípios da programação funcional; OA2: escrever programas puramente funcionais; OA3: diferienciar os benefícios das características do paradigma funcional comparativamente com outros paradigmas de programação; OA4: implementar aplicações multiparadigma, com uma componente interativa, de média dimensão; OA5: trabalhar em equipa.
Conteúdos Programáticos / Syllabus
Os conteúdos programáticos (CP) são: CP1: Introdução ao paradigma funcional em programação e aos seus conceitos fundamentais; CP2: Conceitos avançados de programação funcional (funções puras, funções de ordem superior, composições de funções, imutabilidade); CP3: Introdução às tecnologias essenciais de suporte à programação em equipa; CP4: Programação orientada a eventos; CP5: Padrões para interface do utilizador; CP6: Integração de programas multiparadigma;
Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular units content dovetails with the specified learning outcomes
Com a introdução aos conceitos fundamentais da programação funcional, os alunos desenvolvem uma compreensão sólida dos princípios fundamentais da programação funcional. O desenvolvimento de programas puramente funcionais robustos é suportado pelos conceitos avançados (funções puras, funções de ordem superior, composições de funções, imutabilidade) de programação funcional. Estes conceitos permintem os estudantes diferienciarem os benefícios do paradigma funcional comparativamente com outros paradigmas de programação. A introdução à programação orientada aos eventos, aos padrões para interface do utilizador e a integração de programas multiparadigma permitem a implementação de aplicações multiparadigma com componente interativa. As tecnologias essenciais de suporte à programação em equipa aplicadas durante a implementação do projeto desenvolvido em grupo facilitam o trabalho em equipa.
Avaliação / Assessment
Avaliação ao longo do semestre com Prova Escrita individual (PE) realizada durante o período de avaliação e, Projeto (PRJ) realizado em trabalho de grupo com 2 entregas (durante o período letivo), discussão e aferição individual do PRJ. As classificações possíveis na aferição individual são A, B ou C, definindo a nota do PRJ (np): A - np = à classif. do PRJ B - np = 80% da classif. do PRJ C - reprov. à UC Classificação final: 40%PE + 60%np Nota mínima 9.5 valores em ambos PE e np Não existe avaliação por exame Assiduidade não é usada cm critério de avaliação ou reprovação Estudantes sem nota mínima no projeto (ou que não o realizem) não têm acesso à prova escrita, ficando automaticamente reprovados à UC. Em caso de reprovação na 1ª época, o aluno pode voltar a realizar a prova escrita na 2ª época (e na época especial se a ela tiver acesso) mantendo a nota do Projeto. Não é possível melhorar a nota do projeto entre as avaliações de 1ª e de 2ª época. A obrigatoriedade de nota mínima no projeto também se aplica à Época Especial. Caso o estudante já tenha realizado e obtido nota mínima no projeto durante o período normal de lecionação da UC, o mesmo será considerado para a Época Especial. Caso ainda não tenha realizado o projeto, deverá entregá-lo até à data definida e realizar a discussão.
Metodologias de Ensino / Teaching methodologies
Aulas teórico-práticas e em laboratório com breves exposições teóricas seguidas de exercícios. Espera-se 5h/sem de trab autónomo para completar os exercícios das aulas e realizar o projeto. Serão utilizadas as seguintes metodologias de ensino-aprendizagem (MEA): MEA1: Expositivas, para apresentação dos conceitos teóricos; MEA2: Ilustrativas, para exemplificação dos conceitos teóricos com resolução prática de exercícios; MEA3: Orientadoras, com acompanhamento ao longo do desenvolvimento do projeto.
Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes
As competências cognitivas são desenvolvidas através da exposição participativa e da resolução de exercícios. As competências práticas e de trabalho em equipa são desenvolvidas nos trabalhos em grupo supervisionados. Esta disciplina ministra conhecimentos em que a prática guiada é fundamental. Daí que o intercalar de exposição com prática (sensivelmente em módulos de 1h30 teórico-prática e 3h de laboratório) é, no nosso ponto de vista, a metodologia mais adequada. É também pela mesma razão que o projeto é fundamental para a avaliação. MEA1, MEA2, MEA3 -> OA1 MEA1, MEA2, MEA3 -> OA2 MEA1, MEA2, MEA3 -> OA3 MEA1, MEA2, MEA3 -> OA4 MEA3 -> OA5
Observações / Observations
.
Bibliografia Principal / Main Bibliography
Backfield, J. (2014). Becoming Functional: Steps for Transforming Into a Functional Programmer. ISBN 978-1449368173. Chiusano, P., & Bjarnason, R. (2014). Functional Programming in Scala. ISBN 978-1617290657. Wampler, D., & Payne, A. (2015). Programming Scala: Scalability = Functional Programming + Objects. ISBN 978-1491949856 Schildt, H. (2015). Introducing JavaFX 8 Programming. ISBN 978-0071842556. Tidwell, J., Brewer, C., & Valencia, A. (2020). Designing Interfaces: Patterns for Effective Interaction Design. ISBN 978-1492051961.
Bibliografia Secundária / Secondary Bibliography
Hutton, G. (2007). Programming in Haskell. ISBN 978-0521692694. Coplien, J. O. (1998). Multi-Paradigm Design for C++. ISBN 978-0201824674.
Data da última atualização / Last Update Date
2024-07-22