Informatics for Science and Engineering D



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 Manuel Corrêa Calvente Barahona, Teresa Isabel Lopes Romão


Weekly - 5

Total - 70

Teaching language



Available soon


Main Reference:

  • Theory Slides
  • Allen B. Downey. Think Python: How to Think Like a Computer Scientist (version 2.0.17).      (Versão PDF disponível em

Complementary References:
  • John V. Guttag. Introduction to Computation and Programming Using Python, MIT PRESS, 2016 (
  • Ernesto Costa. Programação em Python - Fundamentos e Resolução de Problemas, FCA, 2015

Teaching method

There are two hours of lectures, one hour of preparation for the lab exercises and a lab session of two 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.

The lab preparation classes will focus on the exercises students will work on the lab classes.

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

Evaluation method

Assessment Components

Assessment has two components: the laboratory component and the theoretical-practical component.

Laboratory Component

The laboratory component comprises two programming projects (TP1 and TP2), to be developed by groups of two students.

TP1 work is evaluated individually during the 1st test, which will include a group in which questions will be posed that evaluate the knowledge of the delivered solution, and whose classification will be conditioning the final grade attributed to the exercise, but not the test grade. The evaluation of TP2 work is done in a similar way, but during the 2nd test.

The laboratory component grade (LComp) is obtained through the following formula:

LComp = 0,4 * TP1 + 0,6 * TP2

In order to succeed (and to have access to the exam), it is required that:

LComp >= 8.0 .

Theoretical-Practical Component

The theoretical-practical component comprises two tests (during class weeks) or a exam (after class weeks). The tests and the exam are written, individual and closed-book.

The theoretical-practical component grade (TPComp) is the weighted mean of the test grades (T1 and T2) or the exam grade (Ex):

TPComp = 0.5 * T1 + 0.5 * T2   or   TPComp = Ex.

In order to succeed, it is required that:

TPComp >= 8.0.

Final Grade

The final grade (F), defined only if  LComp >= 8.0 , is:

  • F = TPComp,   if TPComp < 8.0;
  • F = 0.4 LComp + 0.6 TPComp,   if TPComp >= 8.0 .

All grades (EP1, EP2, TP, T1, T2, Ex, LComp, and TPComp) are rounded to the nearest tenth, except the final grade (F) which is rounded to the nearest whole number.

Subject matter

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

Fundamental Concepts of Programming examplified in Python:

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. Dictionaries.

Networks and communication protocols. The World Wide Web.

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

Simulation of continuous models.


Programs where the course is taught: