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

Carla Maria Gonçalves Ferreira


Weekly - 5

Total - 62

Teaching language



Available soon


  • 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

Assessment components

The assessment components are the following and have the weights on the final score that are shown:

  • T1 - Mid-term test 1 - 30%
  • T2 - Mid-term test 2 - 45%
  • PR - Programming project  - 20%
  • PA - Class participation - 5%
  • ER - Resit exam - 75%

Each of these elements is graded up to 20 points. 
The projects are carried out by groups of two students. There may be discussions of projects for some groups.

Grades of the practical and theoretical components

The grade of the practical component is defined as:

  • PRAT = PR

The grade of the theoretical component is defined in two different ways, depending on when the grade is obtained:

  • TEOR= (0.30*T1 + 0.45*T2) / 0.75
  • TEOR = ER


The "frequência" grade is the same as the practical component:


Final grade and Success

The final grade is calculated using the formula:

  • FINAL = 0.20 * FREQ + 0.75 * TEOR + 0.05 PA

Success depends on the following condition:

  • Success = FREQ >= 9.5 TEOR >= 9.5

All the intermediate grades are rounded to two decimal places. 
A final grade is an integer number.

The validity of the "frequência" obtained this year

The "frequência" grade obtained in the current school year will be valid in the next school year.

"Frequência" from previous year

A "frequência" grade obtained in the previous year is valid in the current school year. It is possible to improve the "frequência" grade.

Academic fraud

Any type of fraud in any component of the assessment causes the student to imediatelly fail to pass the course in the current academic year (even if there are exams 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).