
Métodos Computacionais
Código
11574
Unidade Orgânica
Faculdade de Ciências e Tecnologia
Departamento
Departamento de Informática
Créditos
9.0
Professor responsável
Pedro Manuel Corrêa Calvente Barahona
Horas semanais
3
Total de horas
69
Língua de ensino
Português
Objectivos
Saber
As ferramentas de um ambiente de desenvolvimento de software.
As construções essenciais de uma linguagem de programação imperativa.
Introdução ao desenho e análise de algoritmos
Noções fundamentais de bases de dados relacionais.
Introdução à linguagem SQL
Saber Fazer
Decompor um problema em problemas mais simples.
Escrever um programa, numa linguagem de programação imperativa (Python).
Testar um programa num determinado ambiente de programação.
Desenhar e testar algoritmos numa linguagem imperativa (Python)
Desenhar uma base de dados relacional simples
Formular interrogações em SQL.
Soft-Skills
Capacidade de concretização de objetivos.
Capacidade de gestão do tempo e cumprimento dos prazos.
Pré-requisitos
Nenhuns.
Conteúdo
1. Introdução à programação em Python
a. Tipos de dados
• Tipos de dados básicos (números, caracteres)
• Estruturas de dados
Listas, Vetores, Matrizes
Strings
Dicionários
b. Programação Imperativa
• Controle de execução
• Execução Sequencial, Condicional e Repetida
• Funções
Funções encadeadas e recursivas
• Entrada-saída
• Sistemas de operação e tipos de arquivos
• Arquivos de texto (leitura de / escrita para)
• Processamento Básico de Texto
2. Algoritmos
a. Pesquisa em Vetores
• Sequencial vs. Bipartida
b. Algoritmos de ordenação
• Bolha, Inserção, QuickSort e MergeSort
• Correcção e Complexidade
c. Simulação
• Variáveis e ProcessosAleatórios
• Automatos (Estado e Transições)
d. Propriedades de Grafos e Algoritmos
• Polinomiais:
• Árvores de cobertura Mínima (Prim)
• Distâncias mais curtas (Floyd-Wrashall)
• Não deterministicos
• Coloração de Gráfos
• Circuitos Hamiltoniano
• Correcção e Complexidade
3. Introdução às Bases de Dados
a. Bases de dados relacionais
• História e Aplicações
b. Modelação e Desenho
• Entidades, Atributos e Chaves
• Modelo Entidade-Relacão
• Álgebra Relacional (Breve Apresentação)
c. Normalização
• Dependências Funcionais
• Fechos
• Formas Normais
d. Consulta de bases de dados relacionais
• SQL - Linguagem de Consulta Estruturada (DDL e DML)
• Consultas - Junções, Funções de Agregação, Vistas
• Consistência; "Triggers"
Bibliografia
Introdução à Programação (em Python):
• Allen B. Downey. Think Python: How to Think Like a Computer Scientist (version 2.0.17).
http://greenteapress.com/wp/think-python-2e/
• John V. Guttag. Introduction to Computation and Programming Using Python, MIT PRESS, 2016
• Ernesto Costa. Programação em Python - Fundamentos e Resolução de Problemas, FCA, 2015
Algorithmia (in Python):
• Data Structures and Algorithms in Python, by Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser, Wiley, 2013
https://doc.lagout.org/programmation/python/Data%20Structures%20and%20Algorithms%20in%20Python%20[Goodrich,%20Tamassia%20&%20Goldwasser%202013-03-18].pdf
Databases (Tutoriais):
• http://www.sqlitetutorial.net/sqlite-python/
• https://www.pythoncentral.io/introduction-to-sqlite-in-python/
Método de ensino
A matéria (teórica) é explicada na primeira parte das aulas, que é imediatamente seguida de exercícios de aplicação na segunda parte das aulas (teórico-práticas). Desta forma os alunos podem imediatamente aperceber-se dos conceitos ensinados e verificar as dificuldades que possam sentir na sua exploração.
Método de avaliação
Regras de avaliação
Avaliação contínua
A avaliação contínua é feita através de 2 projetos e 2 testes.
O primeiro teste e projeto (T1 e P1) abrangem os tópicos de Programação, Estruturas de Dados e Algoritmos;
O segundo teste e projeto (T2 e P2) cobrem os tópicos dos Bancos de Dados.
Notas
A nota da avaliação contínua, Nca, é a média ponderada das notas teóricas e práticas (todas as notas entre 0 e 20)
Nca = 40% T + 60% P
A nota teórica, NT, é a média ponderada dos testes, T1 e T2.
T = (2 • T1 + T2) / 3
A nota prática, NP, é a média aritmética dos projetos, P1 e P2.
P = (P1 + P2) / 2
Aprovação
Um aluno com uma nota de avaliação contínua positiva (Nca> = 9,5) obtém aprovação com uma classificação final (Nf) igual a Nca, arredondada às unidades.
Frequência
Um aluno obtém frequência se a sua nota prática for pelo menos 8 valores após o arredondamento (ou seja, P > = 7,5)
Exame
Os alunos reprovando na avaliação contínua, mas tendo obtido frequência, podem fazer um exame final, cobrindo os tópicos dos testes.
A nota teórica após o exame, NTe, é o máximo dos testes e notas do exame.
Nte = max ((2 • T1 + T2) / 3, E)
Após o exame, a nota final, Nf, é a média ponderada das notas teóricas e práticas finais.
Nf = 40% Nte + 60% P
Os alunos que obtiveram aprovação em avaliação contínua podem melhorar sua nota final no exame. Sua nota final é obtida com as mesmas regras.