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: 2021/2022 - 1S Ícone do Moodle

Ativa? Sim
Página Web: https://moodle.up.pt
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 396 Plano Oficial 1 - 6 52 162

Docência - Responsabilidades

Docente Responsabilidade
João António Correia Lopes Regente
Pedro Baltazar Vasconcelos Regente
Mais informaçõesA ficha foi alterada no dia 2021-07-28.

Campos alterados: Objetivos, Resultados de aprendizagem e competências, Pre_requisitos, Métodos de ensino e atividades de aprendizagem, Fórmula de cálculo da classificação final, Provas e trabalhos especiais, Componentes de Avaliação e Ocupação, Melhoria de classificação, Obtenção de frequência, Programa, Observações, URL da página, Software de apoio à Unidade Curricular, Avaliação especial

Língua de trabalho

Português

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 (incluindo closures.
  7. Definir e usar iteradores, geradores e outras 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.

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 como cidadãos de primeira classe e closures.
  • Funções de ordem superior: map, reduce/fold e filter.
  • Geradores e compreensões em listas.
  • Estratégias de resolução de problemas.
  • Ferramentas de programação, teste e depuração.

Bibliografia Obrigatória

Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers; How to Think Like a Computer Scientist — Learning with Python 3 (Disponível livremente em PDF e em HTML)

Bibliografia Complementar

Steven F. Lott; Building Skills in Python - A Programmer's Introduction to Python, FreeTechBooks, 2010 ([HTML])
Allen Downey; Think Python - How to Think Like a Computer Scientist, Green Tea Press, 2nd Edition, Version 2.2.23, 2015 ([HTML] [PDF])
David Mertz; Functional Programming in Python, O’Reilly Media, 2015 ([PDF])
Ernesto Costa; Programação em Python. ISBN: 978-972-722-816-4

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 Jupyter) tanto em aulas teóricas e teórico-práticas, 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.

São usadas ferramentas de correção automática de código para aumentar a rapidez do feedback dado aos estudantes.

As aulas teóricas (T) são utilizadas para apresentar e discutir os tópicos do programa usando materiais previamente disponibilizados aos estudantes.

As aulas teórico-práticas (TP) 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 dadas, semanalmente, para melhorar o desenvolvimento regular e eficaz dos processos de aprendizagem individual autónomo e são avaliadas em tarefas do Moodle.

Tarefas em sala de aula são usadas para avaliação sumativa no final de cada aula teórica através de questionários.

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 (RE) e "difícil" para resolver antes das provas práticas em computador (PE).

No trabalho em sala de aula, os estudantes usam o mesmo ambiente de trabalho que é usado posteriormente nas avaliações individuais (PE) — IDE Spyder3 para desenvolvimento e teste e o Moodle para submeter os exercícios de programação semanais.

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.

Software

Anaconda Distribution, https://www.anaconda.com
Python 3.8, https://www.python.org/, also included in Anaconda
Spyder3, https://www.spyder-ide.org/, also included in Anaconda
Jupyter Notebook, https://jupyter.org/, also included in Anaconda

Palavras Chave

Ciências Físicas > Ciência de computadores > Programação

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 102,00
Frequência das aulas 60,00
Total: 162,00

Obtenção de frequência

Os estudantes são elegíveis para a avaliação teórica final (TE) se: (i) não excederem o limite de faltas (25% do número total de aulas teórico-práticas estimadas), e (ii) se obtiverem um mínimo de 40% na prática final de avaliação em computador (PE03). Caso o estudante não consiga obter o mínimo de 40% na componente prática (PE) ou na componente teórica (TE), é atribuída a classificação RFF.

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

CA — Avaliação contínua, dividida em (i) LE — Perguntas de resposta múltipla, sobre conceitos de programação, realizadas individualmente no Moodle em sala de aula teórica (são selecionadas as melhores 20 classificações de um total de 23); (ii) RE — Exercícios de programação semanais para casa e nas aulas teórico-práticas (são selecionadas as melhores 10 classificações de 12)

PE — Avaliação prática em computador a realizar, individualmente, no Moodle (são selecionadas as melhores 2 classificações de 3)

TE — Avaliação teórica através de questionário de respostas múltiplas, a realizar individualmente no Moodle com consulta de um livro

Classificação final = 10% CA + 65% PE + 25% TE

Observações:

  1. É exigida a classificação mínima de 40% na última prova prática em computador (PE03).
  2. De igual modo, é exigida classificação mínima de 40% na componente teórica (TE).
  3. Terá lugar uma outra prova prática (PE04) para os estudantes elegíveis para a avaliação que faltem com justificação válida, ou de recuperação para os estudantes admitidos e que não obtiveram a nota mínima; neste último caso, a nota é limitada a 50%.
  4. De igual modo, terá lugar uma segunda prova teórica (TE02) para estudantes admitidos e que faltem ao exame com justificação válida, ou de recuperação para os estudantes admitidos e que não obtiveram a nota mínima; neste último caso, a nota é limitada a 50%.
  5. Caso seja detectado plágio, por meio de ferramentas automáticas (por exemplo, código duplicado ou semelhante submetido para avaliação), são ajustadas as classificações de todos os envolvidos.
  6. Os estudantes que, a meio do semestre, obtiverem pelo menos 95% na avaliação contínua em conjunto com a avaliação prática em computador (CA,PE), podem optar por fazer um pequeno projeto para substituir a componente contínua (CA). Se o projeto for concluído com sucesso, a componente CA passa a 100%; caso contrário, o estudante mantém a nota CA que tinha a meio do semestre.

Provas e trabalhos especiais

A avaliação desta unidade curricular usa quatro tipos de provas:

  • Nas aulas teóricas, através de um questionário de escolha múltipla no Moodle, sem consulta, para avaliar o acompanhamento dos tópicos expostos (LE).
  • Nas aulas teórico-práticas ou fora de aula, exercícios de programação relacionados com os tópicos atuais, a serem submetidos no Moodle e classificados automaticamente (RE).
  • Avaliação prática em computador de exercícios de programação, utilizando o Moodle e classificados automaticamente, e com consulta de textos de referência (PE).
  • Avaliação teórica através de um questionário de escolha múltipla no Moodle, com consulta de um livro, para avaliar a aprendizagem dos conceitos fundamentais de programação e a capacidade dos estudantes usarem e discutirem os melhores algoritmos e estruturas de dados para problemas específicos (TE).

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

No caso de estudantes que não frequentam as aulas e dispensem a avaliação semanal (LE e RE), a classificação final é a média pesada das classificações das duas componentes de avaliação: Avaliação Prática em computador (PE) e Avaliação Teórica (TE), realizada tal como os estudantes ordinários.

Classificação final = 70% PE + 30% TE

Observações:

  1. É exigida a classificação mínima de 40% na última prova prática em computador (PE03).
  2. De igual modo, é exigida classificação mínima de 40% na componente teórica (TE).
  3. Terá lugar uma outra prova prática (PE04) para os estudantes elegíveis para a avaliação que faltem com justificação válida, ou de recuperação para os estudantes admitidos e que não obtiveram a nota mínima; neste último caso, a nota é limitada a 50%.
  4. De igual modo, terá lugar uma segunda prova teórica (TE02) para estudantes admitidos e que faltem ao exame com justificação válida, ou de recuperação para os estudantes admitidos e que não obtiveram a nota mínima; neste último caso, a nota é limitada a 50%.
  5. Caso seja detectado plágio, por meio de ferramentas automáticas (por exemplo, código duplicado ou semelhante submetido para avaliação), são ajustadas as classificações de todos os envolvidos.

Melhoria de classificação

No ano letivo seguinte, o estudante pode solicitar melhoria de classificação que inclui a avaliação prática em computador (PE) e a avaliação teórica (TE) com consulta de apenas um livro, igual à realizada pelos estudantes inscritos.

Classificação final = 70% PE + 30% TE

Observações:

  1. É exigida classificação mínima de 40% em cada um dos componentes PE e TE.

Observações

Nenhuma classificação de componente individual (LE, RE, PE, TE) pode ser reutilizada em outra inscrição na Unidade Curricular.

Recomendar Página Voltar ao Topo
Copyright 1996-2023 © 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: 2023-06-02 às 20:11:22 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias