General information


Subject type: Mandatory

Coordinator: Alfonso Palacios González

Trimester: First term

Credits: 4

Teaching staff: 

Catherine Juan Nadal

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

  • B5_That students have developed those learning skills necessary to undertake further studies with a high degree of autonomy

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

  • T2_That students have the ability to work as members of an interdisciplinary team either as one more member, or performing management tasks in order to contribute to developing projects with pragmatism and a sense of responsibility, making commitments taking into account the available resources

Description


The subject of Advanced Programming belongs to the subject of Programming. The topics covered in the course are designed to train students to learn, on the one hand in the use of different algorithm design techniques and on the other to make a dynamic management of memory and apply -la in the implementation of tree data structures.

To take this subject it is essential to have passed the subjects of the first year programming area: Fundamentals of Programming (FP), Object Oriented Programming (OOP) and Data Structures and Algorithms (EDA). 

Learning outcomes


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

  • Build correct and efficient algorithms for medium difficulty problems.
  • Implement algorithms in an imperative reference programming language for the intermediate level.
  • Identify the most appropriate algorithmic solutions to solve problems of medium difficulty.
  • 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 design applications.
  • Demonstrate knowledge and understanding of essential facts, concepts, principles and theories related to computer science and its reference disciplines.
  • Collaborate in a unidisciplinary environment. Identify the group's objectives and collaborate in the design of the strategy to be followed and a work plan to achieve them. Identify the responsibilities of each member of the group and assume the personal commitment of the assigned task. Evaluate and present own results. Identify the value of cooperation and exchange information with the other members of the group. Exchange information about the group's progress and propose strategies to improve its operation.

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

  • LO1: Create and manipulate linked sequences.
  • LO2: Use linked sequences in the implementation of data structures.
  • LO3: Define and implement tree data structures.
  • LO4: Decide and argue which and / or which is the most appropriate data structure to solve a given problem.
  • LO5: List and explain the operating philosophy of the different design techniques.
  • LO6: Compare the different design techniques from the point of view of efficiency.
  • LO7: Apply the different algorithm design techniques in solving problems.
  • LO8: Analyze a problem to be able to determine which technique is appropriate for solving it.
  • LO9: Deduce and argue the correct application of the different techniques.
  • LO10: Have a first contact with another programming language.
  • LO11: Encode and debug programs using the object-oriented programming paradigm.

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 student, good and never to the detriment of the numerical grade calculated according to the indicated grading system.

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.- DYNAMIC VARIABLE

  • Dynamic variable
  • Dynamic memory management
  • Linked sequences

2.- DATA STRUCTURES. THE TREES

  • Unstructured data types
  • Binary trees
  • Tree paths: unordered, preordered, postordered and wide
  • The TAD Binary Search Tree (CBA)

3.- ALGORISM DESIGN TECHNIQUES

  • Introduction to algorithmic schemes
  • Divide and conquer technique
  • Dynamic programming technique
  • Voracious technique
  • Backtracking technique

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 (practices and exams) will be carried out. The internships must be done in a group of two students. 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 must code an object-oriented class design.

The aim of the practice is twofold, on the one hand to refresh the concepts of OOP worked on in previous subjects and on the other to learn a new programming language (the most basic elements).

Language learning will be with a certain degree of autonomy. From a document delivered by the teacher which indicates the main differences between the language used until then in the previous programming subjects and, the explanations and clarifications by the teacher, of the parts that may be more complex and may create more difficulty for students, the student should exercise and develop their autonomous learning skills. With this activity, the student will demonstrate a capacity for self-learning of the new language using it in the requested coding, always valuing the selection of the most suitable basic algorithmic procedures in each case.

Students must complete the coding in the hours devoted to autonomous learning the entire design.

Completion of this activity contributes to the achievement of learning outcomes RA10 and RA11.

 

PRACTICE 2

This practice is specifically designed for students to practice dynamic memory management, creating and managing linked sequences.

They will work on more concepts with the new language (more complex elements) and will also practice the first content worked on in the subject.

The teacher will make available to students documentation with the concepts to be incorporated, concepts already known to the student of the previous programming subjects, but which have now been implemented using the new programming language. It will be important to emphasize the existence of new elements that the language known to them does not offer. It is necessary to make the student aware that not all languages ​​offer the same thing and that depending on the application to be developed it is more or less appropriate to use one or the other language.

Students must complete the coding in the hours devoted to autonomous learning the entire design.

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

 

PRACTICE 3

This practice is specifically intended for students to practice implementing a nonlinear data structure using linked sequences. The data structure to be implemented must conform to a tree type modality.

The programming language will be chosen by the student, continue with the new language learned or with what they already know from previous subjects and which is used in theory classes.

Students must complete, in the hours dedicated to autonomous learning, the entire implementation of the data structure.

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

 

PRACTICE 4

In this practice, students will have to code another type of tree and accompany it with methods that make treatments, methods that will be implemented using the divide and conquer technique.

The students will have to finish, in the hours dedicated to the autonomous learning all the problems posed.

Completion of this activity contributes to the achievement of learning outcomes RA4, RA5, RA7, RA8 and RA9.

 

PRACTICE 5

In this practice, students will have to code, using the Backtracking technique and the Vorac technique, statements of medium magnitude.

In this activity, the analysis prior to implementation will be essential, so the teacher will provide a list of questions that the student must answer before making the coding, and that will help him make the right decisions in the use of techniques. The student should be aware of the importance of developing and defending arguments before solving problems within their area of ​​study.

The students will have to finish, in the hours dedicated to the autonomous learning the totality of the problem posed.

Completion of this activity contributes to the achievement of learning outcomes RA5, RA6, RA7, RA8 and RA9.

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 and communication skills)
  • CIN5 (application maintenance)
  • CIN6 (apply algorithmic procedures)
  • CIN8 (build applications robustly, securely and efficiently and the most appropriate programming languages)
  • EFB3 (understand and master the concepts of algorithms) i
  • EFB4 (use of computer programs)

Practical activities 3 and 4 also contribute to the achievement of the CIN7 competence (efficient use of data structures best suited to solving a problem)

WRITTEN TEST I

This activity will be personal and will evaluate the first two contents of the subject. This test evaluates the learning outcomes: RA1, RA2, RA3, RA4, RA10 and RA11.

WRITTEN TEST II

This one-person activity will evaluate the last content of the subject. This test evaluates the learning outcomes: RA5, RA6, RA7, RA8 and RA9.

 

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

  • CIN1 (software development)
  • CIN3 (effective work habits)
  • CIN5 (systems maintenance)
  • CIN6 (apply algorithmic procedures)
  • CIN7 (efficient use and design of data structures)
  • 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 competences assigned to the subject, these are covered especially with regard to the aspects that are explained:

  • B2: problem solving within their area of ​​study.
  • B5: development of learning skills necessary for further studies (autonomous access to documentation, effective work habits). Much more work is done in the development of practical activities 1 and 2 where the student must learn and use a different programming language than the one used in the subjects prior to it.

Finally, and with regard to the transversal competences associated with the subject:

 T1: (third language knowledge) this is worked from the documentary sources that the students have to consult, since all of them are in English.

T2: (group work) works in the activities of practices, that realize in groups of two students and in which they have to contribute and agree the solutions of these activities.

.

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 40%

WRITTEN TEST II 30%

PRACTICE 1 6%

PRACTICE 2 6%

PRACTICE 3 6%

PRACTICE 4 6%

PRACTICE 5 6%

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

To pass the course it is necessary that the student:

  • have completed at least one of the first two internships, and that the grade be greater than or equal to 4
  • have completed at least two of the last three internships, and that the grade for each is higher than or equal to 4

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

The previously indicated weighting only applies if the grade for each of the written tests is greater than or equal to 3,5. If not applied, the final grade is the lowest grade of the two written tests. The student must retake the part (s) with a grade lower than the minimum grade indicated.

La recovery it is only possible to recover the grade of the theoretical activities, WRITTEN TEST I and / or II, and as long as this new grade is not less than 3,5 the weighting described above will be applied limiting the maximum final grade of the subject to 7 (Notable).

 

REFERENCES


Basic

Juan Nadal, Lina. Programming: Class notes and exercises. Internal publication of TCM 2020,

Complementary

Martí Narciso, Yolanda Ortega, Alberto Verdejo. Data structures and algorithmic methods. Solved exercises. Ed. Ibergaceta Publications, SL Edition 2.

 

Lewis John, Chase Joseph. Data structures with Java. Design of structures and algorithms. Ed. Pearson EDUCATION,

Barnes David, Kölling Michael. Object-oriented programming with Java. Ed. Pearson EDUCATION,

Allen Weiss, Mark. Data structures in Java. Ed. Addison Wesley,