Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
CS
Profesorado
Responsable
- Gabriel Valiente Feruglio ( gabriel.valiente@upc.edu )
Horas semanales
Teoría
2
Problemas
2
Laboratorio
0
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Conocimientos
Habilidades
Competencias
Objetivos
-
Understand iterative algorithms and their implementation in a modern programming language, and apply them to solve problems.
Competencias relacionadas: C6, K3, K4, S7, S8, -
Understand recursive algorithms and their implementation in a modern programming language, and apply them to solve problems.
Competencias relacionadas: C6, K3, K4, S7, S8, -
Compare solutions regarding time and memory use and choose the most appropriate solution.
Competencias relacionadas: C6, K3, K4, S7, S8,
Contenidos
-
Introduction
Introduction. Recapitulation of Applied Programming 1. Introduction to Python. Functions, scoping, and abstraction. Structured types and mutability. -
Recursion
Recursion. Recursive design. Simple recursion. Multiple recursion. Tail recursion. Tail recursion elimination. Examples. -
Object-oriented programming
Introduction to object-oriented programming. Abstract data types, classes, and methods. Encapsulation, inheritance, shadowing. Examples. -
Algorithm analysis
Algorithm analysis. Cost in time and space. Worst, best, and average case. Asymptotic notation. Analysis of the cost of iterative algorithms. Analysis of the cost of recursive algorithms. Recurrences. Solution methods. Examples. -
Divide and conquer
Divide and conquer. Principles: partition into subproblems, recombination of solutions. Examples. -
Dynamic programming
Dynamic programming. Principles: partition into overlapping subproblems, memoization, tabulation. Top-down dynamic programming. Bottom-up dynamic programming. Examples.
Actividades
Actividad Acto evaluativo
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7.5h
Teoría
6h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
22.5h
Teoría
4h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
15h
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
15h
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7.5h
Teoría
6h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
22.5h
Mid-term exam
Semana: 7 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Final exam
Semana: 14 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Metodología docente
In the theoretical sessions, the lecturer will introduce algorithmic and programming concepts, combined with examples and problem-solving. In the problem-solving sessions, students will work on their own solving problems, under supervision and assistance of the lecturer.Método de evaluación
There will be two exams: a mid-term exam and a final exam. The grade will be the largest of the final exam grade and the average of the mid-term grade and the final exam grade.The students who do not pass the subject can take the reexamination exam. In this case, the final grade will be the one of this exam.
Bibliografía
Básico
-
Introduction to computation and programming using Python : with application to understanding data
- Guttag, John,
The MIT Press,
2021.
ISBN: 9780262363433
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/mlj5v5o4zf?db=nlebk
Complementario
-
Introduction to algorithms
- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein Clifford,
The MIT Press,
2022.
ISBN: 0262367505
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/lq2sgumirf?db=nlebk