ECTS credits ECTS credits: 6
ECTS Hours Rules/Memories Hours of tutorials: 1 Expository Class: 30 Interactive Classroom: 20 Total: 51
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 aim of this subject is to introduce students to the approach to more complex programming problems through a series of basic algorithmic strategies for solving these problems. The cost in computational resources of the different alternatives will be analysed, and, as paradigmatic cases, the main search and sorting algorithms and some of their applications will be described and characterised. Finally, training in non-linear data structures will be completed by considering the formalisation and resolution of problems using graphs.
Learning outcomes:
- Know how to solve problems of different types, understanding the complexity and suitability of the proposed solutions.
- Know the basic algorithmic strategies for the design of efficient algorithms.
- Know how to apply efficient algorithms to classical problems, such as sorting and searching.
- Know how to determine the spatial and temporal complexity of the different algorithms.
- Understand and master graph-like data structures and learn to design and apply algorithms on them to solve basic AI problems.
- Learn to design and apply algorithms on graphs to solve basic AI problems.
Block 1. Algorithmic techniques I
Topic 1. Brute force and recursion algorithmic techniques.
Block 2. Non-linear data structures: Trees and Graphs
Topic 2.1: Trees
Topic 2.2: Graphs I: Concepts and Definitions
Topic 2.3: Graphs II: algorithms
Block 3: Analysis of algorithms
Theme 3. Algorithm Analysis and Computational Complexity
Block 4: Algorithmic Techniques II
Topic 4.1. Hash tables
Topic 4.2. Divide and conquer
Topic 4.3. Greedy algorithms
Topic 4.4. Dynamic programming
Topic 4.5. Backtracking
Topic 4.6. Branch and bound.
Block 5. Searching and sorting
Topic 5. Searching and sorting algorithms
Basic Bibliography:
M.T. Goodrich, R. Tamassia, M.H. Goldwasser (2013). Data Structures and Algorithms in Python. John Wiley & Sons. ISBN: 978-1118290279.
K.A. Lambert (2014). Fundamentals of Python: Data Structures. Cengage Learning PTR. ISBN: 978-1285752006.
B.N. Miller, D.L. Ranum. (2011). Problem Solving with Algorithms and Data Structures using Python. Franklin, Beedle & Associates; 2nd edition ISBN: 978-1590282571.
Complementary Bibliography:
B. Agarwal, B. Baka (2018). Hands-On Data Structures and Algorithms with Python: Write complex and powerful code using the latest features of Python 3.7, 2nd Edition. Packt Publishing. ISBN: 978-1788995573.
B. Baka (2017). Python Data Structures and Algorithms: Improve application performance with graphs, stacks, and queues. Packt Publishing. ISBN: 978-1786467355
G. Brassard, P. Bratley. Fundamentos de algoritmia. 1ª edición. Madrid, Prentice Hall, 2002. ISBN: 84-89660-00-X (Biblioteca ETSE: A320 10 D)
The subject contributes to the development of the basic, general, and specific competences listed in the corresponding tables in the degree report:
* Basic Skills:
[BS2] Students should be able to apply their knowledge to their work or vocation in a professional manner and possess the skills that are usually demonstrated through the development and defence of arguments and problem solving within their field of study.
[BS4] Students should be able to convey information, ideas, problems and solutions to both specialist and non-specialist audiences.
[BS5] Students should have developed the learning skills necessary to undertake further studies with a high degree of autonomy.
* General Skills:
[GS1] Ability to conceive, write, organise, plan, and develop models, applications, and services in the field of artificial intelligence, identifying objectives, priorities, deadlines, resources, and risks, and controlling the established processes.
[GS2] Ability to solve problems with initiative, decision-making, autonomy, and creativity.
[GS3] Ability to design and create quality models and solutions based on artificial intelligence that are efficient, robust, transparent, and responsible.
[GS4] Ability to select and justify the appropriate methods and techniques to solve a specific problem, or to develop and propose new methods based on artificial intelligence.
* Specific skills:
[SS1] Ability to use the mathematical concepts and methods that may arise in the modelling, approach, and resolution of artificial intelligence problems.
[SS3] Ability to solve artificial intelligence problems requiring algorithms, from their design and implementation to their evaluation.
* Cross-curricular skills:
[CS2] Ability to work in a team, in interdisciplinary environments and managing conflicts.
[CS3] Ability to create new models and solutions autonomously and creatively, adapting to new situations. Initiative and entrepreneurial spirit.
[CS6] Ability to integrate legal, social, environmental, and economic aspects inherent to artificial intelligence, analysing its impacts and committing to the search for solutions compatible with sustainable development.
The methodology makes use of the Virtual Campus of USC. In the virtual classroom of the subject, the students will have all the information (theory material, class presentations, practice scripts, 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).
Students will be able to always follow their progress, as they will have the marks of the exercises and projects, which they must always hand in to follow the continuous assessment model.
The skills BS2, BS4, BS5, GS1, GS2, GS3, GS4, SS1, and SS3 have associated contents in the theoretical-practical part of the subject and are explicitly assessed in the tests carried out throughout the course.
Skill CS2 is worked on fundamentally in the aspect of organisational and planning skills, decision making, and problem solving, in the deliveries they have to make in practical classes.
Skill CS3 is worked on mainly by encouraging creativity, critical thinking, evaluating the different possibilities of solving problems, both in theory and in practice, proposing problems to develop these skills, with changing situations, and are evaluated in the qualification of the problem to be delivered.
Skill CS6 is assessed through the inclusion of legal, social, environmental, and economic aspects in the solutions proposed to the different exercises, as well as in the explanation of exercises during the development of the expository classes.
The development of the course is detailed below, with 2 hours of lectures and 2.5 interactive hours per week, although there may be small changes due to the course of the course, holidays, etc.
Week 1:
- Lecture 1. Presentation of the subject. Block 1: Algorithmic Techniques I. Exercises.
- Lecture 2. Block 2: Non-linear data structures: Trees and Graphs. AVL.
Week 2:
- Lecture 3. Block 2: Non-linear data structures: Trees and Graphs. Heaps.
- Lecture 4. Block 2: Non-linear data structures: Trees and Graphs. Exercises.
- Interactive 1. Practical 1: Trees.
Week 3:
- Lecture 5. Block 2: Non-linear data structures: Trees and Graphs. B-Trees.
- Lecture 6. Block 2: Non-linear data structures: Trees and graphs. Graphs I.
- Interactive 2: Practical 1: Trees.
Week 4:
- Expository 7. Block 2: Non-linear data structures: Trees and Graphs. Graphs I. Exercises.
- Lecture 8. Block 2: Non-linear data structures: Trees and Graphs. Graphs II.
- Interactive 3. Practical 1: Trees.
Week 5:
- Lecture 9. Block 2: Non-linear data structures: Trees and Graphs. Graphs II.
- Lecture 10. Block 2: Non-linear data structures: Trees and Graphs. Graphs II. Exercises.
- Interactive 4. Practical 2: Graphs.
Week 6:
- Lecture 11. Block 3: Analysis of algorithms.
- Expository 12. Block 3: Analysis of algorithms. Exercises.
- Interactive 5. Practice 2: Graphs.
Week 7:
- Expository 13. Block 4: Algorithmic techniques II: Hash. Exercises.
- Lecture 14. Block 4: Algorithmic techniques II: Divide and conquer. Greedy algorithms. Examples.
- Interactive 6. Practical 2: Graphs.
Week 8:
- Block 4: Algorithmic techniques II: Dynamic programming. Examples.
- Lecture 16. Block 4: Algorithmic techniques II: Backtracking.
- Interactive 7. Practical 2: Graphs.
Week 9:
- Lecture 17. Block 4: Algorithmic Techniques II: Backtracking. Exercises.
- Lecture 18. Block 4: Algorithmic Techniques II: Branching and Bound.
- Interactive 8. Practical 3: Algorithmic Techniques II
Week 10:
- Lecture 19. Block 4: Algorithmic Techniques II: Branching and Bound. Examples.
- Block 5: Sorting and searching. Examples.
- Interactive 9. Practical 3: Algorithmic Techniques II
Week 11:
- Interactive 10: Practical 4: Algorithmic Techniques II.
Week 12:
- Interactive 11: Practical 4: Algorithmic Techniques II.
Week 13:
- Interactive 12: Practical 4: Algorithmic Techniques II
The assessment consists of two separate individual parts, theory and practical, and both parts must be passed independently. In addition, it is necessary to pass all compulsory practicals and all tests and the theory test independently.
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 4 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 (10%): Trees (compulsory).
Practical 2 (10%): Graphs (evaluable as compulsory)
Practical 3 (10%): Algorithmic Techniques II (evaluable compulsory)
Practical 4 (10%): Algorithmic Techniques II (evaluable compulsory)
The 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 between the compulsory practicals.
It is used to assess the competences CB2, CG2, CG3, CE3, TR2 and TR3 by means of the periodical delivery of the practices proposed during the semester.
Theoretical part will be assessed in two parts and will correspond to 60% of the overall grade:
-10%: Completion of 3 compulsory tests throughout the term in the week following the end of the following (see timing in the Teaching methodology section): Block 2. Trees, Block 2. Graphs, Block 4. Algorithmic Techniques II. 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 as long as the previous condition is fulfilled, otherwise it will be the minimum grade of all of them.
-50%: Final exam
It is used to evaluate the competences CB4, CB5, CG1, CG4, CE1 and TR6 using different questions in the theory exam and the evaluation of the tests taken during the four-month period.
The final mark for the course will be calculated with the above weightings as long as a final mark of 5 points and a minimum mark of 4 points for each part (practical, tests, exam) is achieved. 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 the 1st of November will be associated with the consideration of PRESENTED in the grade of the subject, regardless of attendance at the final exam.
RECOVERY (2nd OPPORTUNITY)
This exam may be taken by students who did not pass any of the compulsory parts in the continuous assessment, or by those who opt directly for this option.
- Theory (60% of the final mark): it will be calculated from the marks of the parts passed and the marks of the parts failed in the 2nd opportunity (tests and/or final exam).
- Practical (40% of the final mark): it will be calculated from the marks of the approved practicals and the marks of the compulsory practicals failed in the 2nd opportunity by means of the resolution of new programming exercises to be handed in the day before the final exam.
In the event of fraudulent performance of exercises or tests, the provisions of the and subsequent modifications will apply.
In application of the ETSE regulations on plagiarism (approved by Xunta de Escola on 01/03/2012), the total or partial copying of any practical or theory exercise will result in failure in both opportunities of the course, with a grade 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
* Problem- or case-based learning in small groups: 30 hours
* Tuition: 1 hour
Total classroom time: 51 hours
STUDENT'S PERSONAL WORK:
* Autonomous study: 39 hours
* Writing exercises, papers, etc.: 15 hours
* Programming / testing in computer: 35 hours
* Evaluation of work, projects, exams: 10 hours
Total personal work time: 99 hours
Sufficient knowledge of Python programming language and the fundamentals of linear data structures, trees and 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 Visual Studio.
The subject will be taught in Spanish and Galician.
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
Victor Jose Gallego Fontenla
- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- Phone
- 881815520
- victorjose.gallego [at] usc.es
- Category
- Professor: Intern Assistant LOSU
Maria Del Carmen Magariños Iglesias
- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- mariadelcarmen.magarinos [at] usc.gal
- Category
- Professor: Intern Assistant LOSU
Monday | |||
---|---|---|---|
16:30-17:30 | Grupo /CLE_01 | Spanish | IA.11 |
Tuesday | |||
16:00-17:00 | Grupo /CLE_01 | Spanish | IA.11 |
17:00-19:30 | Grupo /CLIL_01 | Galician | IA.13 |
Wednesday | |||
17:30-20:00 | Grupo /CLIL_02 | Galician | IA.14 |
Thursday | |||
17:00-19:30 | Grupo /CLIL_03 | Galician | IA.14 |
01.12.2026 09:15-14:00 | Grupo /CLE_01 | IA.01 |
01.12.2026 09:15-14:00 | Grupo /CLIL_01 | IA.01 |
01.12.2026 09:15-14:00 | Grupo /CLIL_02 | IA.01 |
01.12.2026 09:15-14:00 | Grupo /CLIL_03 | IA.01 |
01.12.2026 09:15-14:00 | Grupo /CLE_01 | IA.02 |
01.12.2026 09:15-14:00 | Grupo /CLIL_01 | IA.02 |
01.12.2026 09:15-14:00 | Grupo /CLIL_02 | IA.02 |
01.12.2026 09:15-14:00 | Grupo /CLIL_03 | IA.02 |
06.23.2026 09:30-14:00 | Grupo /CLE_01 | IA.01 |
06.23.2026 09:30-14:00 | Grupo /CLIL_01 | IA.01 |
06.23.2026 09:30-14:00 | Grupo /CLIL_02 | IA.01 |
06.23.2026 09:30-14:00 | Grupo /CLIL_03 | IA.01 |