Faculdade de Ciências e Tecnologia

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 Processos​Aleató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.

Cursos