Ficha Unidade Curricular (FUC)

Informação Geral / General Information


Código :
L5096
Acrónimo :
L5096
Ciclo :
1.º ciclo
Línguas de Ensino :
Português (pt)
Língua(s) amigável(eis) :
Francês,Inglês

Carga Horária / Course Load


Semestre :
2
Créditos ECTS :
6.0
Aula Teórica (T) :
18.0h/sem
Aula Teórico-Prática (TP) :
36.0h/sem
Aula Prática e Laboratorial (PL) :
0.0h/sem
Trabalho de Campo (TC) :
0.0h/sem
Seminario (S) :
0.0h/sem
Estágio (E) :
0.0h/sem
Orientação Tutorial (OT) :
1.0h/sem
Outras (O) :
0.0h/sem
Horas de Contacto :
55.0h/sem
Trabalho Autónomo :
95.0
Horas de Trabalho Total :
150.0h/sem

Á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