Introduction to Programming



Understand the programming constructs included in the Java language fragment covered in the course.

Know the components and basic tools of a software development environment (editor, compiler, etc) and their role.


Read and explain / mentally simulate the functionality of code fragments written in the Java programming language.

Design and implement correctly simple algorithms.

Build a small application, using the covered Java language fragment and the methodology defined in this course.

Develop well-organized small-sized programs, following a given set of standards.

Correctly use, to the expected level, programming tools and interpret their results (error messages, etc).

Do as a team a programming mini-project, using the skills acquired in the course.


Develop disciplined work and deadline meeting skills.

Develop a concern with rigour and the execution of work plans, following previously defined methods.

Develop team work skills.

General characterization





Responsible teacher

Artur Miguel de Andrade Vieira Dias, Margarida Paula Neves Mamede


Weekly - 6

Total - 72

Teaching language





David J. Eck, Introduction to Programming Using Java, 8th edition, Online book,, 2021.

Cay S. Horstmann, Java Concepts: Early Objects, 8th edition, Wiley, 2019.

Walter Savitch, Java: An Introduction to Problem Solving and Programming, 8th edition, Pearson, 2018.

Java 8 (API):

Teaching method

Teaching consists in lectures and exercice classes (in a laboratory). Lectures present the concepts, motivated by running examples used to illustrate and to let the students to apply the constructions.

In the labs, students solve consolidation exercices to practice with the concepts learned and used in the lectures.

In a mini-project the students develop a simple application, using most of the concepts learned in the classes. The project is developed also in class, allowing the teaching staff to address the student difficulties, as well as to provide support to better code organisation and quality.

Evaluation method

Assessment Components

Assessment has two components: the laboratory component and the theoretical-practical component. All assessment elements are graded between 0 and 20 points.

Laboratory Component

The laboratory component comprises two programming projects, some programming exercises, and some programming challenges. All these assignments will be delivered on the Mooshak platform. Mooshak is considered to accept a program if the program produces the correct results with the tests performed.

The first programming project is developed individually and the second programming project is done in teams of two students. In both projects, there may be an individual discussion, possibly in person, to assess the knowledge that each student has about the work he/she has delivered. A student''''s grade in a project depends on the work delivered and his/her performance in the discussion. Consequently, in the second project, the grades of the two team elements can be different.

The project grade (Pgrade) is the weighted mean of the student''''s grades in the two projects (P1 e P2):

Pgrade = (0.1 P1 + 0.25 P2) / 0.35 .

In order to succeed (and to have access to the exam), it is required that Pgrade >= 9.5 (out of 20).

In most hands-on classes, students must solve exercises and submit the corresponding programs on the Mooshak platform. The grade of these exercises (Egrade) counts towards 1 point of the final grade,  is proportional to the number of correct exercises (accepted by Mooshak) and is rounded to the nearest hundredth For example, if there are 7 exercises proposed and 5 are accepted by Mooshak, Egrade = 0.71 (because 5/7=0.714).

In many weeks, will address a challenge, also to be submitted on the Mooshak platform. The grade of these challenges (Dgrade) counts towards 1 point of the final grade, is proportional to the number of correct challenges (accepted by Mooshak) and is rounded to the nearest hundredth. For example, if there are 6 challenges and 4 are accepted by Mooshak, Dgrade = 0.67 (because 4/6=0.667).

Theoretical-Practical Component

The theoretical-practical component comprises two tests. If the weighted mean of the test grades is less than 9.5 and Pgrade >= 9.5, students can do a final exam. The tests and the exam are written, closed-book, and done individually in person. Electronic devices (e.g. calculators, mobile phones, tablets, smartwatches, and computers) are not allowed.

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

TPComp = (0.2 T1 + 0.35 T2)/0.55   or   TPComp = Ex.

In order to succeed, it is required that TPComp >= 9.5 (and Pgrade >= 9.5).

Final Grade

The final grade (F), defined only if Pgrade >= 9.5, is:

  • F = TPComp,   if TPComp < 9.5;

  • F = 0.35 Pgrade + Egrade + Dgrade + 0.55 TPComp,   if TPComp >= 9.5 .

All grades (Egrade, Dgrade, P1, P2, Pgrade, T1, T2, Ex, and TPComp) are rounded to the nearest hundredth, except the final grade (F) which is rounded to the nearest whole number.

Subject matter

1. Computers and programs

2. Objects and operations

3. Classes and basic data types

4. State manipulation

5. Decision constructs

6. User interaction (I/O)

7. Loops and introduction to recursion

8. Structure of an application

9. Vectors and related algorithms

10. Iterators

11. Sorting and searching

12. File manipulation

13. Matrices

14. Applications with several classes

15. Basic software development principles


Programs where the course is taught: