Introductory Programming for Science and Engineering


Knowledge: The meaning of the programming constructs included in the Python language fragment covered in the course; How to build a small application, using the covered Python language fragment, and using the methodology defined in this course; Know the components and basic tools of a software development environment and their role.

Know-how: Develop well-organized, small-sized, programs, following a given set of standards; Project and write correctly simple algorithms; Read and explain/mentally simulate the functionality of code fragments written in the Python programming language; Correctly use, to the expected level, programming tools, as well as interpret their results; Develop as a team, a software development mini-project, using the skills acquired in this course.

Soft-Skills: Develop disciplined work and deadline meeting skills; Develop a concern with rigour and the systematic execution of work plans, following previously defined methods; Develop team work skills.

General characterization





Responsible teacher

Artur Miguel de Andrade Vieira Dias, Carla Maria Gonçalves Ferreira


Weekly - 5

Total - 67

Teaching language



Available soon


- Python Distilled, Dave Beazley, Addison-Wesley Professional, 2021.

- Think Python, Allen B. Downey, 2nd edition, O’Reilly, 2015.

- Fundamentals of Python: First Programs, Kenneth A. Lambert, 1st Edition, 2011.

Teaching method

This course has a strong applied component and the final grade depends entirely on the ability to solve practical programming problems using the Python language.
In the lectures, the fundamental concepts of the course are transmitted, exemplified and discussed.
In the lab classes, the students solve small problems, applying the concepts and techniques learned. Some of these problems will be available in an automatic program evaluation system (Mooshak).
The final project is partially developed in the lab classes and partially outside classes. The final project is important because it should help to settle all that has been learned during the course and gain practice in solving programming problems.

Evaluation method

Elements of assessment

The evaluation elements are as follows, with the weights in the final grade indicated:

  • T1- Test 1
  • T2- Test 2
  • PR- Project
  • ER - Appeal exam

Each of these elements is graded up to 20 points, with the score rounded to two decimal places.

Tests and exams are written, closed-book, and done individually in person. Electronic devices are not allowed.

The project is carried out by groups of two students. There may be discussions of some projects for some groups.

The project calendar can be found on the course web page and in the "events" of CLIP.

Grade of the theoretical-practical component

The grade for the theoretical-practical component (CompTP) has a weight of 80% of the final grade and can reach a maximum value of 20 points.

The CompTP score is defined in three different ways, depending on the situation:

  • CompTP= (T1+T2)/2    (in case of pure continuous evaluation)
  • CompTP= ER                (for students not approved in the continuous evaluation)
  • CompTP = max((T1+T2)/2, ER)   (continuous assessment + attempt to improve grade)

Grade of the laboratory component and "frequência"

The grade for the laboratory component (CompLab) has a weight of 20% of the final grade and can reach a maximum value of 20 points.

The CompLab grade is simply defined as the project grade:

  • CompLab = PR

To obtain "frequência", it is necessary and sufficient that CompLab >= 9.5.

Final grade and approval

Students'' final grade is calculated as follows (being rounded to the nearest integer):

  • FINAL = 0.8 * CompTP + 0.2 * CompLab

Approval in the course is determined by the following condition:

  • APPROVAL = CompTP >= 9.5 e CompLab >= 9.5

Validity of attendance obtained this year

The "frequência" obtained in the current academic year will be valid in the next academic year, at least.

"Frequências" from previous years

The "frequência" obtained in the previous academic year is valid in the current academic year (and this grade is also allowed to be improved by doing the current year''s project). Older "frequências" are not valid.


Any type of fraud in any assessment element implies the impossibility of finishing the course in the current academic year (even if exams are scheduled).

Subject matter

1. Introduction to programming languages; 2. Python basics; 3. Variables and data types; 4. Code readability; 5. Programming methodologies; 6. Control structures; 7. Repetition structures; 8. Functions and modules; 9. Strings; 10. Reading and writing data in persistent storage; 11. Basic data structures: arrays, lists, dictionaries, tuples; 12. Basic algorithms: sorting and dichotomic search, dictionaries traversals; 13. Programming structure and design; 14: Libraries for data handling and visualization. 15. Selectiom of fundamental scientific algorithms relevant for the area of the program (physics, biology, etc).