Introdução à Programação para as Humanidades

Objetivos

No final desta unidade curricular o estudante terá adquirido conhecimentos, aptidões e competências que lhe permitam:

  •  Saber 

- As técnicas fundamentais do raciocínio computacional;
- As construções essenciais de uma linguagem de programação (Python);
- Noções fundamentais de gestão de dados;
- Conceitos básicos relacionados com a Internet e a World Wide Web.

  • Saber Fazer

- Decompor um problema em problemas mais simples;
- Conceber programas para resolver problemas de manipulação, análise e visualização de informação no domínio do curso em que a UC é oferecida;
- Testar um programa num determinado ambiente de programação;
- Formular uma interrogação muito simples em SQL e aceder a recursos disponíveis na internet dentro de um programa;

  • Soft-Skills

- Capacidade de concretização, capacidade de gestão do tempo e cumprimento dos prazos.

Caracterização geral

Código

02111012

Créditos

10.0

Professor responsável

Daniel Ribeiro Alves

Horas

Semanais - 3

Totais - 280

Idioma de ensino

Português

Pré-requisitos

N/A

Bibliografia

Bonaretti, Serena, "Learn Python with Jupyter", consultado a 12 fevereiro 2025, disponível em https://www.learnpythonwithjupyter.com/.


Brooker, Phillip D., Programming with Python for Social Scientists, Los Angeles, SAGE, 2019.


Costa, Ernesto, Programação em Python - Fundamentos e Resolução de Problemas, Lisboa, FCA, 2015.


Downey, Allen, Think Python: How to Think Like a Computer Scientist, 3.a ed., Boston, O'Reilly Media, 2024.


Guttag, John V., Introduction to Computation and Programming Using Python, Cambridge, MIT Press, 2021. (disponível em http://repo.darmajaya.ac.id/5070/1/Introduction%20to%20Computation%20and%20Programming%20Using%20Python%20by%20John%20V.%20Guttag%20%28z-lib.org%29.pdf)


Kaefer, Frederick; Kaefer, Paul, Introduction to Python Programming for Business and Social Science Applications, Los Angeles, SAGE, 2020.


Karsdorp, Folgert, "Python Programming for the Humanities by Folgert Karsdorp", consultado a 12 fevereiro 2025, disponível em http://www.karsdorp.io/python-course/.


Karsdorp, Folgert; Kestemont, Mike; Riddell, Allen, Humanities Data Analysis: Case Studies with Python, Princeton, Princeton University Press, 2021. (disponível e https://www.humanitiesdataanalysis.org/index.html)


Kernighan, Brian W., Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security, 2.a ed., Princeton, Princeton University Press, 2021.


Montfort, Nick, Exploratory Programming for the Arts and Humanities, Cambridge, MIT Press, 2021. (disponível em https://archive.org/details/montfort-exploratory-programming-2e/9780262363105/)

Método de ensino

As aulas serão teórico-práticas. As aulas teóricas são orientadas para a resolução de problemas. Começa-se com o enunciado de um problema muito concreto, que motiva a apresentação de um tópico dos sistemas de computadores, de um tipo de dados ou de uma construção da linguagem de programação, e termina-se com o código fonte completo de um programa que o resolve. Ainda nestas, os alunos, partindo dos conceitos expostos, concebem programas que resolvem problemas simples relacionados com a área das Humanidades. Uma característica essencial desta unidade curricular é a metodologia de ensino, que apesar de cobrir matérias introdutórias, é especialmente adaptada a estudantes com o grau de maturidade esperado num segundo ciclo. Nas aulas práticas, os alunos completam a conceção, implementam e testam esses programas.

Método de avaliação

A avaliação será contínua, através de:


1)    Um trabalho de programação individual, correspondente a 25% da nota final, a realizar em aula no dia 7 de março de 2025.


2)    Dois trabalhos de programação colaborativos, em grupos de dois alunos/as, correspondente a 50% da nota final (25% cada trabalho), a realizar em aula nos dias 4 de abril e 9 de maio de 2025.


3)    Um teste final, correspondente a 25% da nota final, a realizar em aula no dia 30 de maio de 2025.

Conteúdo

1. Introdução:


  1.1. Vantagens e limites da programação nas humanidades.


  1.2. A Internet e a WWW


2. Problemas, algoritmos, programas e computadores:


  2.1. Objetivos e componentes de um sistema computacional.


  2.2. Níveis de abstração na resolução de um problema.


  2.3. Execução de programas. O interpretador.


3. Introdução ao Python:


  3.1. Constantes, variáveis e expressões.


  3.2. Números e cadeias de caracteres (strings).


  3.4. Funções pré-definidas.


  3.5. Atribuição e sequência de instruções.


4. Operações e funções com Python:


  4.1. Operadores relacionais e lógicos. Instrução IF. Ciclos FOR. Ciclos WHILE.


  4.2. Vetores. Matrizes. Dicionários. Ciclo de vida de um programa. Formas de testar código e erros.


  4.3. Funções. Chamadas HTTP. Ficheiros com código fonte. Introdução aos objetos.


  4.4. Estruturas. Descrição de objetos em JSON. Bibliotecas de visualização de dados.


5. Introdução à gestão de dados:


  5.1. Modelo relacional, relações, modelação de dados


  5.2. Operações CRUD em SQL.


6. Exemplificação de outras linguagens de programação e casos de uso.