Informatics for Science and Engineering A



The fundamental components of a computer.

The tools of a software development system.

The essential constructions of an imperative programming language.

Some fundamental notions of relational databases.

Some basic concepts involved in the World Wide Web.


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 given programming environment.

State a very simple SQL query.

Access resources available in the network inside a program.


Ability to do a programming project.

Skills in time management.

General characterization





Responsible teacher

Pedro Abílio Duarte de Medeiros, Vítor Manuel Alves Duarte


Weekly - 5

Total - 60

Teaching language



This unit has no access requirements.




  • Allen B. Downey. Think Python: How to Think Like a Computer Scientist (version 2.4). Versão PDF disponível em
  • Charles Severance. Python for Everybody: Exploring Data Using Python 3 (2016-Jul-05 version). PDF em
  • Ernesto Costa. Programação em Python - Fundamentos e Resolução de Problemas, FCA, 2015


  • Material na página da cadeira no CLIP (slides, guias, enunciados)
  • Sebenta do Prof. Ludwig Kripahl

Teaching method

There are two hours of lectures and a lab session of three hours each week.

Lectures are problem-driven. They start with a concrete problem, which motivates the presentation of some computer systems topic, some data type or some programming language construct, and end with the complete source code of a program that solves it.

In the lab classes, students design, implement and test programs for solving simple problems in Science and Engineering fields.

Evaluation method

Evaluation Components

The assessment consists of two components: the laboratory component and the theoretical-practical component.

Laboratory component and frequency

The laboratory component consists of two mini-works and a final work, carried out in part outside of classes. The works can be done in groups of two students.

The score obtained in an automatic evaluation system, the evaluation by the teacher and eventual tests and oral tests contribute to each student''s grade in a work.

The laboratory component grade (CompL) is the weighted average of the grades of the two mini-works (T1, T2) and the final work (TF):
CompL = 0.15 T1 + 0.15 T2 + 0.7 TF.

To obtain frequency, it is necessary that:
CompL> = 8.0.

Theoretical-Practical Component

The theoretical-practical component consists of two tests (outside classes) or an exam (in the Season of Appeal). The three tests are individual, written and without consultation.

The theoretical-practical component grade (CompTP) is the weighted average of the test scores (T1 and T2) or the exam grade (Ex):
CompTP = 0.5 T1 + 0.5 T2 or CompTP = Ex.

To obtain approval, it is necessary that:
CompTP> = 9.0.

Final grade

The final grade (F) of students is often:

F = CompTP, if CompTP F = 0.4 CompL + 0.6 CompTP, if CompTP> = 9.0.

All grades (assignments, CompL, tests and CompTP) are rounded to one decimal, the final grade (F) is rounded to the nearest integer.

Grades Obtained in Previous Years

Frequency obtained in 2018/19 and 2019/20 continues valid.

If you carry out this year''s works, then the grade for the laboratory component is the highest between the previous and the grade obtained this year.

Students who obtained at least 9.0 in the grade of the theoretical-practical component in 2018/19 or in 2019/20 are exempt from taking the tests and exam.

If you take the tests / exam again this year, the grade of the theoretical-practical component is the one from this year.

For grade improvement of approved students before 2018 the final grade is the one from exam (100%).

Subject matter

Introduction: Problems, algorithms, programs, and computers. Goals and components of computer systems. Program execution. The interpreter.

Fundamental Concepts of Programming: Constants, variables and expressions. Numbers and strings. Predefined functions. Assignment statement and sequence of statements. Levels of abstraction in problem-solving. Functions. Source code files. Program life cycle. Kinds of error. Unit testing. FOR loops. Vectors. The IF statement. Relational and logical operators. Matrices. Graphics. WHILE loops. File systems. Binary and ASCII files. Structures. Vectors of structures.

Networks and communication protocols. The World Wide Web.

Introduction to databases: the relational model, relations, some basic SQL queries.

Simulation of continuous models.