Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits
, però té capacitats prèvies
Departament
CS
Professorat
Responsable
- Gabriel Valiente Feruglio ( gabriel.valiente@upc.edu )
Hores setmanals
Teoria
2
Problemes
2
Laboratori
0
Aprenentatge dirigit
0
Aprenentatge autònom
6
Competències
Coneixements
Habilitats
Competències
Objectius
-
Comprendre els algorismes iteratius i la seva implementació en un llenguatge de programació modern i aplicar-los per resoldre problemes.
Competències relacionades: C6, K3, K4, S7, S8, -
Comprendre els algorismes recursius i la seva implementació en un llenguatge de programació modern i aplicar-los per resoldre problemes.
Competències relacionades: C6, K3, K4, S7, S8, -
Comparar solucions pel que fa al temps i l'ús de memòria i triar la solució més adequada.
Competències relacionades: C6, K3, K4, S7, S8,
Continguts
-
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.
Activitats
Activitat Acte avaluatiu
Teoria
4h
Problemes
4h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
7.5h
Teoria
6h
Problemes
6h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
22.5h
Teoria
4h
Problemes
6h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
15h
Teoria
4h
Problemes
4h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
15h
Teoria
2h
Problemes
4h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
7.5h
Teoria
6h
Problemes
6h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
22.5h
Examen parcial
Setmana: 7 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Examen final
Setmana: 14 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Metodologia docent
A les sessions teòriques, el professor introduirà conceptes algorísmics i de programació, combinats amb exemples i resolució de problemes. En les sessions de resolució de problemes, els estudiants treballaran la seva pròpia resolució de problemes, sota la supervisió i assistència del professor.Mètode d'avaluació
Hi haurà dos exàmens: un examen parcial i un examen final. La nota serà la més gran de la nota de l'examen final i la mitjana de la nota de l'examen parcial i la nota de l'examen final.Els estudiants que suspenen l'assignatura poden fer l'examen de reavaluació. En aquest cas, la nota de l'assignatura serà la nota de l'examen de reavaluació.
Bibliografia
Bàsic
-
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
Complementari
-
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