Introduction to Programming for the Humanities

Objectives


  •  Knowledge


- The fundamental components of a computer and the tools of a software development system;
- The essential constructions of an imperative programming language (Python);
- Fundamental notions of relational databases;
- Some basic concepts involved in the World Wide Web.



  • Application


- Decompose a problem into simpler problems;
- Design an algorithm for solving a simple problem;
- Write a program, making a correct use of the basic constructions of an imperative programming language;
- Test a program in a modern programming environment;
- State a very simple SQL query;
- Access resources available in the network inside a program.



  • Soft-Skills


- Ability to do a programming project, skills in time management.

General characterization

Code

02111012

Credits

10.0

Responsible teacher

Daniel Ribeiro Alves

Hours

Weekly - 3

Total - 280

Teaching language

Portuguese

Prerequisites

N/A

Bibliography

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/)

Teaching method

Classes will be theoretical and practical. Theoretical classes are focused on problem solving. It begins with the statement of a very concrete problem, which motivates the presentation of a topic in computer systems, a data type or a programming language construction, and ends with the complete source code of a program that solves it. In these, students, based on the concepts presented, design programs that solve simple problems related to the Humanities area. An essential characteristic of this subject is the teaching methodology, which despite covering introductory subjects, is specially adapted to students with the level of maturity expected in a second cycle. In practical classes, students complete the design, implement and test these programs.

Evaluation method

The assessment will be continuous, through:


1) An individual programming assignment, corresponding to 25% of the final grade, to be completed in class on March 7, 2025.


2) Two collaborative programming assignments, in groups of two students, corresponding to 50% of the final grade (25% each assignment), to be carried out in class on April 4th and May 9th, 2025.


3) A final exam, corresponding to 25% of the final grade, to be taken in class on May 30, 2025.

Subject matter

1. Introduction:


  1.1. Advantages and limits of programming in the humanities.


  1.2. The Internet and the WWW


2. Problems, algorithms, programs and computers:


  2.1. Objectives and components of a computer system.


  2.2. Levels of abstraction in solving a problem.


  2.3. Program execution. The interpreter.


3. Introduction to Python:


  3.1. Constants, variables and expressions.


  3.2. Numbers and strings.


  3.4. Predefined functions.


  3.5. Assignment and sequence of instructions.


4. Operations and functions with Python:


  4.1. Relational and logical operators. IF statement. FOR cycles. WHILE cycles.


  4.2. Vectors. Matrices. Dictionaries. Life cycle of a program. Ways to test code and errors.


  4.3. Functions. HTTP calls. Files with source code. Introduction to objects.


  4.4. Structures. Description of objects in JSON. Data visualization libraries.


5. Introduction to Data Management:


  5.1. Relational model, relationships, data modeling


  5.2. CRUD operations in SQL.


6. Exemplification of other programming languages ​​and use cases.