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
2021/2022
Pré-requisitos / Pre-Requisites
Esta UC tem como precedência as seguintes UC: - Introdução à Programação - Programação Orientada para Objetos Os tópicos programáticos a desenvolver nesta disciplina pressupõem um domínio da programação orientada para objetos em Java
Objetivos Gerais / Objectives
Aprender o paradigma da programação concorrente. Conseguir desenhar e implementar aplicações concorrentes de média escala. Conhecer os principais padrões de desenho de aplicações concorrentes. Aprender de uma forma introdutória os conceitos da programação distribuída bem como conseguir desenhar e implementar aplicações distribuídas simples.
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
Após a conclusão desta unidade curricular o aluno deverá ficar apto a: OA1. Saber programar usando o paradigma da programação por eventos. OA2. Adquirir competências básicas de programação gráfica em Java - Swing. OA3. Apreender a noção de processo ligeiro. OA4. Compreender os problemas de sincronização de processos ligeiros no acesso a recursos partilhados. OA5 Compreender os mecanismos de coordenação de processos bem como os seus principais problemas como Deadlock, Livelock e Starvation. OA6. Conhecer os principais padrões de coordenação de processos ligeiros. OA7. Conhecer as arquiteturas clássicas do paradigma de programação distribuída e algoritmos concorrentes e distribuídos.
Conteúdos Programáticos / Syllabus
CP1. Introdução. CP2. Programação gráfica por eventos em SWING. CP3. Noção de Processo Ligeiro. Ciclo de vida de um processo ligeiro. CP4. Sincronização, cadeados. CP5. Coordenação de processos ligeiros. CP6. Bloqueio explícito. Starvation e deadlock. CP7. Estudo de alguns dos problemas clássicos da programação concorrente. CP8. Pools de processos ligeiros. CP9. Programação em rede CP10. Arquiteturas distribuídas.
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
A relação entre os Conteúdos Programáticos e os Objetivos de Aprendizagem é a seguinte: OA1 e OA2 -> CP2 OA3 -> CP3 OA4 -> CP4 OA5 -> CP5, CP6 OA6 -> CP7, CP8 OA7 -> CP9, CP10
Avaliação / Assessment
As aulas estão organizadas em blocos teóricos e de exercícios. As teóricas caracterizam-se por blocos de exposição encadeados com exemplos e exercícios. Nas aulas de exercícios, os alunos devem resolver um conjunto de problemas. Adicionalmente espera-se dos alunos ~6 horas de trabalho semanal para completar os exercícios das aulas e realizar o projeto final. | É obrigatória a inscrição para as provas escritas. A avaliação é efectuado por um projeto e uma frequência. O projeto tem dois momentos de avaliação: uma entrega intercalar e uma oral numa das últimas semanas de aulas. As classificações possíveis no Projeto Individual são (A, B, C, D). A classificação obtida no projeto não tem peso na nota final, mas define um limite máximo para a mesma: A-max. 20 B-max. 16 C-max. 12 D-reprovação à UC Nota final é apenas dada pela classificação da frequência.
Metodologias de Ensino / Teaching methodologies
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
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 1:30 teórica e 3:00 prática) é, do nosso ponto de vista, a metodologia mais adequada. É também pela mesma razão que o trabalho prático é fundamental para a avaliação desta UC. O alinhamento entre cada instrumento de avaliação e os objectivos de aprendizagem definidos para a UC é realizado da seguinte forma: Trabalho prático: OA1, 2, 3, 4, 5 e 7. Teste teórico individual: OA2, 3, 4, 5, 6 e 7 O documento de Planeamento de Unidade Curricular (PUC), detalhado para cada aula, evidencia a relação entre os métodos pedagógicos de ensino (de acordo com a tipologia de aula) e os resultados de aprendizagem definidos anteriormente.
Observações / Observations
Bibliografia Principal / Main Bibliography
Introduction to Java Programming, Y. Daniel Liang, 2009 Pearson. Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R. Andrews, 1999 Addison Wesley Principles of Concurrent and Distributed Programming, M. Ben-Ari, 2006 Addison Wesley JAVA Threads, Third Edition, Scott Oaks & Henry Wong, 2004 O'Reilly.
Bibliografia Secundária / Secondary Bibliography
http://download.oracle.com/javaee/5/tutorial/doc/ Tutorial for J5EE: http://download.oracle.com/javase/tutorial/index.html Tutorial for J6SE:
Data da última atualização / Last Update Date
2024-02-16