Métodos Computacionais
Objetivos
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.
Caracterização geral
Código
11574
Créditos
9.0
Professor responsável
Joaquim Francisco Ferreira da Silva, Pedro Manuel Corrêa Calvente Barahona
Horas
Semanais - 4
Totais - 69
Idioma de ensino
Português
Pré-requisitos
Nenhuns.
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 Structures and Algorithms in Python [Goodrich, Tamassia & Goldwasser 2013-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 1 teste.
O primeiro teste e projeto (T1 e P1) abrangem os tópicos de Programação, Estruturas de Dados e Algoritmos;
O segundo projeto (P2) cobre os tópicos de Bases 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 do teste, T = T1
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. A nota teórica após o exame, NTe, é o máximo do teste e notas do exame, Nte = max(T1, 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.
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"