Aquesta assignatura (juntament amb l’assignatura de Estructures de dades) pretén donar uns conceptes de programació que ens serviran per complementar i ampliar els coneixements adquirits en l’assignatura Fonaments de programació, això implica que, és necessari haver adquirit les bases algorísmiques i de programació explicades en aquesta assignatura.
Es recomana haver cursat o està cursant Estructures de dades.
L’assignatura contribueix a adquirir un bon estil de programació (útil a l’hora de dissenyar aplicacions informàtiques dins del món professional).
Al llarg de l’assignatura s’estudia la correctesa i eficiència dels algorismes i s’aprenen noves tècniques i esquemes algorísmics (com ara, la recursivitat i les seves aplicacions). També, s’inclouen mètodes i tècniques bàsiques de la intel·ligència artificial.
Aquestes tècniques de programació han de servir per a què, davant d’un problema, es disposi dels mètodes adients per dissenyar algorismes i raonar sobre la seva correctesa i també eficiència (algorismes iteratius o recursius). Això vol dir, adquirir uns hàbits a l’hora de crear i valorar els algorismes: “ser metòdic i rigorós”.
• Reconèixer la importància de les tècniques formals i saber-les aplicar per a especificar i dissenyar algorismes.
• Conèixer el concepte d’eficiència i saber decidir entre algorismes funcionalment equivalents.
• Aprendre a dissenyar algorismes iteratius emprant les tècniques estudiades.
• Usar tècniques de disseny recursiu d’algorismes i saber trobar la seva aplicació en determinats dissenys.
• Raonar sobre la correctesa i eficiència d’una solució algorísmica.
• Resoldre problemes utilitzant diferents esquemes algorísmics.
• Conèixer diferents tècniques algorísmiques que puguin aplicar-se a un problema per tal de seleccionar, adaptar i implementar la que es consideri més adequada al problema.
• Conèixer els mètodes i tècniques bàsiques de la intel·ligència artificial.
• Adquirir pràctica en els punts anteriors mitjançant un llenguatge de programació.
Per tal d’assolir les competències i els objectius de l’assignatura s’anirà combinant els continguts teòrics amb la resolució de problemes i casos pràctics.
Els continguts teòrics de l’assignatura ens serviran de base per a plantejar els problemes i altres treballs pràctics que es proposaran a l’estudiant.
En les hores lectives es revisaran els continguts teòrics i es solucionaran problemes que en facilitaran la comprensió. En aquestes sessions, s’impulsarà la participació de l’estudiant, que haurà d’aportar el seu plantejament i discutir la solució als problemes o treballs pràctics.
Es recomana estudiar un mòdul i adquirir pràctica (disseny i implementació de nous algorismes). És molt important practicar de forma continuada al llarg del semestre per poder obtenir les capacitats requerides en l’assignatura.
Hi haurà treballs (TR) i pràctiques (PR) que s’han de lliurar al professor a través del campus de l’UdA (campus.uda.ad). Els treballs (TR) s’hauran de lliurar i les pràctiques (PR) s’hauran de lliurar i també defensar.
El campus esdevé l’eina bàsica de comunicació entre els estudiants i el professor fora de les hores lectives.
L'avaluació continuada contempla 3 exàmens presencials (ExAC), 2 pràctiques (PR) i 3 treballs opcionals (TR).
Per aprovar l’avaluació continuada cal obtenir una qualificació global d'avaluació continuada (QAC) >= 5.
La qualificació d’avaluació continuada està formada per:
• Una qualificació d’ exàmens, la mitjana d’aquests exàmens (QExAC) ha de ser >=4.
• Una qualificació de pràctiques, la mitjana d’aquestes pràctiques (QPR) ha de ser >=4.
• Una qualificació de treballs, la mitjana d’aquests treballs (QTR) permet millorar la qualificació global d’avaluació continuada (QAC).
La qualificació global d'avaluació continuada (QAC) serà:
• Màxim entre QExAC * 0,5 + QPR * 0,15 + QTR * 0,35; i QExAC * 0,85 + QPR * 0,15; Si QExAC >=4 i QPR >=4
On QExAC és la mitjana dels ExAC, QPR és la mitjana de les PR i QTR és la mitjana dels TR.
Si no s’aprova l'assignatura per avaluació continuada o s’opta per realitzar únicament l’avaluació final, hi ha la possibilitat de fer l’examen presencial final (ExF) sempre i quan s’hagin defensat prèviament les pràctiques.
L'avaluació final contempla 1 examen presencial final (ExF), 2 pràctiques (PR) i 3 treballs opcionals (TR).
Per aprovar l'assignatura cal obtenir una qualificació global de l'avaluació final (QAF) >= 5.
La qualificació d’’avaluació final està formada per:
• Una qualificació de l’ examen final (QExF) ha de ser >=4.
• Una qualificació de pràctiques, la mitjana d’aquestes pràctiques (QPR) ha de ser >=4.
• Una qualificació de treballs, la mitjana d’aquests treballs (QTR) permet millorar la qualificació global d’avaluació continuada (QAC).
La qualificació global de l'avaluació final (QAF) serà:
• NP; Si no es presenta a l’examen presencial final
• QExF; Si QExF<4
• Màxim entre QExF * 0,5 + QPR * 0,15 + QTR * 0,35; i QExF * 0,85 + QPR * 0,15; Si QExF >=4 i QPR >=4
On QExF és la qualificació de l’ExF, QPR és la mitjana de les PR i QTR és la mitjana dels TR.
Material del professor
Apunts format transparència dels continguts de l’assignatura.
Recull d’exercicis per solucionar.
Enllaç:
http://ocw.udl.cat/enginyeria-i-arquitectura/metodologia-i-tecnologia-de-la-programacio/continguts-1/algorismica
Llibre de referència 1:
Metodología de la programación: principios y aplicaciones.
Alejandro Rabasa Dolado,Laureano Santamaría Arana. Editorial Club Universitario (ECU)
ISBN 84-8454-323-4
Llibre de referència 2:
Fonaments d’intel·ligència artificial
Vicenç Torra Reventós. Editorial UOC
ISBN 978-84-9788-606-2
[Castro et all, 1992]
Jorge Castro, Felipe Cucker, Xavier Messeguer, Albert Rubio, Lluis Solano, Borja Valles
Curs de programació
McGraw Hill, 1992
[Balcazar, 1993]
Jose Luis Balcazar
Programación Metódica
McGraw Hill, 1993
[Peña, 1998]
Ricardo Peña
Diseño de programas: Formalismo y abstracción
Prentice Hall, 1998
[Kaldewaij, 1990]
A. Kaldewaij
Programming: The derivation of algorithms
Prentice Hall, 1990
1. Verificació i derivació formal d’algorismes
1.1. Lògica de predicats
1.2. Què és un algorisme?
1.3. Què vol dir verificar un algorisme?
1.4. Especificació d'un algorisme
1.5. Objectiu de la verificació formal
1.6. L'assignació
1.7. La composició seqüencial
1.8. La composició alternativa
1.9. La composició iterativa
1.10. Derivació formal d’algorismes iteratius
2. El disseny recursiu
2.1. Què és una definició recursiva? Principi d'inducció
2.2. Exemples de definicions recursives
2.3. Disseny recursiu v.s. disseny iteratiu
2.4. Etapes del disseny recursiu
2.5. Els primers exemples d'algorismes recursius (Recursivitat lineal i múltiple)
2.6. El funcionament :l'estructura pila
2.7. Funcions recursives lineals: el disseny i la verificació
2.8. Tècniques d’immersió. La tècnica de desplegament-plegament
2.9. Transformació d'algorismes recursius a iteratius
2.10. Aplicacions de la recursivitat. Alguns esquemes algorísmics.
2.10.1. Divideix i guanyaràs
2.10.2. Esquema de tornada enrera (Backtracking). El problema del salt de cavall i altres
3. Eficiència
3.1. L’eficiència. Presentació
3.2. Recursos a considerar
3.3. La recerca d'algorismes eficients. El per què?
3.4. Mesures de l'eficiència. Propietats
3.5. Eficiència temporal i espacial
3.6. Criteris asimptòtics i notacions
3.6.1. Definició
3.6.2. Classificació i propietats de les funcions
3.6.3. Classificació d’algorismes
3.7. Algorismes de recerca i ordenació de seqüències. Anàlisi de l’eficència
4. Introducció a la intel·ligència artificial
4.1. Definicions i aplicacions
4.2. Resolució de problemes i cerca (cerca no informada, cerca heurística ...)
4.3. Representació del coneixement. Diferents sistemes de representació