UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

A aleatoriedade e a incerteza são características comuns a muitos fenómenos com os quais é preciso lidar em Engenharia. Nesse contexto, torna-se indispensável a definição de métodos e modelos que permitam compreender e inferir o comportamento de variáveis aleatórias. Nesse âmbito, constituem objectivos da unidade curricular a introdução e o desenvolvimento de conhecimentos e técnicas de recolha e análise de dados e de inferência necessárias à modelação de variáveis aleatórias. No final da unidade o aluno fica com competências específicas que lhe permitem descrever, analisar e estabelecer conclusões sobre dados uni e bi-variados, calcular probabilidades de acontecimentos simples e compostos, conhecer e usar os principais modelos teóricos de distribuição de probabilidades, estimar parâmetros e testar hipóteses.

Conteúdos programáticos:

1 Conceitos Básicos
1.1 Objectivos
1.2 População, amostra, variáveis, escalas de medida
2 Estatística Descritiva
2.1 Caracterização de amostras
2.2 Medidas de tendência central, partição, dispersão, assimetria e curtose
2.3 Regressão linear.
3 Teoria da Probabilidade
3.1 Experiência aleatória, espaço amostral, acontecimento
3.2 Definições de probabilidade
3.3 Probabilidade condicionada e independência de acontecimentos
3.4 Teoremas da Probabilidade Total e de Bayes
4. Variáveis aleatórias e distribuições de probabilidade
4.1 Variáveis aleatórias discretas e contínuas
4.2 Função de probabilidade e de distribuição
4.3 Valor esperado e variância
4.4 Modelos teóricos de distribuições de probabilidade
5 Estimação por Intervalo de Confiança
5.1 Para a média e a diferença entre duas médias
5.2 Para uma proporção e a diferença entre duas proporções
5.3 Dimensionamento de amostras
6 Testes de Hipóteses
6.1 Procedimentos envolvidos e testes de hipóteses

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os pontos 1 e 2 dos conteúdos programáticos introduzem os conceitos e as técnicas de recolha, organização e análise de dados que permitem descrever, analisar e estabelecer conclusões sobre dados uni e bi-variados. Os pontos 3 e 4 introduzem os conceitos fundamentais relativos à teoria das probabilidades e das variáveis aleatórias, necessários ao cálculo de probabilidades de acontecimentos simples e compostos e à compreensão, conhecimento e aplicação dos principais modelos teóricos de distribuição de probabilidades. Os pontos 5 e 6 introduzem os métodos de inferência estatística essenciais à estima de parâmetros e ao teste de hipóteses. Os conteúdos adequam-se aos objectivos da unidade curricular, compreendendo conhecimentos e técnicas de recolha e análise de dados e de inferência necessárias à modelação de variáveis aleatórias.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa, recorrendo à resolução de problemas e ao estudo orientado, de modo a introduzir os conhecimentos e as técnicas e a facilitar a compreensão e a aplicação dos métodos fundamentais no âmbito da estatística descritiva e da inferência estatística.
O método de avaliação compreende:
• 3 Testes escritos de avaliação individual

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objectivos de aprendizagem da unidade curricular, na medida em que estabelecem uma articulação estreita e contínua entre a introdução de conceitos teóricos, a apresentação de exemplos práticos e a resolução de problemas e exercícios. Esta abordagem permite a interpretação e aplicação prática dos conceitos e dos métodos envolvidos em estatística

Bibliografia:

[1] Dekkin, F.M., Karaikamp, C., Lopuhaã, H.P., Meester, L. E. (2010). A Modern Introduction to Probability and Statistics. Understanding Why and How. Springer.
[2] Guimarães, R.C. e Cabral, J. A. S. (2010) Estatística. Verlag Dashofer.
[3] Montgomery, D.C., Runger, G. C. (2014) Applied Statistics and Probability for Engineers. Wiley.
[4] Reis, E.; Melo, P; Andrade, R e Calapez, T. (2015) Estatística Aplicada. Vol. 1 e 2. Edições Sílabo.

Objetivos de aprendizagem:

Conhecimento e capacidade de compreensão sobre as fases e características específicas da metodologia científica.
Aplicação dos conhecimentos e compreensão na elaboração de um trabalho científico.
Capacidade de recolher, selecionar e interpretar informação relevante, de forma a produzir um trabalho científico.
Competência para comunicar de forma escrita / oral de modo estruturado, organizado e abrangente a vários a públicos.
Competências de autoaprendizagem, especificamente na recolha e tratamento da informação.

Conteúdos programáticos:

Metodologia do trabalho científico. Plágio académico. Leitura – Tipos de leitura; recolha e tratamento de informações. Produção escrita – As fases da composição: invenção, disposição, elocução. Comunicação oral.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objectivos formulados, visto que visam as duas áreas principais: a metodologia do trabalho científico e o desenvolvimento das competências de leitura e escrita.

Metodologias de ensino (avaliação incluída):

Num primeiro momento as aulas serão expositivas; depois serão eminentemente práticas, através da apresentação de exemplos e resolução de exercícios.
A avaliação será contínua, contemplando uma frequência, a apresentação de um trabalho, e a realização de um portefólio: 12+6+2.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Sendo uma unidade curricular transversal e de natureza prática, as metodologias de ensino referidas são coerentes com os objectivos da disciplina. O objectivo é que os alunos adquiram as competências genéricas desta unidade curricular.

Bibliografia:

Azevedo, C. A. M. e Azevedo A. G. (1998). Metodologia científica. Porto, Ed. C. Azevedo.
Bizarro, R. e Figueiredo, O. (1994). Da Palavra ao Texto. Porto, Edições ASA.
Cunha, C. e Cintra, L. F. L. (1987). Nova Gramática do Português Contemporâneo. Lisboa, Edições João Sá da Costa.
Eco, U. (1988). Como se faz uma tese em ciências humanas. Lisboa, Presença.
Lipson, C. (2008). Doing honest work in college. Chicago, The University of Chicago Press.
Lopes, E. J. M. (2016). “Plágio”. In Dicionário Crime, Justiça e Sociedade. Lisboa: Sílabo: 362-364.
Rego, A. (1999). Comunicação nas organizações. Lisboa, Edições Sílabo.
Rei, J. E. (1994). A Escrita – seu aperfeiçoamento na Universidade. Porto, Porto Editora.
Universidade Fernando Pessoa. Manual de elaboração de trabalhos científicos. [Em linha]. Disponível em http://www.ufp.pt/images/stories/Aurea/Manual%20Estilo
%20Elabora%C3%A7%C3% A3o%20trabalhos%20cient%C3%ADficos.pdf

Objetivos de aprendizagem:

Competências genéricas: Comunicar, compreender e produzir mensagens em língua inglesa, tanto em contextos sociais, como profissionais. Utilizar a língua inglesa num conjunto de situações reais. Adoptar a atitude introspectiva e reflexiva, tendo em conta a realidade social e económica da comunicação e as suas gramáticas específicas.

Conteúdos programáticos:

1. Travelling
1.1. Travel and Culture
1.2. Socializing
2. Technology
2.1. Technology and work
2.2. Measurements and dimensions
2.3. Appropriate technology
2.4. Technology and the environment
3. Project
1. Travelling
1.1. Travel and Culture
1.2. Socializing
2. Technology
2.1. Technology and work
2.2. Measurements and dimensions
2.3.. Appropriate technology
2.4. Technology and the environment
3. Project.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os items temáticos dos conteúdos programáticos visam como competências genéricas que os alunos comuniquem, compreendam e produzam mensagens em língua inglesa, tanto em contextos sociais, como profissionais, devendo ser capazes de utilizar a língua inglesa num conjunto de situações reais. Para este efeito, nesta unidade curricular, os estudantes são incentivados a adoptar uma atitude introspetiva e reflexiva, tendo em conta a realidade social e profissional na área da engenharia.
É objetivo da unidade curricular levar os estudantes a melhorar as suas competências comunicacionais em inglês, de modo a que consigam utilizar esta língua na realização de diversos contactos interpessoais, em diferentes contextos socioprofissionais, de forma a permitir o desempenho profissional em contexto internacional. Com a componente de 'Trabalho de Projeto', pretende-se melhorar o trabalho de equipa, com utilização de uma segunda língua, especificamente em inglês.

Metodologias de ensino (avaliação incluída):

Aulas teórico-práticas, com ênfase nas competências instrumentais: dialogar, ouvir, ler, compreender e produzir mensagens em língua inglesa.
Avaliação contínua OU exame. A avaliação contínua é constituída por um teste escrito e por um trabalho oral, a apresentar no final do semestre. A nota final resulta da ponderação das várias prestações escritas e orais do estudante, bem como da sua participação nas actividades propostas. O exame é constituído por 2 partes: escrito e oral. A oral é obrigatória sempre que o aluno obtiver 7,5 ou mais na componente escrita.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

De forma a potenciar as competências específicas dos estudantes, a metodologia adoptada (com ênfase na avaliação contínua de conhecimento) incentiva as aquisições de tipo instrumental, designadamente comunicar oralmente e por escrito, identificar e compreender mensagens, utilizando a língua inglesa num conjunto de situações socioprofissionais, bem como no acesso ao conhecimento.
A metodologia eminentemente prática e centrada no aluno permite que este possa simular a participação em diferentes contextos comunicacionais e culturais, adquirindo experiência na recolha, identificação e interpretação de informação proveniente desses contextos. Para além disso, a metodologia adotada promove a autonomia de trabalho em diferentes contextos culturais. A aquisição de competências interculturais contribui para uma maior capacidade de comunicação em língua inglesa, assumindo que a aprendizagem de uma língua sem a aquisição dessas competências será menos eficaz.

Bibliografia:

Holley, V. and Sydes, J. (2009) “Tech Talk intermediate” Oxford
Cobuild English Grammar. 4th Ed. (2017). Glasgow, Harper Collins Publishers.
Redman, S. (2017). English Vocabulary in Use Pre-intermediate and Intermediate Book with Answers: Vocabulary Reference and Practice. Cambridge: C.U.P.
Eastwood, J. (2011). Oxford Practice Grammar – Intermediate. Oxford, Oxford University Press.
Glendinning, E.H. (2007) Technology (Oxford English for Careers), Oxford University Press

Objetivos de aprendizagem:

Ao completar com sucesso a unidade curricular os alunos devem ser capazes de (learning outcomes - LO):
LO1 - formular problemas em linguagem natural e a sua tradução numa linguagem abstrata
LO2 - explicar a noção de algoritmo, e dominar a sua descrição utilizando diversas notações estruturadas
LO3 - explicar e simular a execução de um algoritmo e seus resultados
LO4 - distinguir e utilizar corretamente conceitos de programação como estruturas de controlo, tipos e declarações de dados, operadores e expressões
LO5 - aplicar procedimentos e funções como forma de estruturação de algoritmos
LO6 - aplicar estruturas de dados básicas como vetores, matrizes e cadeias de caracteres em algoritmos
LO7 - aplicar tipos estruturados e ficheiros em algoritmos
LO8 - aplicar a linguagem de programação procedimental C na implementação de algoritmos introdutórios

Conteúdos programáticos:

1. Algoritmos (ALG) e Computação
1.1 Definições
1.2 Representação
1.3 Execução
2. Introdução à Programação
2.1 Conceitos de software
2.2 Linguagem máquina, assembly e de alto nível
3. Tipos e declarações de dados, expressões e funções intrínsecas
3.1 Tipos de dados: ordinais, reais, cadeia de caracteres, definição e conversão de tipos
3.2 Constantes
3.3 Operadores e expressões
3.4 Funções intrínsecas
4. Estruturas de controlo
4.1 Instruções simples e estruturadas
4.2 Instruções: condicionais, repetitivas, de salto
4.3 Estruturas embutidas
5. Funções
5.1 Conceito
5.2 Variáveis locais e globais
5.3 Funções
5.4 Recursão
6. Variáveis indexadas e cadeias de caracteres
6.1 Conceitos
6.2 Vetores e Matrizes
6.4 Cadeias de caracteres
7. Tipos Estruturados
7.1 Definições
7.2 Registos definidos pelo utilizador
8. Ficheiros
8.1 Noção, tipo e uso de ficheiros
8.2 Ficheiros de texto e de acesso direto

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objetivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de algoritmia e computação são apresentados nos capítulos introdutórios, nos capítulos seguintes são apresentados os fundamentos de programação de computadores.
Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos e exercícios concretos executados em ambiente de laboratório recorrendo a software apropriado

Metodologias de ensino (avaliação incluída):

Esta Unidade Curricular (UC) é classificada como de Projeto e contém competências nucleares que não são passíveis de avaliação em exame. Há elementos de avaliação contínua em cuja média pesada se exige positiva, a Nota Prática de Avaliação Contínua (NPAC)
Resultados de avaliação:
a) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e Nota Final positiva (NF1 >=9,5 valores) em avaliação contínua. Aprova à UC com a NF1
b) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e (NF1 < 9,5 valores). Pode ser avaliado em exame. Avaliação em exame é independente da avaliação contínua. Nota Final da UC é NF2
c) Aluno não atinge objetivos mínimos (NPAC < 9,5 valores). Não tem aprovação à UC e não poderá aceder ao exame
Elementos de avaliação previstos:
1. Teste 1
2. Teste 2
3. Projeto prático
4. Exame
Modelo de Avaliação Contínua:
NPAC = (3)
NF1 = ((1) + (2) + NPAC)/3, NPAC >= 9,5
Modelo de Avaliação Exame (NPAC >= 9,5):
NF2 = (4)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Nas aulas teórico-práticas (TP) os conceitos são apresentados intercalados com exemplos e exercícios. Nas aulas prático-laboratoriais (PL) são colocados e resolvidos exercícios e problemas, eventualmente recorrendo a software apropriado. São considerados dois modelos de avaliação nesta UC.
-Modelo aplicado em avaliação contínua:
Nota_Final_IAP = (1/3) x Teste escrito 1 + (1/3) x Teste escrito 2 + (1/3) x Proj_Software
Nota mínima:
Proj_Software >= 10
O Proj_Software é obrigatoriamente feito por avaliação contínua e não é sujeito a exame. Consiste num projeto de programação realizado durante o semestre. Caso o aluno não submeta o projeto terá zero valores e apenas poderá realizar o projeto numa edição subsequente da UC.
-Modelo aplicado em exame (aplicável apenas se Proj_Software >= 10):
Nota_Final_IAP = Nota do exame

Bibliografia:

[Sa] Marques de Sá, J. P. “Fundamentos de Programação Usando C”, Editora FCA, 2004, ISBN 972-722-475-X
[Damas] Damas, Luis “Linguagem C”, Editora FCA, 1999, ISBN 972-722-156-4
[Samp] Sampaio, Isabel; Sampaio, Alberto “Fundamental da Programação em C”, Editora FCA, 1998, ISBN 972-722-130-0
[Vasc] José Vasconcelos e João Carvalho, “Algoritmia e Estruturas de Dados – Programação nas linguagens C e Java”, Editora, Centro Atlântico, 2005, ISBN 989-615-012-5
[KR] Kernighan, Brian W. “The C Programming Language”, Prentice-Hall International, 1988
[CLR] Cormen, Leiserson, Rivest “Introduction to Algorithms “ MIT-Press, 1990, ISBN: 0-262-03141-8

Objetivos de aprendizagem:

O principal objetivo é a criação de bases sólidas de conhecimentos matemáticos, como os conceitos de função, derivada e integral, promovendo o raciocínio lógico e metódico, indispensável a todo o engenheiro para fazer face aos desafios que lhe possam surgir.
No final da unidade curricular o estudante possuirá as seguintes competências:
- capacidade para interpretar e equacionar matematicamente problemas reais, utilizando os conceitos de funções, derivadas e integrais;
- capacidade para selecionar e aplicar corretamente as ferramentas matemáticas disponíveis para a resolução desses problemas;
- capacidade para interpretar e analisar criticamente os resultados obtidos.

Conteúdos programáticos:

1. Funções em R e Rn
1.1 Funções em R: conceitos básicos - Domínio e Zeros. Funções exponencial e logarítmica; Funções trigonométricas e trigonométricas inversas. Derivadas. Regras de derivação. Problemas de optimização.
1.2 Funções em Rn. Derivadas parciais. Regra da cadeia. Vetor gradiente e derivada direcional.
2. Integrais e primitivas
2.1 Integrais indefinidos; integração por substituição; integração por partes; integração de funções racionais.
2.2 Integrais definidos; Teorema Fundamental do Cálculo.
3. Matrizes e determinantes.
3.1 Matrizes: Inversão de Matrizes. Matrizes aplicadas à resolução de Sistemas de Equações Lineares.
3.2 Cálculo de Determinantes. Regra de Cramer.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objetivos formulados, dado que os tópicos incluídos no programa como derivabilidade, integrais e primitivas, matrizes e determinantes, cobrem os principais aspetos do estudo que habilita o aluno a selecionar e aplicar corretamente as ferramentas matemáticas disponíveis para a resolução de problemas de engenharia, desenvolvidos em unidades curriculares específicas.

Metodologias de ensino (avaliação incluída):

A metodologia de ensino-aprendizagem é expositiva, interrogativa e demonstrativa. Recorre-se à resolução de problemas e estudo orientado de modo a permitir interpretar e equacionar matematicamente problemas reais e aplicar as ferramentas matemáticas disponíveis para a sua resolução. São propostos problemas e exercícios, em sala de aula e em horas de estudo autónomo. É dado particular ênfase à interpretação física dos fenómenos matemáticos estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática.
A avaliação desta unidade curricular realiza-se de forma contínua durante as aulas teórico-práticas, e inclui os seguintes elementos de avaliação:
• Provas escritas de avaliação individual (95%);
• Desempenho do aluno: assiduidade, resolução de trabalhos ou exercícios propostos extra-aulas, postura e participação ativa nas aulas e no horário de atendimento do professor (5%).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objectivos formulados para a unidade curricular dado que apostam na interpretação física dos fenómenos matemáticos estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais, contribuindo deste modo para desenvolver a capacidade do aluno para aplicar este tipo de técnicas na resolução de problemas de engenharia.

Bibliografia:

[1] Larson, R.; Hostetler, R.P.; Edwards, B.H. Cálculo – Volume 1, McGraw Hill, 2006.
[2] Larson, R.; Hostetler, R.P.; Edwards, B.H. Cálculo – Volume 2, McGraw Hill, 2006.
[3] Anton, H.; Bivens, I; Davis, S. Cálculo – Volume 1, Bookman, 2014.
[4] Anton, H.; Bivens, I; Davis, S. Cálculo – Volume 2, Bookman, 2007.
[5] Smith, R. T.; Minton, R. B. Calculus – second edition, McGraw-Hill, 2011.
[6] Sullivan, M. Precalculus – seventh edition, Prentice Hall, 2015.
[7] Anton, H.; Busby, R.C. Álgebra Linear Contemporânea, Bookman, 2005
[8] Croft, A. & Davison, R. Mathematics for Engineers, Pearson Education, 2015.

Objetivos de aprendizagem:

Objetivos:
• Sensibilizar e refletir sobre os conceitos essenciais associados com os Sistemas de Informação (SI);
• Mostrar o que são, como se identificam e se estruturam os SI, com soluções apoiadas em tecnologias de informação e comunicação (TIC);
• Proporcionar conceitos válidos e de longa duração sobre SI, para aplicação em contexto profissional.
Aptidões e competências:
• Reconhecer os conceitos associados de SI, a sua relevância e impacto, identificando ocorrências e argumentando a seu favor;
• Descrever processos num SI, com recurso a técnicas específicas (BPMN);
• Efetuar cálculos do uso de TIC alternativas para um SI e apresentar os resultados em folha de cálculo;
• Perceber o uso básico do HTML para a produção de um documento Web;
• Usar um sistema de registo de versões para o registo e organização de informação (git);
• Operar uma base de dados relacional (sqlite) e realizar um modelo de dados simples, propondo uma estrutura para armazenar e manipular informação.

Conteúdos programáticos:

1. Conceitos de Sistemas de Informação
1.1 A informação, o ser humano e o computador
1.2 Fundamentos sobre Sistemas de Informação
1.3 A utilização dos Sistemas de Informação nas organizações
1.4 A modelação dos SI e os processos
1.5 Desafios e oportunidades para a utilização de Sistemas de Informação
2. Complementos de Tecnologias de Informação
2.1 A avaliação da tecnologia
2.2 Tendências nas Tecnologias de Informação
2.3 Multimédia, hipermédia e realidade virtual
2.4 Telecomunicações e redes de dados
2.5 Internet, intranet, extranet e a cloud
2.6 Consequências organizacionais e sociais
3. Bases de dados e sistemas de informação
3.1 Funções de SI e da Informação
3.2 Introdução às bases de dados
3.3 Modelação de dados

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos apresentados para a unidade curricular de Sistemas de Informação estão alinhados com as sugestões e boas práticas internacionais, especificadas pela IS 2010 (Curriculum Guidelines for Undergraduate Degree Programs in Information Systems – ACM / AIS). Assim é proposto o estudo de Sistemas de Informação tendo em conta uma abordagem sistémica e uma visão socio-tecnológica para o uso e exploração de computadores e redes e de suporte ao fluxo de informação nas organizações. Os conteúdos proporcionam, em duas partes, uma introdução dos conceitos e o enquadramento da tecnologia para a suporte à atividade humana nas organizações. Trata-se de uma introdução que proporciona uma visão global e reforça a importância de uma abordagem sistémica, possibilitando a aquisição de competências e o uso de ferramentas para lidar com cada uma das quatro grandes temáticas abordadas, sensibilizando para o papel do computador num âmbito mais alargado que as tecnologias de informação e comunicação.

Metodologias de ensino (avaliação incluída):

Aulas expositivas na parte teórico-prática para a apresentação dos conceitos fundamentais, associados com os sistemas de informação, sua definição e exploração no contexto das organizações. O trabalho é complementado com sugestões de leitura e com a discussão de conceitos, relacionando temas da atualidade como demonstradores de conceitos. No final é realizada uma prova escrita, para testar a compreensão individual da aprendizagem.
As aulas práticas são baseadas em exercícios para apresentação de técnicas associadas com os objetivos da aprendizagem. Sempre que possível, é incentivado o uso de computador para apresentação e organização do trabalho. O trabalho é organizado em grupo, de forma a incentivar a discussão, troca de ideias e colaboração entre pares.
A avaliação é composta por teste e trabalhos que tem igual peso de modo a obter o resultado final da unidade curricular.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Procura-se introduzir a importância de uma abordagem mais sistémica para a exploração de computadores e redes de modo a proporcionar uma visão alargada do impacto que os Sistemas de Informação tem numa organização. Adicionalmente é estimulado o uso da Internet como espaço de procura de informação, da sua exploração enquanto plataforma e também para a divulgação e interação do esforço de aprendizagem de modo a relacionar os Sistemas de Informação e a sua relevância, com o recurso informação e a multiplicidade das suas ocorrências.

Bibliografia:

Gouveia, L. e Ranito, J. (2004). Sistemas de Informação de Apoio à Decisão. Dezembro de 2004. SPI. Principia. ISBN: 972 8589 43 3.
Avison, D. (2020). The Information Systems Mystery. ISBN 9781679632150
Laudon, K. and Laudon, J. (2019). Management Information Systems: Managing the Digital Firm. Global Edition. 16th Edition. Pearson. ISBN: 978-1292296562.
Araújo, A. e Gouveia, L. (2016). Uma Revisão sobre os Princípios da Teoria Geral dos Sistemas. Revista Estação Científica. Faculdade Estácio de Sá de Juiz de Fora. N. 16, julho - dezembro. ISSN 1809-046X.
Gouveia, L. (2017). Transformação Digital: Desafios e Implicações na Perspectiva da Informação. In Moreira, F. et al. (2017). Transformação Digital. Cap. 2, pp 5-28. Silabas e Desafios. ISBN: 978-989-8842-28-2.
Gouveia, L.; Daradkeh, Y. and Steenbergen, D. (2020). Digital Transformation: How to transfer your Social Media account into your work platform? INJOIT Journal. Vol. 8, no.6, pp 104-107. ISSN: 2307-8162.

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

O objectivo principal é sensibilizar e preparar os alunos para o desenvolvimento adequado da actividade de análise de sistemas, fornecendo conhecimento e práticas sobre abordagens, técnicas e ferramentas, que possam facilitar e suportar o desempenho profissional de Análise de Sistemas (no contexto dos computadores e do digital.
As aulas teóricas proporcionarão conhecimento e pistas que permitirão realizar os exercícios das aulas práticas, assim como o trabalho autónomo de projecto. As práticas, organizadas em actividades, orientaram o aluno na busca e sistematização de conhecimento.
No final do semestre o aluno deverá ser capaz de produzir um documento de requisitos de sistema de informação, que enquadre e justifique a necessidade de um novo sistema, as mais-valias a atingir, e que defina e especifique os requisitos funcionais e não funcionais do sistema. Para tal, deve escolher de forma consciente uma determinada abordagem e as ferramentas que concretizam essa abordagem.

Conteúdos programáticos:

1. Introdução à Análise de Sistemas (dos requisitos até aos projectos)
2. Análise Estruturada de Sistemas (conceitos, técnicas e prática)
3. Análise Orientada a Objectos (conceitos, técnicas e prática)
4. Análise Soft de Sistemas (conceitos e uso)

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento (no contexto dos sistemas de informação baseados em computador) essenciais e coerentes para a concretização dos objectivos formulados. Os tópicos programáticos considerados cobrem, assim, os principais aspectos do estudo que habilita o aluno a realizar a atividade Análise de Sistemas de acordo com os principais paradigmas da Análise de Sistemas.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa no âmbito das aulas teórico-práticas, de modo a introduzir os conhecimentos que facilitam a percepção dos principais fundamentos da Análise de Sistemas.
As aulas Práticas Laboratoriais baseiam-se no desenvolvimento de exercícios e projeto de Análise de Sistemas. São orientadas pela realização de listas de exercícios e actividades para realização autónoma.
O método de avaliação compreende duas componentes:
A avaliação da componente teórico-prática inclui:
• Teste escrito de avaliação individual
• O desempenho do aluno, incluindo assiduidade, resolução de problemas e participação activa nas aulas.
A avaliação da componente prática-laboratorial inclui:
• O desenvolvimento de actividades de projeto de Análise de Sistemas
• A apresentação oral do projeto.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias de ensino propostas estão em coerência com os objectivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de Análise de Sistemas estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais de Análise de Sistemas, contribuindo deste modo para desenvolver a capacidade do aluno na aplicação de técnicas e metodologias de Análise de Sistemas no contexto de processos de desenvolvimento de sistemas de informação.

Bibliografia:

[1] Luis Borges Gouveia (2019). Análise de Sistemas. Versão 2.0 Universidade Fernando Pessoa (UFP).
[2] Joey George & Joseph Valacich (2019). Modern Systems Analysis and Design. 8th Edition. Prentice Hall.
[3] Kennet Laudon & Jane Laudon (2017). Management Information Systems: Managing the Digital Firm. 15th Edition. Prentice Hall.
[4] Luis Borges Gouveia (2004). Sistemas de Informação para Gestão. SPI/Principia.
[5] Luis Borges Gouveia (2019). Práticas de Análise de Sistemas. Universidade Fernando Pessoa (UFP).
[6] David Avison & Guy Fitzgerald. (2011). Information Systems Development. Methodologies, techniques & tools. 4th Edition. McGraw Hill Higher Education

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivos: explicar o funcionamento dos circuitos eletrónicos em que se baseiam os sistemas informáticos da atualidade, estudar métodos de análise de circuitos resistivos e reativos em corrente contínua (CC) e alternada sinusoidal (AC), conceber e implementar circuitos e saber utilizar instrumentos de medida para ler valores de intensidade de corrente e tensão.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Descrever a constituição de um circuito identificando os componentes.
- Analisar um circuito em CC, utilizando métodos baseados nas Leis de Kirchhoff: Teorema da Sobreposição, divisores de Tensão e Corrente, esquemas equivalentes de Thévenin/Norton e o Método dos Nós.
- Explicar o funcionamento de circuitos reativos em AC aplicando a análise fasorial.
- Propor e implementar fisicamente circuitos em laboratório, usando placas de ensaio , resistências, geradores independentes, condensadores, bobines e díodos.

Conteúdos programáticos:

1. Fundamentos.
1.1 Tensão, corrente e potência elétrica.
1.2 Elementos resistivos. Lei de Ohm.
2. Análise de circuitos resistivos.
2.1 Leis de Kirchhoff.
2.2 Associação de resistências: Divisores de Tensão e de Corrente.
2.3 Teoremas da Sobreposição e de Thévenin-Norton.
2.4 Método sistemático dos Nós.
3. Análise de circuitos reativos em corrente contínua.
3.1 Condensador, bobine e transformador.
3.2 Associações de condensadores e bobines.
3.3 Redes RC e RL de 1ª ordem: resposta em regime livre e forçado.
4. Análise de circuitos reativos em corrente alternada.
4.1 Grandezas sinusoidais.
4.2 Representação complexa ou fasorial.
4.3 Impedância, admitância e reatância.
4.4 Análise fasorial de circuitos reativos.
4.5 Potência.
5. Realização de trabalhos laboratoriais/experimentais.
5.1 Associação de resistências.
5.2 Verificação das Leis de Kirchhoff (1ª parte)
5.3 Verificação das Leis de Kirchhoff (2ª parte)
5.4 Verificação do Teorema de Thévenin.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem as áreas de conhecimento essenciais e coerentes para atingir os objetivos formulados, dado que os tópicos principais incluídos no programa, tais como: fundamentos de corrente, tensão, potência e conservação da energia elétrica, métodos de análise de redes resistivas, de redes reativas, análise de redes reativas em regime forçado sinusoidal e realização de trabalhos laboratoriais, cobrem os principais aspetos do estudo que habilita o aluno a realizar o cálculo e dimensionamento de circuitos resistivos e reativos recorrendo às leis e teoremas dos circuitos elétricos e eletrónicos, bem como a efetuar a análise e a montagem de circuitos eletrónicos elementares em corrente contínua e alternada.

Metodologias de ensino (avaliação incluída):

Usa-se uma metodologia expositiva, descritiva e demonstrativa em aulas teórico/práticas para a introdução de conhecimentos sobre os princípios fundamentais e aplicação prática de métodos de análise de circuitos eletrónicos em corrente contínua (CC) e corrente alternada sinusoidal (AC). As aulas Práticas Laboratoriais baseiam-se em protocolos experimentais. O método de avaliação inclui duas componentes:
A avaliação da unidade curricular inclui:
• 2 Testes escritos individuais (25% cada, 50% da classificação final).
• 4 Trabalhos de aula/Relatórios, elaborados em grupo (20% da classificação final).
• 1 prova prática de avaliação individual (30% da classificação final).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que se baseiam na interpretação da teoria e na aplicação prática dos conceitos de análise dos circuitos eletrónicos estudados, estabelecendo-se um paralelismo entre a teoria e a prática aplicada a problemas reais de análise e montagem de circuitos, contribuindo deste modo para desenvolver a capacidade do aluno para compreender e aplicar as técnicas estudadas na análise e desenvolvimento de circuitos elétricos e eletrónicos analógicos que constituem a base dos dispositivos utilizados atualmente no contexto da Engenharia Informática.

Bibliografia:

[1] Silva, M. M. (2011). Introdução aos Circuitos Elétricos e Eletrónicos, F. Calouste Gulbenkian, 5ª Ed.
[2] Sadiku , M. N. O., Alexander, C. K.. (2016). Fundamentos de Circuitos Elétricos, 6.ª Ed., McGraw Hill.
[3] Bird, J. (2017). Electrical and Electronic Principles and Technology, 6th ed., Routledge.
[4] Nhavi, M., Edminister, J. A. (2018). Electric Circuits. 7th ed. Schaum's Outlines. McGraw-Hill.
[5] Ribeiro, N. M. (2018). Protocolos para Trabalhos Laboratoriais de Eletrónica Aplicada, FCT/UFP.
[6] Santos, J. B. (2016). Análise de Circuitos Elétricos, Publindústria.

Objetivos de aprendizagem:

O objectivo principal desta unidade curricular é o de fornecer ao aluno competências ao nível da compreensão dos conceitos fundamentais da mecânica Newtoniana e de campo elétrico e magnético bem como da aplicação desses conceitos na resolução de problemas.

Conteúdos programáticos:

Introdução à Mecânica. Equilíbrio das partículas. Cinemática. Dinâmica das partículas. Campo elétrico. Campo magnético.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objectivos formulados, dado que os tópicos incluídos no programa como o equilíbrio das partículas, a cinemática e dinâmica das partículas cobrem os principais aspectos do estudo que habilita o aluno a seleccionar e aplicar correctamente os princípios do comportamento físico de elementos para a resolução de problemas de engenharia, desenvolvidos em unidades curriculares específicas.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa no âmbito das aulas teórico-práticas, de modo a introduzir os conhecimentos que facilitam a compreensão global da mecânica Newtoniana e dos campos elétricos e magnéticos.
As aulas Práticas Laboratoriais baseiam-se na realização de ensaios seguindo protocolos experimentais.
A avaliação da inclui:
• Testes teórico práticos (1º teste 35% e 2º teste 25%)
• Fichas de ensaio, elaboradas em grupo, sobre a prática laboratorial (20% média das fichas)
• Prova sobre a práticas laboratorial (20%)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de mecânica Newtoniana, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais, contribuindo deste modo para desenvolver a capacidade do aluno para compreender e aplicar os princípios do comportamento físico de elementos para a resolução de problemas usados no âmbito da Engenharia Informática.

Bibliografia:

[1] Beer, F.P. e Johnston, E.R., Mecânica Vetorial para Engenheiros: Estática, 9ª Ed., McGraw-Hill, 2010.
[2] Beer, F.P. e Johnston, E.R., Mecânica Vetorial para Engenheiros: Dinâmica, 9ª Ed, McGraw-Hill, 2012.
[3] Meriam, J.L. e Kraige, L.G., Mecânica - Estática, 7ª Ed., LTC, 2015.
[4] Meriam, J.L. e Kraige, L.G., Mecânica - Dinâmica, 9ª Ed., LTC, 2022.
[5] Halliday, D. Resnick, R. and Walker, J., Fundamentals of Physics, 11th Ed., John Wiley & Sons, 2018.

Objetivos de aprendizagem:

A Matemática II, disciplina de formação de base de qualquer curso de Engenharia, surge como complemento à Matemática I, com o objetivo de aprofundar alguns conhecimentos matemáticos anteriormente abordados. Pretende-se assim fornecer ferramentas matemáticas mais avançadas, criando bases sólidas de conhecimentos matemáticos, como os conceitos de função, derivada e integral, e equação diferencial. Pretende-se também promover o raciocínio lógico e metódico, que nos nossos dias é indispensável a todo o engenheiro para fazer face aos desafios que lhe possam surgir.
No final desta unidade curricular o aluno deverá ser capaz de:
- Interpretar e equacionar matematicamente problemas reais, utilizando os conceitos de integrais e equações diferenciais;
- Selecionar e aplicar corretamente as ferramentas matemáticas disponíveis para a resolução desses problemas;
- Interpretar e analisar criticamente os resultados obtidos.

Conteúdos programáticos:

Integrais múltiplos – integrais duplos e triplos. Equações Diferenciais de 1ª Ordem - equações diferenciais separáveis, equações diferenciais lineares, equações de Bernoulli e equações diferenciais exatas. Equações Diferenciais Lineares de 2ª Ordem - equações Homogéneas com coeficientes constantes, equações de Euler-Cauchy, equações não Homogéneas pelo método dos coeficientes indeterminados e pelo método da variação de parâmetros.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objetivos formulados, dado que os tópicos incluídos no programa – integrais múltiplos e equações diferenciais - cobrem os principais aspetos do estudo que habilita o aluno a selecionar e aplicar corretamente as ferramentas matemáticas disponíveis para a resolução de problemas de engenharia, desenvolvidos em unidades curriculares específicas.

Metodologias de ensino (avaliação incluída):

A metodologia de ensino-aprendizagem é expositiva, interrogativa e demonstrativa. Recorre-se à resolução de problemas e estudo orientado de modo a permitir interpretar e equacionar matematicamente problemas reais e aplicar as ferramentas matemáticas disponíveis para a sua resolução. São propostos problemas e exercícios, em sala de aula e em horas de estudo autónomo. É dado particular ênfase à interpretação física dos fenómenos matemáticos estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática.
A avaliação desta unidade curricular realiza-se de forma contínua durante as aulas teórico-práticas, e inclui os seguintes elementos de avaliação:
• Provas escritas de avaliação individual (95%),
• Desempenho do aluno - assiduidade, resolução de trabalhos ou exercícios propostos extra-aulas, postura e participação ativa nas aulas e no horário de atendimento do professor (5%).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação física dos fenómenos matemáticos estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais, contribuindo deste modo para desenvolver a capacidade do aluno para aplicar este tipo de técnicas na resolução de problemas de engenharia.

Bibliografia:

[1] Anton, H.; Bivens, I; Davis, S. (2021) Calculus, Wiley, 12th Edition
[2] Anton, H.; Bivens, I; Davis, S. (2014) Cálculo – Volume 2, Bookman, 10ª Edição
[3] Smith, Robert T.; Minton, Roland B. (2002) “Calculus – second edition”, McGraw-Hill, 2nd Edition
[4] Larson, R.; Hostetler, R.P.; Edwards, B.H. (2006) Cálculo – Volume 2, McGraw Hill, 8ª Edição
[5] Kreyszig, E. (2018) “Advanced Engineering Mathematics”, Wiley, 10th Edition

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Ao completar com sucesso a unidade curricular os alunos devem ser capazes de (learning outcomes - LO):
LO1-entender e utilizar as principais estruturas de dados usadas em algoritmos
LO2-explicar e analisar complexidade algorítmica
LO3-explicar a importância do desenho de algoritmos e o seu impacto no desempenho
LO4-aplicar princípios de eficiência algorítmica em casos particulares
LO5-aplicar técnicas de pesquisa de informação em strings como KMP
LO6-identificar e utilizar métodos de ordenação elementares
LO7-identificar e utilizar métodos de ordenação como merge sort e quick sort
LO8-identificar e utilizar tipos abstratos de dados como pilhas, filas e filas prioritárias

Conteúdos programáticos:

1. Fundamentos de Algoritmos e Estruturas de Dados
1.1. Modelos de representação e programação de algoritmos
1.2. Introdução às estruturas de dados lineares e não lineares
1.3. Análise da complexidade algorítmica
1.4. Introdução às técnicas de desenho algorítmico
1.5. Aplicações e casos de estudo
2. Algoritmos de tratamento de texto (Strings)
2.1. Introdução às operações com cadeias de caracteres2.2. Operações de ordenação2.3. Operações de pesquisa3. Estruturas de Dados Elementares3.1. Tipos de dados e abstração (ADT – Abstract Data Types)3.2. Vetores
3.3. Listas ligadas
3.4. Pilhas
3.5. Filas
4. Ordenação
4.1. Introdução ao problema de ordenação
4.2. Métodos elementares de ordenação
4.3. Merge Sort
4.4. QuickSort
4.5. Amontoados, filas prioritárias e Heap Sort

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de análise e desenho algorítmico são apresentados no capítulo introdutório, nos capítulos seguintes são apresentados vários algoritmos de ordenação e pesquisa e de estruturas de dados lineares e strings.
Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos e exercícios concretos executados em ambiente de laboratório recorrendo a software apropriado

Metodologias de ensino (avaliação incluída):

Esta Unidade Curricular (UC) é classificada como de Projeto e contém competências nucleares que não são passíveis de avaliação em exame. Há elementos de avaliação contínua em cuja média pesada se exige positiva, a Nota Prática de Avaliação Contínua (NPAC)
Resultados de avaliação:
a) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e Nota Final positiva (NF1 >=9,5 valores) em avaliação contínua. Aprova à UC com a NF1
b) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e (NF1 < 9,5 valores). Pode ser avaliado em exame. Avaliação em exame é independente da avaliação contínua. Nota Final da UC é NF2
c) Aluno não atinge objetivos mínimos (NPAC < 9,5 valores). Não tem aprovação à UC e não poderá aceder ao exame
Elementos de avaliação previstos:
1. Teste 1
2. Teste 2
3. Projeto prático
4. Exame
Modelo de Avaliação Contínua:
NPAC = (3)
NF1 = ((1) + (2) + NPAC)/3, NPAC >= 9,5
Modelo de Avaliação Exame (NPAC >= 9,5):
NF2 = (4)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular os conceitos relacionados com a algoritmia e estruturas de dados são apresentados e avaliados na componente teórica. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas

Bibliografia:

[CLRS] Thomas H. Cormen, Leiserson, C., Rivest, R., & Stein, C. (2009). Introduction to Algorithms, third edition. MIT Press.
[KT] Kleinberg, J., & Tardos, E. (2006). Algorithm Design. Pearson Education.
[SW] Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th Edition. Pearson Education.
[VSC] Vasconcelos, J., & Carvalho, J. V. de. (2005). Algoritmia e Estrutura de Dados: programação nas linguagens C e Java. Editora Centro Atlântico.
[AAR2] Rocha, A. A. da. Estruturas de Dados e Algoritmos em Java. FCA - Editora de Informática, ISBN 978-972-722-704-4.
[AAR1] Rocha, A. A. da. (2008). Estruturas de Dados e Algoritmos em C. FCA - Editora de Informática

Objetivos de aprendizagem:

O principal objectivo da Análise Numérica é determinar soluções aproximadas de problemas matemáticos complexos usando apenas as operações mais simples da aritmética. Procura-se nesta unidade curricular apresentar diferentes metodologias que possam ser aplicadas na resolução de problemas da engenharia, procurando desenvolver, no aluno, o espírito crítico e de análise dos resultados obtidos de forma a estabelecer o grau de confiança nos mesmos.

Conteúdos programáticos:

Erros: Erros de Arredondamento, Erros de Truncamento, Propagação do Erro. Raízes de Equações: Método da Bissecção, Método da Falsa Posição, Iteração Simples, Método de Newton, Método da Secante. Sistemas de Equações Lineares: Eliminação de Gauss, Gauss-Jordan, Gauss-Seidel, Decomposição LU (Doolittle, Crout, Cholesky). Ajuste de Curvas: Método dos Mínimos Quadrados, Interpolação de Newton, Interpolação de Lagrange, Interpolação por Spline. Integração Numérica. Derivação Numérica. Integração de Equações Diferenciais: Método de Euler, Método de Runge-Kutta.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

A solução de um problema de engenharia por vezes depende da aplicação de métodos numéricos. A determinação de uma raiz para obter o óptimo de um problema, a solução de um sistema de equações num cálculo estrutural, um ajuste de curvas para modelar um objecto tridimensional, o cálculo de um integral para determinar um volume e a resolução de um sistema de equações diferencias para simular o comportamento de um sistema físico são exemplos de aplicação dos conteúdos programáticos da unidade curricular. O erro associado a representação do número no computador é essencial para perceber algumas das dificuldades da aplicação de um método.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa. Procura-se aplicar a teoria em exemplos de engenharia. O método de avaliação compreende dois testes escritos individuais.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas são consistentes com os objectivos estabelecidos para o curso dada a aplicação prática da metodologia da teoria numérica em exemplos de engenharia.

Bibliografia:

[1] CHAPRA, S. C. - Applied Numerical Methods for Engineers and Scientists - McGRAW-HILL, 2017.
[2] SCHEID, F. - Análise Numérica - McGRAW-HILL, 1991.
[3] PINA, H. - Métodos Numéricos - McGRAW-HILL, 2010.
[4] HOFFMAN, J. D. - Numerical Methods for Engineers and Scientists - McGRAW-HILL, 2001.
[5] CHARTIER, T. P. & GREENBAUM, A. - Numerical Methods - Design, Analysis, And Computer Implementation Of Algorithms - Princeton University Press, 2012.

Objetivos de aprendizagem:

Este curso tem como objetivo estudar a arquitectura e operação interna de um computador com foco na programação do microprocessador e na interface entre o hardware e o software.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
1. Descrever os componentes básicos da estrutura interna dum computador
2. Utilizar a representação binária de inteiros com e sem sinal
3. Descrever a arquitectura do conjunto de instruções MIPS.
4. Descrever o ciclo de instrução do processador.
5. Desenvolver programas simples em linguagem “assembly” MIPS.
6. Utilizar subrotinas para implementar programas modulares.
7. Traduzir programas simples em C para “assembly” MIPS e vice-versa.
8. Processar dados em representação de vírgula flutuante.
9. Explicar as funções do ligador, compilador e assemblador.
10. Analisar técnicas de aumento de desempenho dos processadores.
11. Identificar os mecanismos de entrada e saída de baixo nível usados pelo processador.

Conteúdos programáticos:

1. Introdução. Conceitos básicos, tecnologia. Representação numérica de inteiros. Operações aritméticas com inteiros.
2. Conjunto de Instruções. Arquitectura do MIPS. Acesso à memória. Tomada de decisões. Procedimentos. Representação de instruções. Traduzindo e iniciando um programa.
3. Representação em vírgula flutuante. IEEE 754. Operações Aritméticas. Vírgula flutuante no MIPS.
4. O Processador: Dados e Controlo. Uma Implementação básica do MIPS. O ciclo de instrução no Hardware.
5. Introdução ao “pipelining”. Problemas associados ao “pipelining”. “Pipelining” no MIPS.
6. Hierarquia de Memórias. Desenho de sistemas de “cache”. Análise do desempenho.
7. Mecanismos de entrada/saída de baixo nível. Entrada/Saída programada e por interrupções. Suporte a entrada/saída no MIPS.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Sendo uma unidade curricular de introdução à Arquitectura de Computadores, os conteúdos são organizados por forma a cobrir os componentes principais do computador com enfase na estrutura, operação e programação do microprocessador. Os conceitos fundamentais da organização e estrutura interna dos computadores são apresentados no capítulo introdutório, o conjunto de instruções, a representação de informação e a optimização são apresentados nos capítulos seguintes e finalmente são estudados os mecanismos de I/O de baixo nível. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a simuladores e equipamentos físicos.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a ferramentas apropriados (i.e., simulador Mars). A avaliação será calculada de acordo com a seguinte fórmula:
Nota Prática = 0.9 * (Trabalho Prático 1 + Trabalho Prático 2) + 0.1 * (Fichas Práticas)
Nota Teórica = (Teste Teórico 1 + Teste Teórico 2) / 2
Nota Final = (2 * Nota Teórica + Nota Prática) / 3
Os momentos de avaliação, assim como os protocolos dos trabalhos, serão divulgados e apresentados pelos docentes em sala. Estes encontrar-se-ão também disponíveis no LMS. Caso pretendam mais informações relativamente as avaliações, deverão consultar o docente e/ou a normativa académica em vigor disponibilizada pela UFP.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Os objectivos de aprendizagem estão centrados na compreensão do funcionamento interno do computador, do conhecimento dos seus componentes, e da utilização do conjunto de instruções do processador. A resolução de fichas de exercícios e um trabalho prático de programação permitem aos alunos adquirirem as competências necessárias.

Bibliografia:

[1] Hennessy & Patterson – Computer organization and design: The Hardware/Software Interface, 5th edition – Morgan Kauffman 2013.
[2] A.S. Tanenbaum - Structured Computer Organization 6th edition – Prentice Hall 2013
[3] Stallings, W –Computer Organization and Architecture 10th edition – Prentice Hall 2015.
[4] Delgado, J., Ribeiro, C. - Arquitectura de Computadores, 5ª Edição. FCA 2014.
[5] Patterson, D.- Computer Organization and Design Mips Edition. Morgan Kaufmann Publisher 2020.
[6] Null, L., Lobur, J. - Essentials of Computer Organization and Architecture. Burlington: Jones & Bartlett Learning 2018.

Objetivos de aprendizagem:

Nesta unidade curricular pretende-se que os alunos consigam compreender e expressar-se algoritmicamente através da linguagem C. Mais concretamente:
• Dominar a sintaxe e a semântica da linguagem C
• Compreender, interpretar e identificar erros de compilação e execução de programas em C
• Utilizar fluentemente tipos de dados, operadores e expressões, controlo de fluxo, vectores, estruturas de dados, apontadores e operações de IO
• Aplicar funções na estruturação e implementação de aplicações em C
• Definir e implementar estruturas de dados dinâmicas com recurso a apontadores e estruturas
• Estruturar adequadamente o armazenamento de informação em formato texto e binário
• Aplicar ficheiros de texto e binários no armazenamento e recuperação de informação persistente
• Aplicar estruturas dinâmicas e ficheiros na resolução de problemas concretos

Conteúdos programáticos:

1. Introdução ao C: estruturação dos programas; variáveis e tipos de dados; operadores e expressões; controlo do fluxo e IO.
2. Estruturação de programas em funções: passagem por valor; variáveis locais e recursividade.
3. Vectores e Strings: declaração e inicialização; parâmetros de funções e vectores multi-dimensionais.
4. Apontadores: declaração e inicialização; aritmética de apontadores; apontadores e vectores; passagem por referência e apontadores para apontadores.
5. Estruturas de dados: declaração de tipos; variáveis e parâmetros de funções; gestão de memória.
6. Apontadores e estruturas de dados dinâmicas: pilhas e filas com listas ligadas.
7. Ficheiros: entrada e saída de dados em ficheiros; ficheiros de texto e binários; ficheiros sequenciais e de acesso aleatório.
8. Conceitos avançados: instruções ao pré-processador; variáveis de registo, enumeração e união; apontadores para funções; funções e variáveis estáticas.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

O conteúdo programático cobre os objectivos previstos, uma vez que se organiza em módulos que endereçam especificamente os conceitos da linguagem C e a sua utilização na resolução de problemas concretos. Os conceitos básicos são revistos nos módulos 1, 2 e 3 (cf. tipos de dados, operadores e expressões, estruturas de controlo, IO, estruturação de funções, vectores e strings) e os conceitos avançados são abordados nos módulos 4, 5, 6, 7 e 8 (cf. apontadores, estruturas, gestão de memória dinâmica e ficheiros). Em todos os módulos são abordados os conceitos teóricos associados a cada tema e demonstrada, com exemplos concretos, a sua aplicação. Estimula-se ainda a resolução individual de exercícios em cada módulo.

Metodologias de ensino (avaliação incluída):

Os conteúdos são introduzidos e expostos nas aulas teórico-práticas (TP), recorrendo tipicamente a exemplos simples e ilustrativos de aplicação a problemas concretos e realistas. Esta metodologia é complementada com a proposta de exercícios práticos, quer para resolução na aula, quer para resolução ou finalização individualmente em casa. As aulas práticas-laboratoriais (PL) acompanham o ritmo das aulas TP com a proposta e resolução de exercícios adequados a cada módulo, complementando o esfroço das aulas TP.
Os alunos instalam tipicamente um dos IDEs mais utilizado na comunicade de desenvolvimento em C (e.g. CodeBlocks, CLion, Xcode) e no qual criam um projecto que é organizado para acompanhar toda a unidade curricular e dentro do qual criam e integram os exercícios que desenvovem.
A avaliação compreende duas componentes TP e PL com as seguintes percentagens:
TP (25% Teste 1 + 45% Teste 2) + PL (30% Projecto)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino foca-se na compreensão da sintaxe e semântica da linguagem de programação aplicada à resolução de problemas concretos e reais. Os exemplos de exercícios propostos direccionam-se para a compreensão dos mecanismos disponíveis na linguagem de programação, aplicados na estruturação e implementação de soluções de programação. A resolução recorrente de exercícios pretende estimular a aplicação dos conhecimentos sobre os mecanismos de programação. Esta prática pretende ainda consolidar o domínio sobre todo o processo de desenvolvimento, i.e., a concepção, implementação e teste de estruturas funcionais aplicados a problemas concretos.

Bibliografia:

1. L. Damas, Linguagem C, 10ª Edição, FCA, 1999.
2. B. Kernighan & D. Ritchie, The C Programming Language, Prentice-Hall International, 1988.

Objetivos de aprendizagem:

Esta UC tem por objetivos: explicar o funcionamento dos Sistemas Digitais (SD) e estudar os métodos essenciais à análise e projeto físico dos blocos funcionais de computadores que se baseiam em circuitos eletrónicos digitais. Pretende-se que o aluno realize síntese, minimização e implementação de circuitos combinatórios.
Ao completar com sucesso esta UC os alunos devem ser capazes de:
- Representar quantidades no sistema binário, octal e hexadecimal e efetuar conversões.
- Enunciar os postulados, propriedades e teoremas da Álgebra de Boole e aplicá-los ao projeto de SD.
- Descrever o comportamento das funções lógicas básicas das portas lógicas AND, OR, NOT, NAND, NOR, XOR e NXOR.
- Identificar as fases do projeto de SD.
- Simplificar funções aplicando métodos sistemáticos.
- Utilizar portas SSI e circuitos MSI para projetar SD mais complexos.
- Implementar fisicamente circuitos digitais em laboratório, recorrendo a componentes e circuitos integrados SSI/MSI (TTL/CMOS).

Conteúdos programáticos:

1. Introdução aos Sistemas Digitais
1.1 Caracterização
1.2 Sinais analógicos/digitais
1.3 Escalas de integração
2. Sistemas de Numeração
2.1 Binário
2.2 Octal e Hexadecimal
2.3 Conversões
3. Funções Lógicas e Álgebra de Boole
3.1 Funções básicas: AND, OR, NOT, NAND, NOR. XOR e NXOR
3.2 Álgebra de Boole: postulados, propriedades e teoremas
3.3 Formas canónicas
3.4 Simplificação
3.4.1 Manipulação algébrica
3.4.2 Métodos sistemáticos: Mapas de Karnaugh e Método Numérico
4. Circuitos SSI
4.1 Simbologia
4.2 Implementação com portas NAND ou NOR
4.3 Características dos chips SSI
4.4 Lógica positiva e negativa
5. Circuitos MSI: combinatórios
5.1 Codificadores e descodificadores
5.2 Multiplexers e demultiplexers
5.3 Comparadores, conversores e aritméticos
6. Trabalhos laboratoriais
6.1 Variáveis e funções lógicas
6.2 Circuitos SSI – gates em chips TTL/CMOS
6.3 Circuitos combinatórios – projeto com portas SSI
6.4 Circuitos MSI – descodificador BCD-7 seg/multiplexers

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objetivos formulados, dado que os tópicos principais incluídos no programa, tais como: Introdução aos Sistemas Digitais, Sistemas de Numeração, Funções Lógicas e Álgebra de Boole, Circuitos Digitais com Integração em Pequena Escala (SSI), Circuitos Digitais com Integração em Média Escala (MSI), Circuitos Combinatórios e Realização de trabalhos laboratoriais, cobrem os principais aspetos do estudo que habilita o aluno a realizar a síntese, minimização e implementação, recorrendo a circuitos integrados das famílias lógicas TTL e CMOS, dos circuitos lógicos combinatórios que são utilizados nos sistemas digitais.

Metodologias de ensino (avaliação incluída):

Usa-se uma metodologia expositiva, descritiva e demonstrativa em aulas teórico/práticas, de modo a introduzir os conhecimentos sobre os princípios fundamentais e a aplicação prática dos métodos de análise e síntese de sistemas digitais. As aulas Práticas Laboratoriais baseiam-se na realização de ensaios seguindo protocolos experimentais. O método de avaliação compreende duas partes:
1. Uma avaliação teórico/prática que inclui:
• 2 Testes escritos de avaliação individual (50% da classificação final).
2. Uma avaliação prática laboratorial que inclui:
• 10 Trabalhos de aula/relatórios, desenvolvidos/elaborados em grupo (20% da classificação final).
• 1 prova prática de avaliação individual (30% da classificação final).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de análise de circuitos digitais estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais de síntese, minimização e montagem de sistemas digitais, contribuindo deste modo para desenvolver a capacidade do aluno para compreender e aplicar este tipo de técnicas no desenvolvimento de circuitos e sistemas digitais usados no âmbito da Engenharia Informática.

Bibliografia:

[1] Floyd, T. (2007). Sistemas Digitais: Fundamentos e Aplicações. 9ª edição. Bookman.
[2] Baptista, C. P. (2015). Introdução aos Sistemas Digitais, FCA – Editora de Informática.
[3] Widmer, N., Moss,G., Tocci,R. (2017). Digital Systems: principles and applications, 12th ed., Pearson.
[4] Elahi, Ata. (2018). Computer systems: digital design, fundamentals of computer architecture and assembly language, Springer.
[5] Ribeiro, N. M. (2021). Protocolos para Trabalhos Laboratoriais de Sistemas Digitais, Faculdade de Ciência e Tecnologia, UFP.

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Ao completar com sucesso a unidade curricular os alunos devem ser capazes de (learning outcomes - LO):
LO1-interpretar a noção de tabelas de símbolos e sua aplicabilidade
LO2-explicar a noção de árvores binárias de pesquisa e articular algoritmos associados
LO3-aplicar a noção de balanceamento de árvores usando árvores red-black
LO4- aplicar e operar tabelas de dispersão, funções de dispersão e suas propriedades
LO5-identificar e aplicar a noção de grafo em modelização algorítmica
LO6-desenvolver e utilizar grafos dirigidos em diversos problemas algorítmicos
LO7-aplicar algoritmos de cálculo da árvore mínima de suporte e suas propriedades
LO8- distinguir e aplicar algoritmos de cálculo do caminho mais curto em grafos

Conteúdos programáticos:

1. Introdução às estruturas de dados não lineares
1.1. Introdução às árvores e grafos
1.2. Notação e terminologia
1.3. Formas de representação
1.4. Aplicações de estruturas de dados não lineares
2. Pesquisa e estruturas de dados em árvore
2.1. Tabelas de símbolos (symbol tables)
2.2. Introdução às estruturas de dados em árvore
2.3. Árvores binárias de pesquisa (BST - binary search trees)
2.4. Árvores balanceadas
2.5. Tabelas de dispersão (hash tables)
3. Grafos
3.1. Introdução à estrutura de dados grafo e sua representação
3.2. Algoritmos de travessia em grafos
3.3. Grafos não dirigidos
3.4. Grafos dirigidos
3.5. Grafos pesados
3.6. Grafos pesados e dirigidos

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de análise e desenho algorítmico e estruturas de dados não lineares são apresentados no capítulo introdutório, nos capítulos seguintes são apresentados vários algoritmos e estruturas de dados de pesquisa e de algoritmos de grafos.
Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a software específico

Metodologias de ensino (avaliação incluída):

Esta Unidade Curricular (UC) é de Projeto. Inclui competências nucleares não passíveis de avaliação em exame. Há elementos de avaliação contínua em cuja média pesada se exige positiva, a Nota Prática de Avaliação Contínua (NPAC)
Resultados de avaliação possíveis:
a) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e Nota Final positiva (NF1 >=9,5 valores) em avaliação contínua. Aprova à UC com a NF1
b) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e (NF1 < 9,5 valores). Pode ser avaliado em exame. Avaliação em exame é independente da avaliação contínua. Nota Final da UC é NF2
c) Aluno não atinge objetivos mínimos (NPAC < 9,5 valores). Não tem aprovação à UC e não poderá aceder ao exame
Elementos de avaliação previstos:
A1. Teste 1
A2. Teste 2
A3. Projeto prático
A4. Exame
Modelo de Avaliação Contínua:
NPAC = A3
NF1 = (A1 + A2 + NPAC)/3, NPAC >= 9,5
Modelo de Avaliação Exame (NPAC >= 9,5):
NF2 = A4

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular os conceitos relacionados com a algoritmia e estruturas de dados são apresentados e avaliados na componente teórica. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas

Bibliografia:

[CLRS] Thomas H. Cormen, Leiserson, C., Rivest, R., & Stein, C. (2009). Introduction to Algorithms, third edition. MIT Press.
[KT] Kleinberg, J., & Tardos, E. (2006). Algorithm Design. Pearson Education.
[SW] Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th Edition. Pearson Education.
[VSC] Vasconcelos, J., & Carvalho, J. V. de. (2005). Algoritmia e Estrutura de Dados: programação nas linguagens C e Java. Editora Centro Atlântico.
[AAR2] Rocha, A. A. da. Estruturas de Dados e Algoritmos em Java. FCA - Editora de Informática, ISBN 978-972-722-704-4.
[AAR1] Rocha, A. A. da. (2008). Estruturas de Dados e Algoritmos em C. FCA - Editora de Informática

Objetivos de aprendizagem:

Conhecer e aplicar soluções de forma a resolver problemas típicos das aplicações ubíquas e sensoriais, atingindo uma solução satisfatória ou óptima do problema.

Conteúdos programáticos:

Esta disciplina aborda as seguintes temáticas: tecnologias sensoriais em diferentes domínios (saúde, bem-estar, ambiental, etc.), sensores com e sem fios, discussão do planeamento e desenho de soluções especificas usando redes sensoriais, gestão das aplicações sensoriais, apresentação do hardware e topologia associada para recolher a informação medida através de sensores.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais em hardware e sensores são apresentados através das diferentes secções dos conteúdos programáticos. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos práticos.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a equipamentos físicos ou virtuais (no contexto de simuladores) apropriados. A avaliação é decomposta em duas componentes: a teórica e a prática. No primeiro caso a avaliação resulta sobre testes escritos aplicados durante o semestre sobre a matéria que for sendo leccionada em sala de aula. No segundo caso resulta de trabalhos práticos propostos pelo docente e que são efetuados e defendidos pelos alunos ao longo do semestre.
Nota Final = 60% Freq. TP + 40% Nota Prática
Nota Prática = 80% Avaliação Pontual no final da Aula + 20% Relatório final
Nota Teórica = 35% Quiz + 65% Frequência

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular os diferentes conceitos de hardware e sensores serão abordados. Os conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Make: Sensors: A Hands-On Primer for Monitoring the Real World with Arduino and Raspberry Pi, Tero Karvinen, Kimmo Karvinen, Ville Valtokari (2014)
[2] Sensor Technologies: Healthcare, Wellness and Environmental Applications (Expert's Voice in Networked Technologies), Michael J. McGrath, Cliodhna Ni Scanaill (2013)
[3] Getting Started with Sensors: Measure the World with Electronics, Arduino, and Raspberry Pi, Kimmo Karvinen, Tero Karvinen. (2013)
[4] Handbook of Modern Sensors: Physics, Designs, and Applications, Jacob Fraden (2016)
[5] IoT Projects with Arduino Nano 33 BLE Sense: Step-By-Step Projects for Beginners, Agus Kurniawan. (2021)
[6] ARDUINO: 3 in 1: Beginners Guide + Simple and Effective Strategies + Advance Methods and Strategies To Learn Arduino, Ethan Thorpe. (2020)
[7] Exploring Arduino: Tools and Techniques for Engineering Wizardry, Jeremy Blum. (2019)

Objetivos de aprendizagem:

No final da unidade curricular de Investigação Operacional (IO), os alunos deverão possuir competências específicas que lhes permitam: formular Modelos de Programação Linear; Resolver Graficamente Problemas de Programação Linear; Usar o Método do Simplex; Entender a Dualidade em Programação Linear.

Conteúdos programáticos:

Origem, objecto e metodologia da Investigação Operacional. Formulação de Modelos de Programação Linear. Resolução Gráfica de Problemas de Programação Linear. Método do Simplex. Dualidade em Programação Linear.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Abordam-se formas de optimização de problemas práticos, visando uma maior operacionalidade e poupança de recursos e meios, por forma a atingir os melhores objectivos da maneira mais rápida e eficiente. As diferentes abordagens à programação linear (gráfica, simplex e dualidade) são em si mesmas formas de agilizar a metodologia utilizada para atingir os objectivos propostos.

Metodologias de ensino (avaliação incluída):

A metodologia de ensino-aprendizagem é essencialmente prática, envolvendo resolução de durante as aulas teórico-práticas e nas sessões de orientação do estudo. O principal objectivo consiste em permitir interpretar e aplicar corretamente os conhecimentos teóricos adquiridos a situações reais.
A avaliação desta unidade curricular realiza-se de forma contínua durante as aulas teórico-práticas, através da realização de testes.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias de ensino-aprendizagem desta unidade curricular foram programadas de forma a potenciar a aplicação prática dos conceitos teóricos apreendidos. Pretende-se essencialmente que os alunos sejam capazes de resolver problemas práticos que envolvem optimização, através da programação linear.

Bibliografia:

[1] Hill, M. M., & dos Santos, M. M. (2015). Investigação Operacional–Vol. 1–Programação Linear.
[2] Hill, M. M., & dos Santos, M. M. (2018). Investigação Operacional–Vol. 2–Exercícios de Programação Linear.
[3] de Jesus, F., & Lisboa, J. V. (2020). Introdução à investigação operacional. Vida Económica Editorial
[4] Mourão, M. C., Pato, M. V., Pinto, L. S., L., Simões, O. A., Valente, J. (2019). Investigação Operacional: Exercícios e Aplicações. Escolar Editora.

Objetivos de aprendizagem:

Nesta unidade curricular pretende-se que os alunos consigam compreender e utilizar os conceitos de programação orientada aos objectos (POO) e aplicá-los em Java. Mais concretamente:
• Dominar os conceitos de POO, aplicando-os na implementação concreta de classes, interfaces, herança e polimorfismo
• Possuir capacidades de abstracção na elaboração de diagramas de classes UML
• Utilizar fluentemente tipos de dados, operadores e expressões, controlo de fluxo e colecções de dados para implementar diagramas de classes UML
• Compreender, interpretar e identificar erros de compilação e execução de programas orientados a objectos em Java
• Dominar as técnicas e métodos de estruturação e desenvolvimento de aplicações/projectos orientados aos objectos em Java
• Desenhar e implementar interfaces gráficas (GUI) com recurso a packages Java
• Estruturar e manipular adequadamente o armazenamento persistente de informação em Java
• Criar e utilizar estruturas de dados com recurso a genéricos

Conteúdos programáticos:

1. Introdução à POO em Java: concepção de software OO, classes vs objectos, mensagens, herança e polimorfismo
2. Ferramentas CASE de suporte a metodologias baseadas em UML (diagramas de classes e implementação em Java)
3. Introdução à linguagem de programação Java: classes, tipos de dados, atributos, métodos – polimorfismo (overload e override), encapsulamento, operadores, controlo de fluxo, arrays e vectores, contratos e serviços (interfaces), herança de classes (extends) e de interfaces (implements)
4. Interfaces gráficas utilizando modelos e packages normalizadas em Java: hierarquia de componentes gráficos, componentes contentores, componentes gráficos, gestores de estrutura (layout e ficheiros XML) e programação por eventos
5. Manipulação de erros e excepções
6. Manipulação de ficheiros (binários, objetos e texto)
7. Criação e utilização de genéricos

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

O conteúdo programático cobre os objectivos previstos, uma vez que se organiza em módulos que endereçam especificamente os conceitos de programação orientada-objectos na linguagem Java e a sua utilização na resolução de problemas concretos. Os conceitos básicos são revistos nos módulos 1, 2 e 3 (cf. classes – atributos, construtores e métodos, interfaces, tipos de dados, controlo de fluxo, arrays e colecções). Os conceitos mais avançados são abordados nos módulos 4, 5, 6 e 7 (cf. interfaces gráficas, manipulação de excepções, persistência de informação e genéricos). Em todos os módulos são abordados os conceitos teóricos associados a cada tema e demonstrada, com exemplos concretos, a sua aplicação. Estimula-se ainda a resolução individual de exercícios em cada módulo.

Metodologias de ensino (avaliação incluída):

Os conteúdos são introduzidos e expostos nas aulas teórico-práticas (TP), recorrendo tipicamente a exemplos simples e ilustrativos de aplicação a problemas concretos e realistas. Esta metodologia é complementada com a proposta de exercícios práticos, quer para resolução na aula, quer para resolução ou finalização individual em casa. As aulas práticas-laboratoriais (PL) acompanham o ritmo das aulas TP com a proposta e resolução de exercícios adequados a cada módulo, complementando o esfroço das aulas TP.
Os alunos instalam tipicamente um dos IDEs mais utilizados na comunicade de desenvolvimento em Java (e.g. IntelliJ, Netbeans) e no qual criam um projecto que é organizado para acompanhar toda a unidade curricular e dentro do qual criam e integram os exercícios que desenvolvem.
A avaliação compreende duas componentes TP e PL com as seguintes percentagens:
TP (25% Teste 1 + 45% Teste 2) + PL (30% Projecto)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino foca-se na compreensão dos conceitos de programação orientados-objectos suportados na sintaxe e semântica da linguagem de programação. Estes conceitos são aplicados à resolução de problemas concretos e reais. Os exercícios propostos direccionam-se para a compreensão dos mecanismos disponíveis na linguagem de programação, aplicados na estruturação e implementação de soluções de programação orientada-objectos. A resolução recorrente de exercícios pretende estimular a aplicação dos conhecimentos referente os mecanismos de programação. Esta prática pretende ainda consolidar o domínio sobre todo o processo de desenvolvimento orientado-objectos, i.e., a concepção, implementação e teste de diagramas de classes aplicados a problemas concretos.

Bibliografia:

1. Eckel, Bruce, Thinking in Java, 4th Ed., Prentice Hall, 2006.
2. Paul Deitel, Harvey Deitel, Java How to Program, Early Objects, 11th Ed., 2018.

Objetivos de aprendizagem:

Conhecer a estrutura e operação do sistema operativo. Conhecer a programação multi-processo e multi-tarefa. Programar em linguagem C, em ambiente GNU/LINUX, utilizando a interface de chamadas ao sistema POSIX. Estudar diferentes mecanismos de comunicação entre processos. Conhecer os mecanismos do SO para coordenação entre processos e tarefas. Programação de problemas clássicos de coordenação entre processos e tarefas. Conhecer os mecanismos de gestão da memória num sistema operativo moderno. Conhecer a implementação de sistemas de ficheiros. Conhecer os mecanismos de Entrada e Saída do sistema operativo.

Conteúdos programáticos:

Introdução aos Sistemas Operativos – Definição de sistema operativo; Arquitectura e organização do computador; Funcionamento do sistema operativo; Tipos de sistemas operativos; Estrutura do Sistema operativo; Chamadas ao sistema; A estrutura do sistema operativo. Processos e “Threads” – Processos. “Threads”; Escalonamento; Comunicação entre processos; Sincronização entre processos e threads;. Gestão da Memória – Gestão Básica da Memória; “Swapping”; Memória Virtual; Algoritmos de substituição de páginas. Sistemas de Ficheiros – Ficheiros; Directórios; Implementação de sistemas de ficheiros; Exemplos de Sistemas de Ficheiros. Entrada / Saída – “Hardware” de entrada / saída; “Software“ de entrada / saída; “Block Devices”; “Serial Devices”

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais e a organização do sistema operativo são apresentados no primeiro capítulo. De seguida são apresentados os mecanismos de programação concorrente e paralela recorrendo a processos e tarefas. Segue-se o estudo da gestão da memória, sistemas de ficheiros e, por fim, dos mecanismos de entrada e saída. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a exemplos de programação e à resolução de fichas de trabalho.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a ferramentas de programação apropriadas. A avaliação das competências adquiridas pelo aluno nesta UC é composta pelos seguintes elementos de avaliação:
(1) Teste de Avaliação 1
(2) Teste de Avaliação 2
(3) Projeto prático
(4) Fichas Práticas
(5) Exame(s)
Avaliação Contínua:
Nota Prática (NP) = 0,9*(3) + 0,1*(4),
Nota Final = ((1) + (2) + NP) /3, NP>=9,5
Avaliação em Exame (NP>=9,5):
Nota Final = (5)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular é estudada a arquitetura e funcionamento de um sistema operativo moderno. O programa começa analisar os diferentes componentes da estrutura de um sistema operativo. De seguida são analisadas as técnicas de programação concorrente e paralela recorrendo a processos e tarefas. Segue-se o estudo dos mecanismos de gestão de memória e a organização dos sistemas de ficheiros. Finalmente são apresentados os mecanismos de entrada e saída. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Silbershatz, Gavin, "Operating System Concepts 10th ed.", Wiley 2021
[2] José Alves Marques et al. – Sistemas Operativos 2ª Ed. – FCA 2012.
[3] Tanenebaum A.S. et al., Modern Operating Systems, 4th ed, Prentice Hall 2014
[4] Stevens et al., Advanced programming in the UNIX environment, 3rd ed Addison Wesley 2014

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivos: explicar a arquitetura clássica de um SGBD, estudar modelos lógicos e físicos de bases de dados, construir modelos de bases de dados, estudar a indexação, estudar e utilizar linguagens de consulta, e descrever problemas de concorrência e recuperação e os algoritmos existentes.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
• Descrever a arquitetura de um SGBD, identificando os seus componentes
• Analisar e desenhar modelos de bases de dados, utilizando o modelo E-R
• Utilizar dependências funcionais para normalizar modelos
• Propor, desenhar e otimizar fisicamente modelos de bases de dados
• Utilizar a Álgebra Relacional como linguagem de consultas
• Utilizar e escrever consultas em SQL
• Identificar as estruturas de armazenamento e analisar a criação de índices
• Identificar e analisar as implicações do controlo de concorrência
• Explicar a recuperação e descrever as técnicas a utilizar

Conteúdos programáticos:

1. Introdução
1.1. Arquitectura de referência de um SGBD
1.2. Componentes de um SGBD
1.3. Modelos de Dados, transações, e recuperação
2. O Modelo Relacional
2.1. Relações e Regras de integridade
2.2. Dependências Funcionais
2.3. Formas Normais e normalização
3. Conceção de Bases de Dados
3.1. Modelo Entidade-Relacionamento
3.2. Mapeamento do ER em relacional
4. Álgebra Relacional
4.1. Operadores e regras
4.2. Consultas
5. SQL
5.1. Definição de estruturas, retrições
5.2. Inserção, remoção e atualização de dados
5.3. Junções, agrupamentos e agregações
5.4. Sub-interrogações e quantificadores
5.5. Operadores sobre conjuntos
5.6. Vistas
6. Armazenamento
6.1. Modelos NSM, DSM, PAX
6.2. Técnicas de indexação
6.3. Árvores e hashing
7. Controlo de Concorrência
7.1. Transações, escalonamentos e conflitos
7.2. Serialização
7.3. Algoritmos de fechos e otimistas
7.4. Níveis de isolamento
8. Recuperação
8.1. Escalonamentos recuperáveis
8.2. Algoritmos de recuperação

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem os objectivos previstos, estando organizados em unidades que cobrem os componentes principais de um SGBD. Sendo uma unidade curricular de introdução a Bases de Dados, os conteúdos são organizados por forma a cobrir os componentes principais da arquitectura de um SGBD. Os objectivos de análise e de conceção de modelos são endereçados nos tópicos 2 e 3. O tópico 5 (SQL) fornece aos alunos o conhecimento necessário para manipularem programaticamente um SGBD.

Metodologias de ensino (avaliação incluída):

Os conteúdos são introduzidos e expostos nas aulas teórico-práticas, sendo utilizados exemplos de problemas reais. Esta metodologia é complementada com resolução de exercícios e casos práticos, a maioria de forma individual. Como todos os alunos dispõem de um portátil, instalam um SGBD e outras ferramentas com as quais trabalham durante toda a unidade curricular.
As aulas Práticas Laboratoriais baseiam-se no desenvolvimento de mini-trabalhos, geralmente implicando a construção, desde a sua conceção, de uma base de dados. A base de dados construída é utilizada para resolução de exercícios. A instalação, configuração e administração do sistema de gestão de base de dados fica a cargo dos alunos.
O método de avaliação compreende duas componentes:
A avaliação inclui:
• 2 Testes escritos de avaliação individual (25% cada)
• Os exercícios propostos. (50%)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Os objectivos de aprendizagem estão centrados na compreensão do funcionamento interno de um SGBD, do conhecimento dos seus componentes, e da utilização da sua interface de programação, nomeadamente através de SQL. A resolução de exercícios práticos, implicando desenho concetual, mas também tarefas de configuração, programação e administração permite aos alunos adquirirem as competências necessárias.

Bibliografia:

1. Feliz Gouveia, Fundamentos de Bases de Dados, FCA, Lisboa, 2014.
2. Chris J. Date, An Introduction to Database Systems, 8º ed., Addison-Wesley, USA, 2003.
3. Luís Damas, SQL: Structured Query Language, 14ª edição, FCA, Lisboa, 2017.
4. Jeffrey Ullman, Jenniffer Wisdom, A First Course in database Systems, Prentice-Hall, 2014.

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo introduzir e desenvolver os fundamentos, modelos e ferramentas de engenharia de software utilizados no projeto, gestão, desenvolvimento, avaliação e teste, e documentação de software.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Descrever o processo de engenharia de software
- Identificar e escolher as metodologias de desenvolvimento
- Descrever e aplicar padrões de software
- Identificar e utilizar diagramas UML
- Identificar e produzir os diferentes tipos de documentação
- Planear um projeto com uma ferramenta de gestão utilizando uma dada metodologia
- Descrever as arquiteturas de aplicações REST e MVC, e implementar uma aplicação web com recurso a uma framework
- Utilizar um Sistema de Controlo de Versões
- Configurar e utilizar ferramentas de logging, análise estática de código e otimização
- Definir testes automatizados, distinguir os diferentes tipos de testes e os contextos de utilização

Conteúdos programáticos:

1 Introdução
1.1 Objetivos, conteúdos, e avaliação
1.2 Processos da engenharia de software
2. Metodologias de desenvolvimento
2.1 Metodologias clássicas
2.2 Metodologias ágeis
3. Gestão de projetos de software
3.1 Planeamento
3.2 Documentação
3.3 Ciclo de desenvolvimento
3.4 Gestão do risco
4. Métodos de engenharia de software
4.1 Arquiteturas e modelos de software
4.2 Design patterns
5. Ferramentas de engenharia de software
5.1 Controlo de versões
5.2 Análise estática
5.3 Debugging
5.4 Optimização de código
6. Prática da engenharia de software
6.1 Ferramentas de desenvolvimento
6.2 Testes automatizados
6.3 Integração

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objetivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais da engenharia de software são apresentados através das diferentes secções dos conteúdos programáticos. Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos práticos. As diferentes tarefas do processo de engenharia de software são aplicadas num projeto proposto aos alunos, i.e., contemplando as diferentes fases como a análise de requisitos, a modelização, a implementação, os testes e a manutenção.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teórico-práticas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas laboratoriais os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo às ferramentas de modelização ou desenvolvimento apropriadas. A avaliação é decomposta em duas componentes: a teórica (50%) e a prática (50%). No primeiro caso, a avaliação resulta de um teste escrito aplicado durante o semestre sobre a matéria lecionada em sala de aula. No segundo caso resulta de trabalhos práticos propostos pelo docente e que são efetuados e defendidos pelos alunos ao longo do semestre.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objetivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objetivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular são abordados os diferentes conceitos de engenharia de software. Os conceitos são depois aplicados na realização de trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Guerreiro, S., “Introdução à Engenharia de Software”, FCA, 2015
[2] Nunes,M., O`Neill, H., “Fundamental de UML”, FCA, 2004
[3] Pressman, R., ”Software Engineering: A practitioner’s Approach”, 8th Ed., McGraw-Hill, 2015.
[4] Sommerville, I., ”Software Engineering”, Adisson-Wesley, 2005.
[5] Gamma, E., Helm, R., Johnson, R., Vlissides, J., “Design Patterns: Elements of Reusable Object-Oriented Software”, Addison-Wesley, 1994

Objetivos de aprendizagem:

Esta unidade curricular tem como objetivo aprofundar os conhecimentos de programação recorrendo a uma linguagem diferente das que foram anteriormente lecionadas. Serão também abordadas novas ferramentas para apoiar o desenvolvimento do projeto nesta unidade curricular. Pretende-se explorar a programação web aprofundando a utilização de uma Framework MVC. Esta aplicação será implementada usando uma abordagem full-stack.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
-Estruturar e Planear uma nova aplicação web
-Elaborar um Mockup de uma nova aplicação web
-Entender e descrever quais são os princípios de programação full-stack, server-side e client-side
-Conhecer a organização do padrão de Arquitetura MVC
-Aptos a desenvolver uma aplicação web e/ou API Rest
-Aptos a trabalhar e desenvolver vistas que serão depois interpretadas pelos template engines
-Aptos a desenvolver Páginas web responsivas utilizando frameworks CSS / JS existentes

Conteúdos programáticos:

0. Apresentação
0.1. Enquadramento e Objectivos
0.2. Metodologia e Sistema de Avaliação
0.3. Conteúdo Programático e Bibliografia
1. Introdução HTML / CSS
1.1. Markup Language
1.2. Responsive Framework
2. Introdução a Linguagem PHP
2.1. Tipos de dados
2.2. Operadores
2.3. Estruturas de controlo
2.4. Estruturas de repetição
2.5. Funções
3. Sintaxe de Programação PHP
3.1. Tratamento de exceções
3.2. Utilização de Arquivos (include, require)
3.3. Fundamentos de programação Orientada aos Objetos (OO)
3.3.1. Classes / Instâncias
3.3.2. Construtores / Destrutores
3.3.3. Encapsulamento
3.3.4. Herança
3.3.5. Interfaces
3.3.6. Classes e métodos abstratos
4. Aplicações Web
4.1. Formulários HTML
4.2. Requests
4.3. Sessões
4.4. Interação com uma base de dados - PDO
5. Framework MVC de Desenvolvimento Web
5.1 Rotas
5.2 Controladores
5.3 Views
5.4 ORM

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem os objetivos previstos, estando organizados em unidades que permitem estudar as principais áreas que caraterizam o desenvolvimento web. Inicialmente é feita uma introdução para permitir a elaboração de páginas estáticas. Depois serão abordados os conceitos da nova linguagem de programação web que será apresentada, sendo que é feito um paralelismo com as anteriores linguagens já ensinadas no curso (i.e., C e Java). Por fim, finaliza-se esta unidade curricular apresentando desenvolvimento web com a utilização de uma Framework MVC, e as suas particularidades/conceitos. Os objetivos da aprendizagem são atingidos complementando estes conceitos com exemplos concretos executados em ambiente de laboratório recorrendo a exercícios práticos.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz prático em ambiente laboratorial, onde são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nessas aulas os alunos são confrontados com problemas reais que eles têm que resolver. A avaliação será calculada de acordo com a seguinte fórmula:
Nota final = 55% Frequência + 35% Projeto + 10% Av. Fichas de Trabalho (peso equitativo por ficha)
As notas obtidas anteriormente devem ser positivas (>= 9,5) para serem consideradas para a determinação da nota final. Se alguma das componentes não for positiva a unidade curricular não será concluída (cf. regulamentos da UFP).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objetivos a atingir pelos alunos no final do período letivo. Os conceitos são apresentados, discutidos, aplicados e avaliados no contexto das aulas. Isto garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área de conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo as ferramentas apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por frequência(s) e trabalho(s) prático(s) permitindo manter um equilíbrio entre o esforço dedicado a ambas as componentes. O objetivo é formar profissionais conhecedores das técnicas, ferramentas, e do estado da arte. Nesta unidade curricular os conceitos relacionados com a área de desenvolvimento web são apresentados e avaliados através de frequência(s) e posteriormente aplicados num projeto.

Bibliografia:

PHP com programação orientada a objetos / Frederico Tavares, FCA, 2016. ISBN: 978-972-722-837-9.
Introdução ao desenvolvimento moderno para a web - do front-end ao back-end: uma visão global! / Filipe Portela, FCA, 2018. ISBN: 978-972-722-897-3.
Typescript - o javascript moderno para criação de aplicações / Luís Abreu, FCA, 2017. ISBN: 978-972-722-864-5
Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5 (Learning PHP, MYSQL, Javascript, CSS & HTML5) / Robin Nixon, 5ª ed., O'Reilly Media, 2018. ISBN: 978-1491978917.
HTML, CSS & JavaScript Web Publishing in One Hour a Day, Sams Teach Yourself: Covering HTML5, CSS3, and jQuery / Laura Lemay, 7ª ed., Sams Publishing, 2016. ISBN: 978-0672336232.
PHP com Programação Orientada a Objetos / Frederico Tavares, FCA, 2016. ISBN: 9789727228379

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo introduzir os conceitos sobre as aplicações multimédia existentes e as tecnologias que as suportam, bem como fornecer ao aluno o conhecimento sobre o desenvolvimento de aplicações de computação gráfica.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Identificar e contextualizar o conceito de multimédia, os diferentes tipos de informação multimédia, as suas características e tecnologias associadas
- Perceber a representação digital da informação distinguindo sinais analógicos de digitais
- Reconhecer o processo de digitalização e as especificidades da interatividade
- Classificar e distinguir as aplicações multimédia interativas
- Perceber os diferentes tipos de media estáticos e dinâmicos
- Compreender os conceitos gerais relacionados com o domínio da computação gráfica
- Compreender as bases necessárias à construção de sistemas gráficos interativos
- Desenvolver sistemas gráficos interativos

Conteúdos programáticos:

1. Introdução à multimédia
1.1. Contextualização do conceito de multimédia
1.3. Tipos de informação multimédia
1.4. Definição de multimédia
1.5. Caracterização dos sistemas multimédia
1.6. Tecnologias multimédia
2. Informação digital e Interatividade
2.1. Representação digital da informação
2.2. Noção de Interatividade
3. Tipos de informação multimédia
3.1. Media estáticos
3.2. Media dinâmicos
4. Aplicações Multimédia Interativas
4.1. Classificação das aplicações multimédia interativas
4.2. Tipos de aplicações multimédia interativas
5. Computação Gráfica
5.1. Introdução à computação gráfica
5.2. História da computação gráfica
6. Desenvolvimento de sistemas gráficos
6.1. Introdução ao OpenGL
6.2. Estrutura de programas gráficos
6.3. Pontos, Linhas e Polígonos
6.4. Sólidos geométricos
6.5. Display Lists e Animações
6.6. Transformações geométricas
6.7. Projeções e modelos
6.8. Iluminação e texturas

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objetivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais de multimédia e computação gráfica são apresentados através das diferentes secções dos conteúdos programáticos. Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos práticos. As diferentes tarefas do processo de desenvolvimento de um sistema gráfico são aplicadas num projeto proposto aos alunos, i.e., contemplando as diferentes fases como a estrutura de programas gráficos, pontos, linhas e polígonos, sólidos geométricos, animações, transformações geométricas, projeções, modelos, iluminação e texturas.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teórico-práticas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas laboratoriais os alunos são confrontados com exercícios que têm que resolver recorrendo às ferramentas de desenvolvimento de sistemas gráficos com base em OpenGL. A avaliação é decomposta em duas componentes: a teórica (50%) e a prática (50%). No primeiro caso, a avaliação resulta de um teste escrito aplicado durante o semestre sobre a matéria lecionada em sala de aula. No segundo caso resulta de um trabalho prático que consiste no desenvolvimento de um projeto gráfico que é efetuado e defendido pelos alunos ao longo do semestre.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objetivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objetivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular são abordados os diferentes conceitos de multimédia e computação gráfica. Os conceitos são depois aplicados na realização de trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Ribeiro, N. M., “Multimédia e Tecnologias Interativas”, FCA, 2012.
[2] Chapman, N., Chapman, J., “Digital Multimedia”, 3rd Edition, John Wiley and Sons, 2009.
[3] Pereira, J. M., Brisson, J., Coelho, A., Ferreira, A., Gomes, M. R., “Introdução à Computação Gráfica”, FCA, 2018.
[4] Foley, J. D., van Dam, A., Feiner, S. K., Hugues, J. F., Phillips, R. L., "Introduction to Computer Graphics", Addison-Wesley, 1993.
[5] Hughes, J. F., van Dam, A., McGuire, M., Sklar, D. F., Foley, J. D., Feiner, S. K., Akeley, K., “Computer Graphics: Principles and Practice”, 3rd Edition, Addison-Wesley, 2013.
[6] Shreiner, D., Woo, M., Neider, J., Davis, T., "OpenGL Programming Guide: The Official Guide to Learning OpenGL", Addison-Wesley, 2013.

Objetivos de aprendizagem:

Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
1. Descrever e identificar as características fundamentais dos sistemas de comunicação por camadas.
2. Explicar as bases teóricas da teoria da informação e aplicar os teoremas de Nyquist e Shannon-Hartley.
3. Descrever os mecanismos de transmissão e codificação dos dados.
4. Descrever as características e aplicações dos diferentes meios de transmissão.
5. Elencar as funções e aplicar os algoritmos utilizados na camada de ligação lógica.
6. Desenhar, simular e avaliar o desempenho de protocolos de ligação lógica.
7. Descrever as características das redes de área local (LANs) e avaliar o desempenho dos protocolos de acesso ao meio.
8. Identificar e descrever os componentes da arquitetura IEEE 802.
9. Desenhar, implementar, configurar, testar e gerir LANs Ethernet de classe empresarial (com redundância e redes locais virtuais).

Conteúdos programáticos:

1. Introdução. Hardware/Software de Redes. Modelos de Referência. Normalização.
2. O Nível Físico. Transmissão de dados. Codificação de dados. Meios de Transmissão.
3. O Nível de Ligação de Dados. Requisitos. Delimitação de Tramas. Controlo de Erros. Controlo de Fluxo. Exemplos de protocolos de Ligação Lógica
4. Redes Locais de Computadores (LANs). Topologias. Protocolos de acesso ao meio. Arquitetura IEEE 802. Ethernet.
5. Interligação de LAN’s. Estendendo a LAN: Repetidores e HUBs. Limitando domínios de colisão: Bridges e Switches. Protocolo Spanning Tree. Limitando domínios de difusão: Redes Locais Virtuais. Protocolos 802.1Q, GVRP, VTP.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Nesta unidade curricular os conceitos fundamentais da organização das redes de computadores são apresentados no capítulo introdutório, os níveis físico e de ligação de dados são apresentados nos dois capítulos seguintes e finalmente é efetuado o estudo das redes locais de computadores. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com casos de uso reais executados em ambiente de laboratório recorrendo a simuladores e equipamentos de rede.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a equipamentos físicos ou virtuais (no contexto de simuladores) apropriados.
A avaliação será calculada de acordo com a seguinte fórmula:
Nota Prática = 0,8*Trabalho Prático + 0,2*Fichas Práticas
Nota Teórica = (Teste Teórico 1 + Teste Teórico 2)/2
Nota Final = (2*Nota Teórica + Nota Prática) / 3
Tanto a Nota Prática como a Nota Teórica têm que ser positivas (>= 9,5) para serem consideradas para a determinação da nota final. Se alguma das componentes não for positiva a unidade curricular não será concluída, ficando a componente positiva preservada durante o período indicado nos regulamentos.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Os objectivos de aprendizagem estão centrados na compreensão do funcionamento das redes de computadores estruturadas de acordo com modelos por camadas. Nesta unidade curricular pretende-se que os alunos adquiram conhecimentos sobre o nível físico e de ligação lógica bem como sobre redes locais de computadores (LANs). A resolução de exercícios práticos e projetos, implicando desenho concetual, mas também tarefas de configuração, implementação, teste e gestão de redes locais de computadores de classe empresarial permite aos alunos adquirirem as competências necessárias.

Bibliografia:

[1] Tanenbaum, A. – “Computer Networks 5th Edition – Prentice Hall 2010
[2] Stallings, W. –“Data and Computer Communications 10th edition” – Prentice Hall 2013.
[3] Commer, D. –“Internetworking with TCP/IP, volume 1, 6th edition” – Prentice Hall 2013.

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

1. Conhecimento e capacidade de compreensão:
• Criar um plano de Projeto em gestão de Projetos.
• Planear e controlar as fases do projeto e as tarefas de cada elemento da equipa.
• Determinar os riscos do Projeto e realizar planos de contingência.
• Definir os critérios e garantir o controlo da qualidade.
2. Aplicação de conhecimentos e compreensão:
• Proporcionar aos alunos o aprofundamento e a capacitação na área de Gestão de Projetos, de acordo com a norma do PMI (Project Management Institute) difundida pela publicação PMBOK (Guide to Project Management Body of Knowledge).
• Desenvolver competências adequadas à atividade de gestão de Projetos.
• Preparar os alunos que devem estar munidos de conhecimentos aprofundados em Gestão de Projetos que lhes permitam desenvolver a sua atividade profissional.

Conteúdos programáticos:

1. Introdução.
1.1. Projetos e gestão de Projetos.
1.2. Porque falham os Projetos.
2. A Ciência da Gestão de Projetos.
2.1. Influências Organizacionais e Gestão de Projetos.
2.2. Normalização da Gestão de Projetos.
2.3. O Ciclo de Vida dos Projetos.
2.4. Gestão de Projetos PMI.
2.5. O PMBOK Guide e os Processos da Gestão de Projetos.
2.6. O PMBOK e as soft skills em ambiente de Projeto.
2.7. A criação e o desenvolvimento de uma equipa de Projeto.
2.8. Os desafios da comunicação em ambiente de Projeto.
2.9. Técnicas de tomada de decisão em equipa.
2.10. Como construir relacionamentos de confiança com os stakeholders de um Projeto.
3. Gestão de Projetos.
3.1. Iniciar o Projeto.
3.2. Organizar e planear o Projeto.
3.3. Afetação de equipas/recursos, gestão de custos e riscos.
3.4. Execução, controlo e fecho do projeto.
3.5. Planificar e Controlar Projetos com o Microsoft Office
3.6. Caso Prático – Utilização do MS Project como ferramenta de suporte ao planeamento e ao

Metodologias de ensino (avaliação incluída):

1 - Avaliação contínua
Todas as aulas desta disciplina serão de carácter exclusivamente prático para desenvolvimento e gestão do Projeto.
Os Projetos serão elaborados em grupo, com um máximo de 3 pessoas.
Todos os Projetos serão desenvolvidos em sala de aula, e poderão resultar de uma de duas situações:
1) são apresentados e propostos pelos diferentes docentes orientadores do curso ou,
2) em alternativa, não havendo propostas em número suficiente para o número de alunos, ou quando estes não aceitem nenhuma das propostas apresentadas, terão de ser as pessoas a realizar uma autoproposta.
No final do Projeto haverá uma apresentação/defesa oral de cada Projeto.
A classificação final da disciplina será calculada do seguinte modo:
Classificação do Projeto = 50% da classificação atribuída pelo docente da disciplina de Laboratório de Projeto Integrado + 50% da classificação atribuída pelo docente orientador da área do Projeto.

Bibliografia:

[1]. Chatfield, C. & Johnson, T. (2013). MS Project 2013 Step by Step. Microsoft Press. ISBN: 978-0-7356-6911-6.
[2]. Biafore, B.(201). Microsoft Project 2013: The Missing Manual. O’Reilly Media, Inc., ISBN-13: 978-1-449-35796-2.
[3] Küster, J., Huber, E., Lippmann, R., Schmid, A., Schneider, E., Witschi, U. and Wüst, R. (2015). Project Management Handbook. Springer Heidelberg New York Dordrecht London. ISBN 978-3-662-45372-8 ISBN 978-3-662-45373-5 (eBook), DOI 10.1007/978-3-662-45373-5.

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo principal o aprofundamento dos algoritmos de codificação e representação dos tipos de informação multimédia não-estruturados. Os objetivos incluem: fornecer ao estudante os fundamentos teóricos da compressão, garantir que conhece e sabe aplicar as várias técnicas de compressão multimédia existentes e familiarizá-lo com os métodos e normas de codificação de imagem, áudio e vídeo mais importantes.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Descrever os modos e categorias de compressão.
- Explicar e aplicar algoritmos de codificação de entropia.
- Compreender a psicoacústica e explicar o funcionamento da codificação com perdas de áudio digital.
- Compreender a teoria Rate-Distortion e o funcionamento da codificação com perdas de imagens baseada em transformadas/wavelets.
- Identificar os componentes principais das normas JPEG e MPEG.
- Propor, projetar e implementar em código os algoritmos estudados.

Conteúdos programáticos:

1. Princípios fundamentais da compressão
1.1 Modos sem/com perdas
1.2 Categorias e princípios da codificação de entropia e de fonte
1.3 Rácio de compressão, débito binário, qualidade
2. Compressão sem perdas
2.1 Noção de Entropia
2.2 Codificação de comprimento variável e fixo
2.3 Algoritmos de Shannon-Fano e Huffman
2.4 Codificação Aritmética
2.5 Método LZW
2.6 Normas JBIG, JPEG s/perdas, JPEG-LS e PNG
3 Compressão com perdas de áudio
3.1 Psicoacústica e digitalização de áudio
3.2 Codificação de voz: ADPCM e normas G.72x
3.3 Codificação de áudio Hi-Fi: MPEG-Audio e Dolby AC-3
4 Compressão com perdas de imagens
4.1 Teoria Rate-Distortion
4.2 Quantificadores escalares uniformes midtread e midrise
4.3 Codificação preditiva e de blocos baseada na DCT
4.4 Norma JPEG: modos e arquitetura
4.4.1 Processamento de cor
4.4.2 Quantificação e codificação de entropia
5. Projeto de um codec multimédia
5.1. Planeamento e conceção
5.2. Desenvolvimento e programação

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem as áreas de conhecimento essenciais e coerentes para atingir os objetivos formulados, dado que os tópicos principais incluídos no programa, tais como: Princípios fundamentais da compressão, Métodos e normas para a compressão sem perdas, Métodos e normas para a compressão de áudio, Métodos e normas para a compressão de imagem, e projeto de compressão multimédia: desenvolvimento de um codec, cobrem os principais aspetos do estudo que habilita o aluno a compreender a necessidade da codificação multimédia, a analisar e programar os algoritmos de compressão de imagem, áudio e vídeo mais importantes sob a forma de codecs, bem como a ser capaz de avaliar e escolher os formatos e as normas mais adequados para a codificação e representação de informação multimédia.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa em aulas teórico/práticas, de modo a introduzir os conhecimentos sobre os princípios fundamentais e a aplicação prática dos métodos/algoritmos de compressão multimédia sem perdas e com perdas.
As aulas práticas baseiam-se no desenvolvimento de projetos de implementação dos algoritmos correspondentes a codecs de áudio, imagem e vídeo. O método de avaliação inclui 2 componentes.
A avaliação da componente teórico-prática inclui:
• 2 Testes escritos de avaliação individual (25% cada, 50% da classificação final).
A avaliação da componente prática inclui:
• Escrita de um guião para um vídeo/tutorial científico sobre um codec multimédia (10% da classificação final);
• Desenvolvimento de um vídeo/tutorial científico sobre um codec (30% da classificação final);
• Apresentação do projeto (artigo e vídeo) (5% da classificação final);
• Desempenho do aluno (5% da classificação final).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de compressão estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais de desenvolvimento de codecs de áudio, vídeo e imagem, contribuindo deste modo para desenvolver a capacidade do aluno para aplicar este tipo de técnicas no desenvolvimento de aplicações multimédia, no contexto da Engenharia Informática.

Bibliografia:

[1] Ribeiro, Nuno, Torres, José, Tecnologias de Compressão Multimédia, FCA – Editora de Informática, 2009.
[2] Sayood, K., Introduction to Data Compression, 5th Edition, Morgan Kaufman (Elsevier), 2017.
[3] McAnlis, C. & Haecky, A. Understanding Compression: Data Compression for Modern Developers, O'Reilly Media, 2016.
[4] Li, Ze-Nian, Drew, Mark S., Liu, Jiangchuan, Fundamentals of Multimedia (Texts in Computer Science), Second Edition, Springer, 2014.
[5] Salomon, D., Motta, G. Handbook of Data Compression. 5th Ed., Springer-Verlag, 2010.
[6] Ribeiro, Nuno M., Multimédia e Tecnologias Interativas, 5ª Edição Aumentada, FCA – Editora de Informática, 2012.

Objetivos de aprendizagem:

Compreender as redes de telecomunicações com base no modelo OSI com ênfase nos níveis de rede, transporte e de aplicação. Breve introdução à segurança em redes de computadores. Simulação e configuração de protocolos de encaminhamento, gestão da congestão e qualidade de serviço em laboratório. Programação de aplicações em rede usando “Berkeley Sockets” em ambiente GNU/LINUX.

Conteúdos programáticos:

O Nível de Rede: Requisitos do nível de Rede, Algoritmos de Encaminhamento, O nível de rede na Internet, O protocolo IP, Endereços IP, OSPF, BGP, Tópicos Avançados, Controlo da Congestão, Qualidade de Serviço, Interligação de Redes, O Nível de Transporte: O Serviço de transporte, UDP, RTP, TCP. O Nível das Aplicações: DNS – “Domain Name System”, Correio Electrónico, Serviço de diretório. Segurança: Segurança nas Comunicações, IPSEC, VPNs, Firewalls.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos. Os conceitos fundamentais da operação e protocolos associados ao nível de rede são apresentados no primeiro capítulo incluindo encaminhamento interior e exterior, estático e dinâmico, controlo da congestão e qualidade de serviço. O nível de transporte, com ênfase nos protocolos TCP e UDP, e o nível de aplicação são apresentados de seguida com exemplos de programação de aplicações em rede. O programa finaliza com uma introdução à segurança em redes de computadores . Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a simuladores e equipamentos de rede.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a equipamentos físicos ou virtuais (no contexto de simuladores) apropriados.
A avaliação será calculada de acordo com a seguinte fórmula:
Nota Prática = 0,8*Trabalho Prático + 0,2*Fichas Práticas
Nota Teórica = Teste Teórico
Nota Final = 0,6*Nota Teórica + 0,4*Nota Prática
Tanto a Nota Prática como a Nota Teórica têm que ser positivas (>= 9,5) para serem consideradas para a determinação da nota final. Se alguma das componentes não for positiva a unidade curricular não será concluída, ficando a componente positiva preservada durante o período indicado nos regulamentos.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software e equipamentos apropriados. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular é estudada a organização, operação e protocolos associados com o nível de rede com um foco nas redes IP. O nível de transporte é apresentado com ênfase no protocolo TCP e na interface de programação de aplicações em rede. Os principais serviços de rede são estudado no nível de aplicação. Por fim é feita uma introdução à segurança em redes de computadores. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Tanenbaum, A. – “Computer Networks 5th Edition – Prentice Hall 2010
[2] Stallings, W. –“Data and Computer Communications 10th edition” – Prentice Hall 2013.
[3] Commer, D. –“Internetworking with TCP/IP, volume 1, 6th edition” – Prentice Hall 2013.
[4] Stevens, “UNIX Network Programming Vol1, 3rd edition” – Prentice Hall 2003.
[5] Véstias, M. – “Redes Cisco para Profissionais, 4ª Edição”- FCA 2009.

Objetivos de aprendizagem:

Neste curso pretende-se que os alunos adquiram conhecimentos sólidos sobre as arquitecturas, modelos e protocolos de organização e gestão de sistemas distribuídos. Os alunos deverão conseguir definir e caracterizar diferentes tipos de sistemas distribuídos, nomeadamente os seus objectivos, serviços de middleware envolvidos e variantes arquitecturais ao modelo base Cliente-Servidor. Deverão ainda conseguir caracterizar as técnicas e os modelos de comunicação mais utilizados em sistemas distribuídos, e.g., invocação remota de métodos, comunicação assíncrona (mensagens) e comunicação síncrona (streaming). Pretende-se também introduzir algumas ferramentas usadas no desenvolvimento de aplicações distribuídas (cf. RMI/EJB, CORBA/CCM, DCOM/.NET, Web Services). Os alunos deverão ficar capazes de aplicar os conceitos e mecanismos de implementação de sistemas distribuídos recorrendo a tecnologias existentes (e.g., invocação de métodos em objectos remotos (RMI) e Web Services).

Conteúdos programáticos:

1. Introdução aos Sistemas Distribuídos
2. Comunicação em Sistemas Distribuídos
3. Processamento, Localização e Sincronização de Recursos
4. Replicação de Recursos e Tolerância a Falhas
5. Ferramentas e Serviços Remotos

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos são coerentes com os objectivos de aprendizagem na medida em que focam os principais temas tradicionalmente abordados em sistemas distribuídos. Em particular começa-se por caracterizar os diferentes objectivos e aspectos inerentes aos sistemas distribuídos bem como as tecnologias e serviços que estão na base destes sistemas. Particulariza-se o estudo dos tipos de comunicação utilizados e abordam-se os modelos de localização, replicação e sincronização de recursos bem como a gestão de actualizações, concorrência e tolerância a falhas. Paralelamente abordam-se na prática tecnologias utilizadas na implementação de sistemas distribuídos, nomeadamente através da invocação de métodos remotos e web services. Os objectivos da aprendizagem estão portanto alinhados com os temas abordados ao nível teórico como também com os exemplos práticos concretizados por via de exercícios e projetos implementados recorrendo a ferramentas de middleware existentes.

Metodologias de ensino (avaliação incluída):

Esta unidade curricular está organizada em aulas teórico-práticas (TP) e práticas (PR). A metodologia de ensino utilizada no âmbito das aulas TP baseia-se na exposição oral dos conteúdos programáticos bem como na discussão das principais questões sobre os temas abordados. Paralelamente, no contexto das aulas práticas laboratoriais, os alunos têm oportunidade de contactar com ferramentas de software (cf. RMI, Web Services) vulgarmente utilizadas e aplicadas no desenvolvimento de sistemas distribuídos. A avaliação é contínua, contemplando em partes iguais a componente TP e PR. A componente TP é avaliada por um exame realizado no final do semestre. A componente PR é avaliada pelo planeamento e implementação de um projecto de um sistema/serviço distribuído cujos requisitos são propostos durante o semestre.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias de ensino aplicadas nesta unidade curricular procuram levar os alunos a conhecer os modelos e arquitecturas de planeamento e gestão de sistemas distribuídos, bem como a desenvolver competências na identificação e implementação dos requisitos para estes sistemas. A vertente proporcionada pelas aulas práticas permite um contato com tecnologias actualmente utilizadas no desenvolvimento de sistemas distribuídos numa lógica de serviços, tecnologias de invocação de métodos remotos e serviços web. Esta experiência e contacto com contextos práticos específicos permite ainda melhorar as capacidades de análise e reflexão sobre sistemas ou serviços existentes, sendo essencial na obtenção de competências técnicas e de desenvolvimento nesta área.

Bibliografia:

[1] Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and Design, 5th Ed., Addison-Wesley 2011.
[2] Tanenbaum, A., Steen, M., Distributed Systems, Principles and Paradigms, Prentice Hall 2002.
[3] Sun Developers Services, URL: http://developer.java.sun.com/developer/ (2009).
[4] Jian, Chen, Java RMI vs .Net Remoting, White Paper, 2003, http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf (2007).