Saltar para:
Logótipo
Você está em: Início > L.EIC003

Fundamentos da Programação

Código: L.EIC003     Sigla: FP

Áreas Científicas
Classificação Área Científica
OFICIAL Engenharia Informática e Computação

Ocorrência: 2023/2024 - 1S Ícone do Moodle

Ativa? Sim
Página Web: https://moodle2324.up.pt/course/view.php?id=4957
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L.EIC 449 Plano Oficial 1 - 6 52 162

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

INTRODUÇÃO

A fluência no processo de desenvolvimento de software é um pré-requisito essencial para o trabalho de Engenheiros Informáticos. Para usar computadores na resolução eficaz de problemas, os estudantes devem ser competentes em ler e escrever programas usando linguagens de programação de alto nível.

OBJETIVOS ESPECÍFICOS

O objetivo global desta Unidade é dar ao estudante a capacidade de criar algoritmos e de usar uma linguagem de programação para implementar, testar e depurar algoritmos para resolver problemas simples.

O estudante será capaz de entender e usar os conceitos fundamentais de programação e a abordagem funcional da programação, especificamente a programação "livre de efeitos", onde as chamadas de função não têm efeitos colaterais e as variáveis são imutáveis, e de contrastar esta abordagem com a abordagem imperativa.

DISTRIBUIÇÃO PERCENTUAL

Componente científica 40%
Componente tecnológica: 60%

Resultados de aprendizagem e competências

No final da unidade curricular, espera-se que o estudante consiga lidar com problemas de programação de baixa/média complexidade, utilizando as abordagens ou paradigmas de programação imperativa ou funcional.

Mais especificamente, o estudante deverá ser capaz de:

  1. Projetar, implementar, testar e depurar um programa que use as construções fundamentais de programação, cálculos básicos, estruturas condicionais e iterativas padrão, entrada/saída simples, persistência (ficheiros) e exceções.
  2. Entender a abstração de dados e usar tipos de dados simples ou compostos.
  3. Entender a abstração procedimental e usar a definição de funções, passagem de parâmetros, recursão.
  4. Escrever funções úteis que aceitem e devolvam outras funções.
  5. Implementar algoritmos básicos que evitem atribuir a um estado mutável ou considerar igualdade de referências.
  6. Entender variáveis e escopo léxico num programa.
  7. Definir operações em coleções, incluindo operações que tomam funções como argumentos (map, reduce/fold e filter) e listas em compreensão.
  8. Usar ferramentas de programação que ajudam a escrever, testar e documentar programas em computador de acordo com as melhores práticas de programação.
  9. Resolver problemas numéricos usando programas de computador.

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Nenhum conhecimento prévio é necessário.

Programa

Tópicos:

  • Introdução ao Pensamento Computacional, algoritmos e programação com Python.
  • Conceitos fundamentais de programação: tipos de dados simples; variáveis, expressões e declarações; fluxo de programa, condicionais, iteração; funções, passagem de parâmetros, recursão; ficheiros.
  • Tipos de dados compostos: strings, tuplos, conjuntos, listas, dicionários.
  • Programação livre de efeitos usando variáveis imutáveis e chamadas a função sem efeitos colaterais.
  • Funções de ordem superior: map, reduce/fold e filter.
  • Compreensões em listas.
  • Estratégias de resolução de problemas.
  • Ferramentas de programação, teste e depuração.

Bibliografia Obrigatória

Brad Miller; How to think like a computer scientist (Disponível livremente em PDF e em HTML)

Bibliografia Complementar

Steven F. Lott; Building skills in Python
Allen B. Downey; Think Python. ISBN: 978-1-449-33072-9
David Mertz; Functional programming in Python. ISBN: 978-1-491-92856-1

Métodos de ensino e atividades de aprendizagem

O envolvimento contínuo do estudante com a unidade é promovido, através do estudo e discussão dos tópicos (distribuídos previamente em Notebooks, acompanhados de vídeos) tanto em aulas teóricas e teórico-práticas, bem como através de trabalhos de programação dentro e fora das aulas.

O estudante é encorajado a encontrar as melhores ideias para resolver problemas específicos, executá-las e implementar as soluções de programação, de forma elegante, legível e eficiente (em tempo e em espaço) usando a linguagem de programação Python.

As aulas teóricas são utilizadas para discutir os tópicos do programa e apresentar casos de estudo relacionados. As aulas teórico-práticas são usadas para ajudar os estudantes a entender os tópicos do programa e a resolver as tarefas de programação semanais.

Os conteúdos para a aula teórica e as tarefas para a prática, são dados, semanalmente, para melhorar o desenvolvimento regular e eficaz dos processos de aprendizagem individual autónomo e são avaliadas em tarefas do Moodle. São usadas ferramentas de correção automática de código para aumentar a rapidez do feedback dado aos estudantes.

Os estudantes são incentivados a usar o Playground, contendo exercícios de programação selecionados por tema: "fácil" para resolver antes da aula teórica, "médio" para resolver antes das tarefas semanais e "difícil" para resolver antes das provas práticas em computador (mini-testes).

Sempre que for considerado necessário na sala de aula, especialmente durante o primeiro mês de aulas da unidade, os estudantes são incentivados a passar pela "Clínica", assegurada por monitores, para obter ajuda.

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Teste 90,00
Trabalho prático ou de projeto 10,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 110,00
Frequência das aulas 52,00
Total: 162,00

Obtenção de frequência

Os estudantes não obtêm frequência, sendo-lhe atribuída a classificação "RFF", se excederem o limite de faltas (25% do número total de aulas teórico-práticas estimadas).

Estão dispensados de frequência os alunos com estatuto de trabalhador-estudante (TE) ou os alunos que tenham obtido frequência no ano letivo anterior. No entanto, todos os estudantes deverão realizar, no presente ano letivo, todas as componentes de avaliação abaixo indicadas.

Fórmula de cálculo da classificação final

A avaliação inclui duas componentes: (i) Avaliação contínua (AC) — avaliação semanal, em sala e fora das aulas, baseada em atividades Moodle; e (ii) mini-testes em computador (MT1, MT2, EN, ER) com vigilância — avaliação individual, em sala de aula, a realizar no Moodle e dividida em perguntas teóricas de resposta múltipla e em exercícios de programação em computador.

As componentes de avaliação são:

AC: Questões de escolha múltipla (QT) e exercícios de programação semanais (QP), sendo a classificação AC = 25% QT + 75% QP.

MT1, MT2: Provas em computador com componente teórica (25%) e prática (75%), realizadas durante o semestre.

EN: Prova em computador com componente teórica (25%) e prática (75%), realizada na 1ª época de exames.

ER: Prova em computador com componente teórica (25%) e prática (75%), realizada durante a 2ª época de exames para:

  • estudantes que não obtiveram aprovação na 1ª época; e
  • estudantes que desejam fazer melhoria da classificação da 1ª época

A classificação final da primeira época de exames ("Época Normal") é dada pela seguinte fórmula:

Classificação final = 10% AC + 90% (MT1+MT2+EN)/3

A classificação final da segunda época de exames ("Época de Recurso"), para recurso ou melhoria, é dada pela seguinte fórmula:

Classificação final = 10% AC + 90% ER

Provas e trabalhos especiais

A avaliação desta unidade curricular inclui dois tipos de provas:

  • Avaliação da teoria através de um questionário de escolha múltipla no Moodle, com consulta da documentação de referência, para avaliar a aprendizagem dos conceitos fundamentais de programação e o conhecimento de algoritmos e estruturas de dados adequados para problemas específicos.
  • Avaliação da prática através de exercícios de programação em computador, utilizando o Moodle com classificação automática e com consulta de documentação de referência.

Avaliação especial (TE, DA, ...)

Os estudantes com estatuto especial, embora possam estar dispensados da frequência das aulas práticas, estão sujeitos às mesmas condições de avaliação dos estudantes "Ordinários".

Melhoria de classificação

Os estudantes que queiram fazer melhoria de classificação obtida no ano lectivo anterior para esta unidade curricular, terão de se submeter a todo o processo de avaliação, estando dispensado apenas o requisito de obtenção de frequência (assiduidade às aulas práticas).

Observações

É obrigatória a leitura diária do e-mail institucional (FEUP), para o qual são enviadas cópias de toda a informação importante que é colocada no Moodle.

Recomendar Página Voltar ao Topo
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2025-06-15 às 16:43:11 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias