General information


Subject type: Basic

Coordinator: Alfonso Palacios González

Trimester: First term

Credits: 6

Teaching staff: 

Catherine Juan Nadal
Enric Sesa Nogueras 
Enric Sesa Nogueras 

Skills


Basic skills
  • B2_That students know how to apply their knowledge to their job or vocation in a professional way and have the skills they demonstrate by developing and defending arguments and solving problems within their area of ​​study

Specific skills
  • EFB3_Ability to understand and master the basic concepts of discrete mathematics, logic, algorithms and computational complexity, and their application for solving engineering problems

  • EFB4_Basic knowledge of the use and programming of computers, operating systems, databases and computer programs with application in engineering

Transversal competences
  • T1_That students know a third language, which will be preferably English, with an adequate level of oral and written form, according to the needs of the graduates in each degree

Description


The subject of Fundamentals of Programming belongs to the subject of Programming and is the first in this area. The various topics covered in the course are designed to train students in learning the basics within the program. These concepts will be needed in the rest of the subjects within this same subject and also in later subjects within the degree.

 

 

Learning outcomes


At a general level, this subject contributes to the following learning outcomes specified for the subject to which it belongs (Algorithmic and

Programming)

  • Build correct and efficient algorithms for low difficulty problems.
  • Implement simple algorithms in an imperative reference programming language for the initial level.
  • Identify the most appropriate algorithmic solutions to solve low difficulty problems.
  • Reason about the correctness and efficiency of an algorithmic solution.
  • Design, write, test, debug, document, and maintain code in a high-level language to solve programming problems by applying algorithmic schemas and using data structures.
  • Use the tools of a software development environment to create and develop applications.
  • Apply basic techniques of modular decomposition of programs.
  • Demonstrate knowledge and understanding of essential facts, concepts, principles and theories related to computer science and its reference disciplines.

At a more specific level, at the end of the course the student must be able to:

  • LO1: Write simple programs that make use of sequential and / or conditional structures, coding them in an imperative and high-level programming language, testing and debugging them.
  • LO2: Write programs that use iterative structures, code them in an imperative and high-level programming language, test and debug them. The most appropriate algorithmic schemes must be selected.
  • LO3: Write programs that use the functional decomposition technique that allow them to be divided into simpler subproblems, coded in high-level imperative language, tested and debugged.
  • LO4: Write programs that use tables to store data, encode them in a high-level imperative language, test and debug them.

Working methodology


All the theoretical concepts of the subject will be exposed in theory classes (large groups). In these classes, and at the discretion of the teachers, exercises and problems of a more practical nature will also be solved. Likewise, and always at the discretion of the teachers, students may be asked to solve, individually or in groups, short problems and / or exercises. These activities, which due to their optional nature and brevity are not reflected in the list of activities, will serve the student as a tool for self-assessment of their achievement of the contents of the subject and may be used by the teacher. to make decisions about the final grade of the good student and that never to the detriment of the numerical grade calculated according to the grading system indicated above.

The more practical concepts and everything that can essentially be considered the practical application of the theoretical concepts will be worked on in small (laboratory) groups. In the sessions scheduled for this purpose, the appropriate tools will be given to solve the scheduled activities well and it is expected that these will be extended from a temporal point of view beyond the laboratory hours and that, consequently, students must complete them during the time of autonomous learning.

It will be made available to students activities of a completely optional nature that will help them prepare and prepare for those of a compulsory nature.

With regard to internship sessions in smaller spaces (such as laboratories, studios or sets), where appropriate, work will be carried out simultaneously in several spaces in order to ensure that the conditions established by the safety protocols are met.

Contents


1.- INTRODUCTION TO ALGORITHMICS AND THE PROGRAMMING

  • Algorithms and programs
  • Programming languages
  • Programming environment
  • Programming process
  • Anatomy of a simple program

2.- BASIC CONCEPTS OF IMPERATIVE PROGRAMMING

  • Variables and types
  • The assignment operator
  • Expressions and evaluation of expressions
  • Reading and writing
  • Forms of execution: sequential, conditional / alternative and iterative
  • Conditional Execution
  • Alternative Execution

3.- ITERATIVE STRUCTURES

  • Iterative execution
  • Basic iterative schemes: routes and searches

4.- PARAMETRIZATION

  • Procedures. Parameterization
  • Anatomy of a procedure
  • Functions. Types of functions

5.- THE TABLE TYPE

  • Structured tables and types
  • One-component variables and multi-component variables
  • Declaration, creation and filling in of tables
  • Fillings of tables with iterative structures
  • Tables as parameters
  • Two-dimensional tables
  • Declaration, creation and filling in of two-dimensional tables
  • Fillings of two-dimensional tables with iterative structures
  • Search schemes and routes in tables

Learning activities


Students are provided with a series of highly practical activities (short exercises, problems...) that form the basis of the subject's learning activities. The students will have to solve these activities, often off-site, following the teachers' instructions and they will also be worked on in class, either as examples in the theory sessions or in the laboratory sessions. Although these activities will be optional (the teachers will not individually verify their completion by the students), they will be essential to achieve the theoretical-practical knowledge of the subject.

In order to gather evidence of the achievement of the expected learning outcomes, the following activities of an evaluative nature will be carried out (five practices and two exams).

The internships can be done individually or in groups of two students. In the latter case, the qualification of the two members of the group does not necessarily have to be the same, the degree of participation of each of them in the preparation of each of the practices will be taken into account.

PRACTICE 1

In this practice, students have a first contact with the program development environment that they will have to use in all the practices and activities of the subject that are related to the programming.

In the first part, it is the teacher who makes the presentation of the environment, showing them those elements that will be most useful to them.

In the second part, the student is faced with solving various problems such as:

  • finish coding some incomplete simple programs
  • fully encode some very simple problem solving programs
  • detection and correction of syntactic and logical errors in small supplied programs

In this first activity, students learn to use the most basic options of a computer program, specifically a programming environment, which through a programming language will allow them to codify the problems requested in the practice and activity sessions. of the subject. As well as advancing the subject the student will learn more functions of the computer program, deepening in the necessary parts to develop the temario of the asignatura. The student must understand and comprehend the entire programming process that takes place when using a programming environment.

The programming environment is already installed on the computers in the laboratories, so students will use it directly without any installation, but they are asked to install it on their computers to be able to work on the different activities outside the laboratory. The installation leads them to select different options (operating system, versions, ..) linked to the computer where the installation is done.

Completion of this activity contributes to the achievement of the learning outcome RA1.

PRACTICE 2

This practice is specifically intended for students to practice coding and debugging programs of a conditional and iterative nature and that can be designed by applying the basic iterative schemes presented in the theory class. The student and students face the solution of several problems where the concepts of theory worked until then must be applied, deepening mainly to the necessary algorithmic logic in the writing of the conditions and conditional structures. Students must apply different conditional structures, using the most appropriate in each case, always becoming aware of the importance of the algorithmic efficiency factor.

In each practice, some more functions of the programming environment are incorporated, the student must become aware of the magnitude and possibilities of the tool used and use them when the demand fits.

The problems that have been solved will have been made available to the students prior to the realization of the laboratory session, with the double objective, that they know the problems that will be treated and that they have begun to design the solutions.

Completion of this activity contributes to the achievement of learning outcomes RA1 and RA2. 

PRACTICE 3

This practice is specifically intended for students to practice the coding and debugging of slightly more complex programs than those of the two previous practices, using functional decomposition techniques that allow to decompose a problem into simpler subproblems, the solution which can be coded with the help of parameterized procedures.

The student is faced with the solution of various problems where the concepts of theory worked until then must be applied, deepening mainly to the algorithmic logic necessary in the writing of iterative structures. Students will be helped by the algorithmic schemes worked on in theory class that guarantee them to make correct and more efficient implementations.

The problems to be solved will have been made available to students prior to the laboratory session, with the dual purpose, that they know the problems that will be addressed and have begun to design solutions. .

Completion of this activity contributes to the achievement of learning outcomes RA1, RA2 and RA3. 

PRACTICE 4

In this practice, students will have to codify and debug programs that, potentially, may require all the tools and mechanisms worked on in the theoretical contents worked on until then (basic concepts of imperative programming). Thus, the nature of this practice can be a synthesis of the previous ones and / or emphasize the last theoretical aspects seen in class and that have not yet been worked on in their practical aspect. The student, with the resolution of the exercises of this activity, will become aware of the importance of reusing the code, write it once and use it as many times as you want.

The problems to be solved will have been made available to students prior to the laboratory session, with the dual purpose, that they know the problems that will be addressed and have begun to design solutions. .

Completion of this activity contributes to the achievement of learning outcomes RA1, RA2 and RA3. 

PRACTICE 5

In this practice, students must codify and debug programs that, potentially, may require in addition to all the tools and mechanisms worked on in previous practices, the last content of the subject, the tables. The student, with the resolution of the exercises of this activity, will work with data warehouses that allow him by means of the use of the algorithmic schemes worked in theory, do treatments of the data of the table of iterative form.

The problems to be solved will have been made available to students prior to the laboratory session, with the dual purpose, that they know the problems that will be addressed and have begun to design solutions. .

Completion of this activity contributes to the achievement of learning outcomes RA1, RA2, RA3 and RA4. 

At the competence level, the five practices, which will mostly have to be developed in non-contact time, cover the following common and specific competences of the subject (in brackets the most relevant aspects of each competence to which it contributes):

  • CIN1 (software development)
  • CIN3 (effective work habits in software development environments)
  • CIN6 (apply algorithmic procedures)
  • EFB3 (understand and master the concepts of algorithms) i
  • EFB4 (use of computer programs)

 

WRITTEN TEST I

This activity will evaluate individually the first three or four contents of the subject. It will evaluate the learning outcomes RA1, RA2 and RA3. The latter result will or will not be evaluated in this activity depending on whether or not enough work has been done on the date set for this activity.

WRITTEN TEST II

This second written test will evaluate all the contents of the subject. Thus evaluating all the learning outcomes of the subject: RA1, RA2, RA3 and RA4. As this activity also assesses the first two results, if the student does not pass the written test I, only this written test II will be considered.

At the competence level, these two tests cover the following common and specific competencies of the subject:

  • CIN1 (software development)
  • CIN6 (apply algorithmic procedures)
  • EFB3 (understand and master the concepts of algorithms and their application to problem solving)

In order to pass (pass) the assessment activities, students will have to demonstrate

  • That they have acquired the theoretical knowledge related to the contents of the subject and that their understanding allows them to put them into practice [MECES-2 point a, point c]
  • That they can develop solutions to problems that, although they are similar to others seen above, present aspects that are new [MECES-2 point f]

In relation to the basic competence assigned to the subject, this is covered especially with regard to the aspects that are explained:

  • B2: problem solving within their area of ​​study.

Finally, and with regard to the transversal competence associated with the subject (T1: third language knowledge), this is worked on from the documentary sources that students must consult, since all of them are in English.

 

Rules for carrying out the activities

For each activity, teachers will be informed of the particular rules and conditions that govern them.

One-on-one activities presuppose the student's commitment to carry them out individually. All activities in which the student does not comply with this commitment will be considered suspended, regardless of their role (origin or destination).

Likewise, the activities to be carried out in groups presuppose the commitment on the part of the students who make it up to carry them out within the group. All activities in which the group has not respected this commitment regardless of its role (origin or destination) will be considered suspended.

In group activities, the teacher can, based on the information available, customize the grade for each member of the group.

Any undelivered activity will be considered scored with zero points.

It is optional for teachers to accept or not deliveries outside the deadlines indicated. In the event that these late deliveries are accepted, it is up to the teacher to decide whether to apply a penalty and the amount thereof.

Evaluation system


The final grade is the weighted sum of the grades for the following activities:

WEIGHT ACTIVITY

WRITTEN TEST I 15%

WRITTEN TEST II 50%

PRACTICE 1 5%

PRACTICE 2 6%

PRACTICE 3 6%

PRACTICE 4 8%

PRACTICE 5 10%

With the above weights, laboratory (practical) activities have a weight of 35%, theoretical activities have a weight of 65%.

To pass the subject, it is necessary that the student has completed a minimum of three practicals and that the last two have a minimum rating of 4.

If these premises are not given, the subject will be suspended and in this case without the possibility of recovering it.

If the qualification of the WRITTEN TEST II has a qualification inferior to 4 the final qualification of the asignatura will be the one of this activity. The subject will be suspended, with the possibility of recovery.

In case it was favorable for the student, the weighting 15% + 50% of the two written tests could be changed to 0% + 65%.

The recovery only makes it possible to recover the qualification of the theoretical activities, WRITTEN TEST I and II, and as long as this new qualification is not less than 4, the same weighting described above will be applied. Otherwise the subject will not be considered recovered.

REFERENCES


Basic

Sesa Nogueras, Enric (2010). Programming: Class notes and exercises. Internal publication of the EUPM.

Juan Nadal, Lina. Programming: Class notes and exercises. Internal publication of the ESUPT.