ECTS credits ECTS credits: 6
ECTS Hours Rules/Memories Student's work ECTS: 97 Hours of tutorials: 3 Expository Class: 20 Interactive Classroom: 30 Total: 150
Use languages Spanish, Galician
Type: Ordinary Degree Subject RD 1393/2007 - 822/2021
Departments: Electronics and Computing
Areas: Computer Science and Artificial Intelligence
Center Higher Technical Engineering School
Call: First Semester
Teaching: With teaching
Enrolment: Enrollable
The training objective of this subject is to develop the necessary skills for the student to be able to assess the computational complexity of a given algorithm and develop the skills to choose the most appropriate combination of data structures and resolution strategy to solve efficiently (in terms of space and time resources) a particular problem. In addition, this subject completes the student training in data structures presenting nonlinear data structures and their use to represent and solve complex problems.
Item 1. Problem solving: algorithms + data structures
Item 2. Nonlinear data structures: Trees
* Basic concepts and properties
* Search Trees
* Balanced Search Trees
* Applications
Item 3. Nonlinear data structures: graphs
* Basic concepts and properties
* Fundamental graph algorithms
* Applications
Item 4. Hash tables
Item 5. Algorithmic strategies
* Divide and conquer
* Greedy algorithms
* Dynamic programming
* Backtracking
* Branch and bound
Basic Bibliography:
HEILEMAN, G.L. Estructuras de Datos, Algoritmos y Programación Orientada a Objetos. Madrid: McGraw-Hill, 2001. ISBN 84-481-1173-7.
JOYANES AGUILAR, L., ZAHONERO MARTÍNEZ, I. Algoritmos y Estructuras de Datos: Una perspectiva en C. Madrid: McGraw-Hill, 2010. ISBN 9788448140779.
JOYANES AGUILAR, L. et al. Estructura de Datos. Libro de Problemas. Madrid: McGraw-Hill, 1999. ISBN 84-481-2298-4.
Complementary Bibliography:
BOWMAN, C.F. Algoritmos y Estructuras de Datos. Aproximación en C. Oxford University Press, 2001. ISBN: 978-9706134592.
CAIRÓ, O., GUARDATI BUERMO, S. Estructuras de Datos. México: McGraw-Hill, 2006. ISBN 970-10-3534-8.
MARTÍ OLIET, Narciso, ORTEGA MALLÉN, Yolanda, VERDEJO LÓPEZ, José A.: Estructuras de Datos y Métodos Algorítmicos. Ejercicios resueltos. 2ª edición: 213 ejercicios resueltos. Ibergarceta Publicaciones S.L., 2013. ISBN 978-8415452652.
This subject helps to achieve the following competences, gathered in the description of the Degree in Computer Engineering from the USC, for the module Programming:
- Ability to develop programs with a good programming style, documentation and the appropriate comments.
- Ability to calculate the computational complexity of an algorithm and evaluate the most appropriate implementation of a given algorithm in accordance to the available resources (memory and runtime).
- Use of editing, compiling and executing tools for program development. Ability to implement strategies for the debugging, testing and correction of programs.
- Ability to choose the most correct and efficient data structure to solve a problem.
- Ability to manage different levels of abstraction to structure the software to develop.
- Ability to design algorithms with a certain complexity and deploy applications using the principles of structured and modular programming.
- Ability to understand the concepts related to algorithm development.
- Ability to use error management, exception handling and fault tolerance tools.
- Use of software repositories.
- Motivation and self-learning ability.
- Self-esteem and self-improvement.
In addition, the subject contributes to the development of general and specific skills contained in the relevant tables in the report previously referred to:
* General Skills:
CG1: Ability to develop projects in the field of computer engineering whose purpose, according to the acquired knowledge, is the design, development or exploitation of computer systems, services and applications.
CG3: Ability to design, develop, assess and ensure the usability of computer systems, services and applications, as well as the information that they manage.
CG8: Knowledge of the basic topics and technologies that enable the learning and development of new methods and technologies, as well as those which equip them with great versatility to adapt to new situations.
CG9: Ability to solve problems with initiative, decision making, autonomy and creativity. Ability to communicate and transmit the knowledge, skills, and abilities of the profession in Computer Engineering.
* Cross-curricular skills:
TR1 (Instrumental): Capacity for analysis and synthesis. Ability to organize and plan. Oral and written communication. Ability to manage information. Troubleshooting. Decision making.
TR2 (Personal): Teamwork. Interpersonal relationship skills. Critical thinking.
TR3 (Systemic): Autonomous learning. Adapting to new situations. Creativity. Initiative. Motivation for quality.
* Basic Training:
FB3: Ability to understand and master the basic concepts of algorithmic and computational complexity, and their application for solving problems in engineering.
FB4: Basic knowledge of the using and programming of computers.
FB5: Knowledge of the fundamentals of computer systems programming and their application for solving problems in engineering.
* Common to the branch of Computer Science:
RI6: Knowledge and application of basic algorithmic procedures of computer technology to design solutions to problems, analysing the suitability and complexity of the proposed algorithms.
RI7: Knowledge, design and efficient use of the data types and structures more suited to solving a problem.
The methodology makes use of the Virtual Campus of USC. On the website of the subject, the student will have all the information (material for theory lessons, class slides, practice sessions scripts, TADs libraries, etc.).
Theoretical lectures (20 hours) will be given in 1-hour sessions throughout the course. There will be a weekly session of two and a half hours of practical work (problem solving, programming).
The students may at any time check their progression, since the marks for exercises and projects to be delivered, following the model of continuous assessment, will be provided on a regular basis.
The skills of type FB3, FB4, FB5, RI6, RI7, CG1, CG3, and CG9 CG8, and the indicated module programming content partners, have the theoretical and practical part of the course and are evaluated explicitly in tests that are performed throughout the course.
The skills of type TR1 are mainly working in the appearance of organizational capacity and planning, decision making, and problem solving in the deliveries they have to perform in practical classes.
Skills of TR2 type work mainly include critical thinking, evaluating the different possibilities to solve problems, both in theory and in practice.
TR3 group creativity skills, adapting to new situations, and motivation for quality, particularly in practical classes where these skills are developed to address problems with changing situations, are proposed and evaluated in qualifying the work, which is mainly focused on the problem at hand.
The development of the course is detailed below, with 2 hours of lectures per week and 2.5 hours of interactive activities per week, although there may be small changes due to the course, holidays, etc.
Week 1:
- Lecture 1. Presentation of the subject. Topic 1: Introduction.
- Lecture 2. Topic 2: Trees.
Week 2:
- Lecture 3. Topic 2: Trees. Exercises.
- Expository 4. Topic 3: Structures for search.
- Interactive 1. Practical 1: Binary trees
Week 3:
- Lecture 5. Topic 3: Exercises.
- Lecture 6. Topic 4: AVL Trees
- Interactive 2: Practice 2: Expression trees.
Week 4:
- Expository 7. Topic 4: Exercises
- Lecture 8. Topic 5: B and B+ Trees
- Interactive 3. Practice 3: Binary search trees.
Week 5:
- Lecture 9. Topic 5: Exercises
- Lecture 10. Topic 6: Graphs I: Basic Concepts.
- Interactive 4. Practical 3: Binary search trees
Week 6:
- Lecture 11. Topic 6: Graphs I: Basic Concepts. Exercises.
- Lecture 12. Topic 7: Graphs II: algorithms.
- Interactive 5. Practical 3: Binary search trees
Week 7:
- Lecture 13. Topic 7: Graphs II: algorithms. Exercises.
- Lecture 14. Topic 7: Graphs II: algorithms. Exercises.
- Interactive 6. Practical 4: Graphs.
Week 8:
- Lecture 15. Topic 8: Hash tables.
- Lecture 16. Topic 8: Hash tables. Exercises.
- Interactive 7. Practice 4: Graphs
Week 9:
- Expository 17. Topic 9: Algorithmic strategies.
- Lecture 18. Topic 9: Algorithmic strategies. Exercises.
- Interactive 8. Practical 4: Graphs
Week 10:
- Lecture 19. Topic 9: Algorithmic Strategies.
- Expository 10. Topic 9: Algorithmic strategies. Exercises.
- Interactive 9. Practical 5: Hash
Week 11:
- Interactive 10: Practical 5: Hash
Week 12:
- Interactive 11: Practice 6: Algorithmic strategies.
Week 13:
- Interactive 12: Practice 6: Algorithmic Strategies
The assessment consists of two separate individual parts, theory and practice, and it is necessary to pass both parts independently. It will be mandatory to pass all practice modules and all theory tests.
The practical part of the course will be assessed through a process of CONTINUOUS ASSESSMENT and will account for 40% of the overall mark. This will consist of the delivery of 6 practical projects during the four-month period, with deadlines and delivery/correction rules set by the teaching staff, which will be published on the virtual campus (see timing in the Teaching methodology section). The weighting of these practicals is as follows:
Practical 1 (1%): Binary trees (assessable but not compulsory).
Practical 2 (3%): Expression trees (assessable but not compulsory).
Practice 3 (13%): Binary search trees (evaluable compulsory)
Practical 4 (12%): Graphs (evaluable compulsory)
Practical 5 (5%): Hash tables (evaluable compulsory)
Practical 6 (6%): Algorithmic strategies (evaluable compulsory)
The weighted average of this block will be calculated provided that a minimum mark of 4 out of 10 is achieved in each compulsory practical. Otherwise, the final mark for this block will be the minimum value of the compulsory practicals.
It is used to evaluate the CG1, CG3, CG8, CG9, TR1, TR3, FB4, FB5, RI6, and RI7 skills, in addition to the programming module, by periodically delivering practical proposals during the semester.
Theoretical part will be assessed in two parts and will correspond to 60% of the overall grade:
-10%: Completion of 4 or 5 compulsory tests throughout the term during the practice session of each group in the week following the completion of each of the following subjects (see timing in the section Teaching methodology): Topic 2, Topic 3, Topics 4+5, Topic 6, Topics 8+9. These tests will be marked out of 5 points, and a minimum of 3 points will be required to pass them. The grade for this part will be the average of all the tests, provided that the above condition is fulfilled. Otherwise, it will be the minimum grade for all of them.
-50%: Final exam
It is used to evaluate CG8, CG9, TR2, FB3, FB4, FB5, RI6, and RI7 skills, plus those specified in the programming module, using different questions in the theory test and evaluation exercises that are delivered during the semester.
The final mark for the course will be calculated with the above weightings provided that a final mark of 5 points is achieved and a minimum mark for each part (practical, tests, exam) of 4 points is obtained. If the 5 points are not reached, the grade will be the minimum value of the 3 parts.
The delivery of any work (project or exercise) after November 1st will imply a qualification of PRESENTED in the final qualification, regardless of attendance or not to the final exam.
RESIT OR 2nd OPPORTUNITY (JULY)
This exam may be taken by students who did not pass any of the compulsory parts of the continuous assessment, or by those who choose this option directly.
- Theory (60% of the final grade): the grade resulting from the parts passed, the repetition of tests not passed, and the final written exam will be calculated.
- Practice (40% of the final mark): the qualification resulting from the parts passed and the completion of compulsory practices not passed will be calculated by means of a proposal of programming exercises to be handed in on the day before the final exam
For repeating students: Only the results of the theoretical or practical assessment that have been passed (grade higher than 6 out of 10) in the immediately preceding year will be retained. Otherwise, the entire subject must be repeated.
In the event of fraudulent performance of exercises or tests, the provisions of the Regulations on the evaluation of students' academic performance and the review of grades and subsequent modifications shall apply.
In application of the standard for authorship of practical work approved by the ETSE (Xunta de Escola 01/03/2012), the total or partial copying of any practical or theoretical exercise will result in a failure in both assessment opportunities (January and July), with a mark of 0,0 in both cases.
This subject has 6 ECTS credits, corresponding to a total workload of 150 hours. This time can be broken down into the following sections:
ON-SITE WORK (IN THE CLASSROOM):
* Lectures: 20 hours
* Programming sessions in small groups: 30 hours
* Assessment activities: 5 hours
Total classroom time: 55 hours
STUDENT'S PERSONAL WORK:
* Autonomous study: 30 hours
* Writing exercises, papers, etc.: 15 hours
* Programming/testing in computer: 35 hours
* Evaluation of work, projects, exams: 15 hours
Total personal work time: 95 hours
Sufficient knowledge of C programming language and the fundamentals of graphs is assumed. These topics are dealt with in the subjects Programming I and II, and Discrete Mathematics, all of them corresponding to the first year.
It is recommended to follow the continuous assessment model, requiring that the student attends and follows the theoretical classes and the practical classes regularly, which does the subject more bearable.
It is also earnestly recommended that the student uses the tutorial hours to clarify any doubt that could arise in the development of the subject.
The USC Virtual Campus will be used for all teaching, publishing of the material, practice scripts, and delivery of work.
The operating system to use in practice sessions can be either Windows or Linux. Any IDE can be used, such as Netbeans, CLion, or Visual Studio.
The subject will be taught mainly in Spanish.
María José Carreira Nouche
Coordinador/a- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- Phone
- 881816431
- mariajose.carreira [at] usc.es
- Category
- Professor: University Professor
Maria Purificacion Cariñena Amigo
- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- Phone
- 881813563
- puri.carinena [at] usc.es
- Category
- Professor: Temporary PhD professor
Monday | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_03 | Spanish | Computer Room I5 |
09:00-11:30 | Grupo /CLIL_05 | Spanish | IA.12 |
Tuesday | |||
09:00-11:30 | Grupo /CLIL_04 | Spanish | Computer Room I5 |
Wednesday | |||
09:00-11:30 | Grupo /CLIL_01 | Spanish | Computer Room I4 |
16:00-17:00 | Grupo /CLE_01 | Spanish | Classroom A2 |
Thursday | |||
09:00-11:30 | Grupo /CLIL_02 | Spanish | Computer Classroom I3 |
16:00-17:00 | Grupo /CLE_01 | Spanish | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLIL_02 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLIL_05 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLE_01 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLIL_04 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLIL_01 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLIL_03 | Classroom A1 |
01.20.2026 10:00-14:00 | Grupo /CLIL_02 | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLIL_05 | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLE_01 | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLIL_04 | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLIL_01 | Classroom A2 |
01.20.2026 10:00-14:00 | Grupo /CLIL_03 | Classroom A2 |
06.19.2026 10:00-14:00 | Grupo /CLIL_02 | Classroom A3 |
06.19.2026 10:00-14:00 | Grupo /CLIL_05 | Classroom A3 |
06.19.2026 10:00-14:00 | Grupo /CLE_01 | Classroom A3 |
06.19.2026 10:00-14:00 | Grupo /CLIL_04 | Classroom A3 |
06.19.2026 10:00-14:00 | Grupo /CLIL_01 | Classroom A3 |
06.19.2026 10:00-14:00 | Grupo /CLIL_03 | Classroom A3 |