Programação
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Informática |
Ocorrência: 2023/2024 - 1S
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
LTB |
52 |
Plano de Estudos |
1 |
- |
6 |
75 |
162 |
Docência - Responsabilidades
Língua de trabalho
Português
Objetivos
Que o aluno adquira e consolide conhecimentos, aptidões, e competências na:
- Aprendizagem dos fundamentos concetuais ao desenvolvimento e codificação de algoritmos em linguagens de programação;
- Desenvolvimento de aplicações informáticas em linguagens de alto nível;
- Aplicação prática dos conteúdos programáticos em problemas reais utilizando os paradigmas de programação procedimental e imperativa, e programação orientada por objetos;
- Desenvolvimento da capacidade de raciocínio lógico e formal na resolução de problemas complexos.
Resultados de aprendizagem e competências
Ao completar esta unidade curricular os estudantes irão adquirir os conhecimentos e competências necessárias para:
- Aplicar as suas capacidades de raciocínio lógico e formal (adquiridas) na resolução de problemas complexos.
- Desenvolvimento de algoritmos e métodos para resolver problemas reais, em particular, no campo das ciências biomédicas.
- Implementar protótipos de software / soluções informáticas utilizando paradigmas e ferramentas de programação recentes, com recurso à linguagem Python.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Dado que é o primeiro contato com algoritmos, estruturas de dados e linguagens de programação no atual plano curricular. Esta unidade curricular introduz a programação procedimental e imperativa, e também o paradigma orientado a objetos (Introdução à Programação Orientada por Objetos). Portanto, os estudantes não precisam ter conhecimentos prévios relativamente às ciências da computação.
Programa
- Enquadramento da programação (5%)
- Descrição básica de um computador.
- Representação de Informação.
- A programação e a resolução de problemas.
- Algoritmos (5%)
- Algoritmos e programas.
- Conceito de Algoritmo, abordagens bottom-up e top-down.
- Linguagens de programação (5%)
- Conceitos de: linguagem natural, pseudocódigo, linguagem de programação.
- Linguagens de baixo-nível vs linguagens de alto-nível.
- Linguagens tipificadas vs não-tipificadas, compiladas e interpretadas.
- Fases de desenvolvimento de programas.
- Programação numa linguagem de alto nível, orientada ao exemplo: Python (85%)
- Princípios de programação em Python:
- Estrutura de um programa.
- Expressões, Tipos de dados.
- Instruções de entrada e saída.
- Estruturas de controlo.
- Funções / Subprogramas
- Tipos de dados estruturados.
- Arrays, Listas, dicionários, tuples, sets.
- Introdução a programação orientada por objetos.
- Noção de classe, objeto e atributos
- Noções de visibilidade e encapsulamento
- A noção de herança e polimorfismo
- Introdução às exceções.
- Utilização de bibliotecas externas.
- Abordagens às ferramentas de desenvolvimento (IDEs, Jupyter Notebooks, Google colaboratory, github).
- Processamento de sequências de dados (p.e.,ficheiros texto, Excel)
- Introdução ao Aprendizagem de Máquina.
Bibliografia Obrigatória
Andrew Bird, Dr Lau Cher Han, Mario Corchero Jiménez, Graham Lee, Corey Wade; The Python Workshop: Learn to code in Python and kickstart your career in software development or data science. 1st Edition., Packt Publishing, 2019. ISBN: 978-1-83921-885-9
Sebastian Raschka, Vahid Mirjalili; Python Machine Learning Third Edition, Packt Publishing, 2019. ISBN: 978-1-78995-575-0
Bibliografia Complementar
John V. Guttag; Introduction to Computation and Programming Using Python with Application to Understanding Data, Massachusetts Institute of Technology, 2016. ISBN: 9780262529624
Steven F. Lott, Dusty Phillips ; Python Object-Oriented Programming: Build robust and maintainable object-oriented Python applications and libraries, 4th Edition , Packt Publishing, 2021. ISBN: 978-1801077262
Mark Lutz; Programming Python, O’Reilly Media, 2011. ISBN: 978-0-596-15810-1
Python Software Foundation; The Python Tutorial (website (https://docs.python.org/3/tutorial/index.html))
Behrouz A. Forouzan; Foundations of Computer Science, 4th Edition, Cengage Learning EMEA, 2018. ISBN: 9781473751040
Métodos de ensino e atividades de aprendizagem
A metodologia de ensino é essencialmente baseada em aulas iminentemente teórico-práticas e laboratórios. Pretende-se que os alunos apliquem diretamente os conhecimentos que vão adquirindo e ao mesmo tempo estimulem a criatividade e o raciocínio com desafios reais. Adicionalmente, os alunos têm suporte extra-aulas, efetuado através da plataforma de e-Learning.
Para dar suporte à implementação prática dos conceitos teóricos é utilizada a linguagem de programação Python. Para tal, são ministrados os conceitos fundamentais da linguagem, com recurso aos paradigmas de programação (i) procedimental e imperativa, e (ii) orientada por objetos.
Software
Plataforma Anaconda-Python (Anaconda Distribution)
Visual Studio Code
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
30,00 |
Teste |
30,00 |
Trabalho laboratorial |
20,00 |
Trabalho escrito |
20,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Elaboração de projeto |
40,00 |
Estudo autónomo |
45,00 |
Frequência das aulas |
56,00 |
Trabalho escrito |
4,00 |
Trabalho laboratorial |
30,00 |
Total: |
175,00 |
Obtenção de frequência
9,5/20
Nota: Os alunos que tenham vencido qualquer um das componentes TP (Teórico - Práticas) ou LAB (Projeto + Laboratorios), seram dispensados de realizar essa componente em época de recurso.
Fórmula de cálculo da classificação final
50% TP + 50% LAB (average> = 9.5)