Introduction to Programming



  • The meaning of the programming constructs included in the Java language fragment covered in the course.
  • How to build a small application, using the covered Java language fragment, and using the methodology defined in this course.
  • Know the components and basic tools of a software development environment (editor, compiler, etc) and their role.


  • 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 Java programming language
  • Correctly use, to the expected level, programming tools, as well as interpret their results (error messages, etc).
  • Develop as a team, a software development mini-project, using the skills acquired in this course.


  • 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

António Maria Lobo César Alarcão Ravara, Margarida Paula Neves Mamede


Weekly - 6

Total - 72

Teaching language





David J. Eck, Programming Using Java, Online book,, 2020.

Cay Horstmann, Java Concepts, 7th edition, Wiley, 2014.

Walter Savitch, Java: An Introduction to Computer Science and Programming, 7th edition, Prentice-Hall, 2014.

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 (values).

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 (Agrade) counts towards 1 final grade value, assigned if Mooshak accepts at least 75% of the number of proposed exercises, truncated to the units. For instance, if 7 exercises are proposed, since 0.75 x 7 = 5.25, the grade of the exercises will be:

  • Agrade = 0,   if the number of exercises accepted by Mooshak is < 5;

  • Agrade = 1,   if the number of exercises accepted by Mooshak is >= 5.

Every few weeks, students will address a challenge, also to be submitted on the Mooshak platform. The grade of these challenges (Dgrade) counts towards 1 final grade value, assigned if Mooshak accepts at least 65% of the number of challenges, truncated to the units. For instance, if there are 5 challenges, since 0.65 x 5 = 3.25, the grade of the challenges will be:

  • Dgrade = 0,   if the number of challenges accepted by Mooshak is < 3;

  • Dgrade = 1,   if the number of challenges accepted by Mooshak is >= 3.

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 + Agrade + Dgrade + 0.55 TPComp,   if TPComp >= 9.5 .

All grades (P1, P2, Pgrade, T1, T2, Ex, and TPComp) are rounded to the nearest tenth, 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. Structure of an application

7. User interaction (I/O)

8. Iteration constructs

9. File manipulation

10. Applications with several classes

11. Vectors and related algorithms

12. Sorting and searching

13. Basic software development principles


Programs where the course is taught: