Objetivos de aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes)
Discutir a importância dos algoritmos no processo de resolução de problemas e identificar as propriedades básicas de bons algoritmos;
Utilizar pseudocódigo/ fluxogramas para a descrição de algoritmos;
Compreender a representação de dados, conversão de tipos de dados, e como a precisão e arredondamentos afetam cálculos;
Discutir o uso de tipo de dados e primitivos e estruturas de dados simples;
Analisar e explicar o comportamento de programas simples;
Modificar e expandir pequenos programas utilizando as estruturas de controlo condicionais, repetitivas e funções;
Escolher as estruturas de controlo adequadas a uma dada tarefa;
Aplicar técnicas de decomposição estrutural/ funcional para organizar programas em pequenos subprogramas e descrever técnicas de passagem de parâmetros;
Descrever o conceito de recursão e compreender os casos de aplicação;
Desenhar, implementar, testar e depurar programas utilizando uma linguagem de programação de alto nível;
Conteúdos programáticos
Introdução às ciências da Computação
Princípios de resolução de problemas
Conceitos e estratégias de resolução de problemas
Decomposição estruturada de problemas
Algoritmos e o processo de resolução de problemas
Algoritmia
Estratégias de Implementação/descrição de algoritmos
Variáveis e constantes
Entrada/saída (E/S) de dados e atribuição
Operadores e precedências
Estruturas de controlo condicionais e iterativas
Propriedades de algoritmos
Depuração de algoritmos
Linguagens Java
Conceitos base, sintaxe e semântica da linguagem e convenções de codificação
Variáveis e constantes
Tipos de dados primitivos e cadeias de caracteres
Operadores, precedências e conversão de tipos
Expressões e atribuição
E/S de dados simples
Estruturas de controlo condicionais e iterativas
Funções, passagem de parâmetros e recursividade
Vetores e vetores de vetores.
Algoritmos de ordenação, seleção e de pesquisa em vetores
Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular
No primeiro módulo os estudantes têm oportunidade de compreender o surgimento dos computadores, das linguagens de programação e respetivos paradigmas.
Os segundo e terceiro módulos são uma sequência natural do anterior onde são fornecidas as competências (a), (b), (e) (g) e(h)(em parte). O quarto módulo fornece aos estudantes a primeira abordagem a uma linguagem de programação de alto nível, utilizando a linguagem Java como ferramenta. Este módulo fornece as competências estabelecidas em (c), (d) (e), (f), (g), (h), (i). No final deste módulo os estudantes deverão estar aptos para desenhar, implementar, testar e depurar programas utilizando uma linguagem de programação de alto nível(j);
Metodologias de ensino e de aprendizagem específicas da unidade curricular articuladas com o modelo pedagógico
A metodologia de ensino assenta em aulas teóricas e teórico-práticas ou experimental. Nas aulas teóricas o docente apresenta os conteúdos de forma oral, com apoio de apresentações eletrónicas e ilustração de casos de estudo, fomentando a participação crítica dos alunos. As aulas de cariz mais prático e prático-experimental, visam a aplicação e o treino dos conhecimentos adquiridos e a descoberta de novas problemáticas.
Serão usados o IDE Eclipse como ferramentas de trabalho e todos os conteúdos a lecionar estarão disponíveis na plataforma Moodle;
Sistema de avaliação:
Um testes teóricos (E) (min 8 valores)
Um trabalho prático (TP) (min 10 valores);
Nota final: 0.50* E+ 0.50 * TP
O método de avaliação de conhecimentos é avaliação contínua. Serão dispensados de exame final os alunos que obtenham a classificação mínima de 10 (dez) valores. Não estão contempladas avaliações por prova oral em qualquer um dos momentos de avaliação.
Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da unidade curricular
A organização da UC promove uma abordagem sintética dos
conteúdos programáticos e a definição da experimentação como componente
privilegiada do processo de aprendizagem. Este tipo de abordagem sugere
que o aluno realize, de forma autónoma, um estudo teórico para
aprofundamento dos temas abordados e experimentação prática para
consolidação das aprendizagens. Neste contexto, a plataforma Moodle e o
horário de atendimento extra letivo são importantes instrumentos de
trabalho à disposição do aluno.
No contexto da experimentação e aplicação de saberes que permitam a
construção dos conhecimentos pretendidos, a componente
prática/experimental promove a aquisição das aptidões ligadas ao
saber-fazer e a prática das atitudes definidas como objetivos de
aprendizagem.
O sistema de avaliação engloba a avaliação individual (1 teste) e
coletiva (1 trabalho de grupo). Os testes consideram a avaliação nas
dimensões teórica e prática. O trabalho de grupo faz a avaliação nas
dimensões prática e experimental.
Bibliografia de consulta (existência obrigatória)
Savitch, W. (2017). Java: An Introduction to Problem Solving and Programming (8th Edition). Addison-Wesley Publishing Company, ISBN-13: 978-0134462035;
Schildt, H. (2017). Java: A Beginner's Guide, Seventh Edition 7th Edition. McGraw-Hill Education, ISBN-13: 9978-1259589317;