Bearing in mind that potential students are not experts in the field of computer science, the Programming curricular unit has several learning objectives:

- familiarize students with the basic techniques used in the field of computer science

- provide students with computer program analysis and synthesis capabilities from the programmer's perspective

- draw students' attention to the potential usefulness of programming in the area of Law

- provide students with knowledge in computer application areas that are useful for other subjects of the course

General characterization





Responsible teacher

José Fonseca


Weekly - 3

Total - 36

Teaching language



Not Applicable


Python Crash Course: A Hands-On, Project-Based Introduction to Programming. Por Eric Matthes

Slides da Unidade Curricular

Teaching method

The teaching method is based on the exposition of the themes in the theoretical classes that are explored through practical exercises elaborated in the practical classes with direct supervision of the teacher. In addition, students are provided with several lists of exercises that they should try to solve autonomously, in order to stimulate their research and problem-solving skills. These exercises are discussed in practical classes and support is given to students in solving them whenever necessary. The final project of the course aims to consolidate the knowledge acquired in a medium-sized project and can be considered a fundamental part in the students' learning.

Evaluation method

The evaluation is carried out based on two components: the evaluation of the final project of the discipline and the exam. The project allows to evaluate the software development capacity of each student while the exam fundamentally evaluates the retention of the concepts presented during the theoretical classes of the discipline and the ease of producing specific algorithms. The combination of both aspects allows for a complete assessment of the knowledge and skills developed by each student.

Subject matter

Introduction to the course - Course syllabus and evaluation method

Introduction to computers architecture. Computers hardware: The Von Neumann Architecture and The Harvard architecture. Binary coding. Characters ASCII code and UTF8 coding.

Blockchain and cryptocurrency. What is Blockchain? Bitcoin. Digital signatures. Asymmetric encryption. Digital transactions

Introduction to programming - algorithms and algorithms description. What is programming? What is an algorithm? Python main characteristics and Python tools

Python main characteristics and particularities. Variables, data types, expressions and operators. User input

Python basic control structures: If, While , For, Exercises

Modules and functions: Programming based on functions and modules

Python strings manipulation

Python lists processing. Programming with lists of values in Python

Introduction to text processing


Programs where the course is taught: