Objetivos de aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes)
A aprovação nesta unidade curricular assegura que o aluno adquiriu os conhecimentos e as competências essenciais para ser capaz de realizar as principais etapas do processo de desenvolvimento de software, contribuindo para a consecução dos objetivos 1 e 2 do Ciclo de Estudos. Nomeadamente, consegue:
- Fazer a especificação do problema;
- Conceber o(s) algoritmo(s) suportado(s) em estruturas de controlo e estruturas de dados adequadas;
- Programar o(s) algoritmo(s) numa linguagem de alto nível, usando um ambiente integrado de desenvolvimento;
- Integrar o(s) algoritmo(s) programados na forma de um projeto;
- Planear e executar testes de validação do projeto de software.
Conteúdos programáticos
1. Princípios de resolução de problemas
- Conceitos, algoritmos, estruturas de dados, linguagens e paradigmas de programação
- Princípios. Especificação. Técnicas e normas para representar algoritmos
- Decomposição estruturada de problemas
2. Lógica proposicional
3. Algoritmia
- Estruturas de dados: variáveis e constantes
- Estruturas de controlo de fluxo: atribuição, decisão, repetição
- Operações básicas: entrada e saída de dados
- Operadores: aritméticos, relacionais, lógicos.
4. Linguagem Javascript
- Sintaxe e semântica. Tipos de dados: variáveis, constantes. Cadeias de caracteres (Strings). Definidos pelo utilizador; referências: vetores e vetores de vetores. Conversão de tipos
- Sequenciação: expressões, conversões, operadores, instruções de atribuição
- Estruturas de controlo: atribuição, decisão, repetição
- Programação procedimental: funções e passagem de parâmetros
- Recursividade
5. Algoritmos de pesquisa, seleção, ordenação
Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular
No ponto 1 apresenta-se uma visão geral da abordagem metodológica que se pretende usar e no ponto 2 são recordados alguns aspetos da lógica proposicional, úteis para os pontos seguintes. A partir destes elementos fundamentais, o programa desenvolve-se de modo a atingir os objetivos da unidade.
Desta forma, o ponto 3 relaciona-se com os objetivos 1 e 2, pretendendo-se que os alunos consigam, de forma integrada, observar problemas, defini-los e apresentar um algoritmo para a sua resolução.
O ponto 4 relaciona-se com os objetivos 3 e 4, pretendendo-se que os alunos se tornem capazes de programar algoritmos elaborados e de desenvolver projetos integrando vários algoritmos. As práticas do ponto 4 criam a oportunidade de desenvolvimento do objetivo 5, estimulando-se as boas práticas que possibilitam a entrega de projetos isentos de erros.
Na parte final da UC abordam-se algoritmos de maior complexidade que visam reforçar as competências associadas de forma transversal a todos os objetivos definidos.
Metodologias de ensino e de aprendizagem específicas da unidade curricular articuladas com o modelo pedagógico
A metodologia de ensino assenta na realização de aulas teórico-práticas e experimentais. Nas aulas de cariz teórico-prático o docente apresenta os conteúdos com apoio de apresentações eletrónicas e com o contributo de casos de estudo, fomentando a participação crítica dos alunos. Os alunos devem fazer a integração destas aulas com a bibliografia recomendada. Nas aulas de cariz prático (experimentais) procura-se a aplicação dos conhecimentos adquiridos, o treino de capacidades e a descoberta de novas problemáticas. Será usada a linguagem Javascript como ferramentas de trabalho e todos os conteúdos a lecionar estarão disponíveis na plataforma Moodle. Sistema de avaliação composto: a) Uma avaliação teórica (T) com nota mínima de 8 valores; b) Apresentação de um trabalho prático (TP) com nota mínima de 10 valores; c) Atividades e participação nas sessões (AP). A nota final: 0.40*T + 0.10*AP + 0.50*TP
Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da unidade curricular
A ênfase está colocada numa abordagem expositiva-participativa orientada para a apresentação dos tópicos programáticos, complementada com sessões práticas. Os alunos são colocados perante problemas de naturezas diversas, com vista a promover o saber, a experiência e o treino necessários ao profissional desta área técnica, alicerçados numa visão ampla e integrada dos temas estudados.
Bibliografia de consulta (existência obrigatória)
Javascript, visto em https://www.tutorialspoint.com/javascript/javascript_tutorial.pdf
Eloquent Javascript visto em https://eloquentjavascript.net/Eloquent_JavaScript.pdf
Javascript visto em http://www.mysearch.org.uk/website2/pdf/36.1.pdf
Manzano, J., Oliveira, J. (2008). Algoritmos: Lógica para Desenvolvimento de Programação de Computadores. 21ª edição, S. Paulo, Editora Erica;