Universitat de Girona

Programa de l'assignatura

Curs 2003-04

3105IG0002 ALGORÍSMICA I


Objectius  

Partint de la idea que
- a Metodologia i Tecnologia de la Programació (MTP) s'han après les tècniques bàsiques per a la programació a petita escala, i
- a Introducció a les Estructures de Dades (IED) s'han estudiat les principals estructures de dades,
l'objectiu d'aquesta assignatura és inculcar que la modularitat és la clau per escriure bons programes a més gran escala.

L'assignatura es desenvolupa en el context de la programació imperativa orientada a objectes i pretén
- capacitar l'alumne per a la resolució de problemes de mitjana envergadura mitjançant tècniques de disseny modular a partir de l'abstracció de dades, i
- augmentar la seva capacitat de raonar amb rigor respecte a la correcció dels programes dissenyats.

A partir d'aquestes dues vessants l'alumne haurà de ser capaç de produir programes de qualitat, és a dir, ben especificats, fiables, reutilitzables i fàcils de mantenir.
 
Prerrequisits  

recomanats:
Metodologia i Tecnologia de la Programació
Introducció a les Estructures de Dades
 
Contingut (Programa)  

1. Disseny modular orientat a objectes Conceptes bàsics
  • Descomposició i abstracció
  • Tipus d'abstracció
  • Indepèndencia de la representació
Disseny d'aplicacions
  • Tipus de Dades i Mòduls Funcionals. Definició, implementació i utilització.
  • Descomposició i abstracció funcional
  • Descomposició i abstracció de dades
  • Construcció de tipus
  • Herència
    • Herència vs. Subtipatge
    • Bons i mals usos de l'herència
    • Composició vs. Construcció
    • Herència múltiple
  • Exemples de disseny d'aplicacions
  • Patrons de disseny
    2.Especificació i raonament formal
    • Especificació equacional de tipus de dades
    • Lògica de primer ordre
    • Invariant de la representació i funció d'abstracció
    • Especificació formal d'operacions. Precondicions i postcondicions
    • Derivació/verificació formal d'algorismes
      • Semàntica axiomàtica
      • Principi d'inducció
      • Disseny recursiu
      • Construcció de programes per generalització
      • Composició iterativa i invariants
      • Disseny iteratiu
      • Transformació recursiu-iteratiu
     
    Bibliografia  


    1.Barbara Liskov and John Guttag: Program development in Java: Abstraction, Specification, and Object-Oriented Design. Addison-Wesley, 2000.
    2 J.L. Balcázar: Programación Metódica. McGraw-Hill, 1993.
    3 R. Peña: Diseño de Programas: Formalismo y Abstracción. Prentice-Hall, 1993.
     
    Mètodes docents  

    Classes de teoria (2h/setmana) Classes de laboratori (2h/setmana)
     
    Tipus d'exàmens i avaluacions  

    L'avaluació consta de les següents parts (entre parèntesi s'indica el percentatge de cada part sobre la nota final):

    1. Pràctica en equip (25%)

    2. Exàmens
    (a) Examen de la pràctica en equip (10%)
    (b) Examen de teoria/problemes (65%)

    Observacions:
    - Cal un 4 com a mínim de l'examen de teoria/problemes per aprovar l'assignatura.
    - La pràctica en equip és obligatòria: ha d'estar presentada i acceptada per tal d'aprovar l'assignatura, independentment de la resta de notes.
    - Si la nota x de l'examen de la pràctica en equip és inferior a 5, aleshores es dividirà la nota de la pràctica en equip per 5/x.
    - Es valorarà el seguiment i la participació a les sessions de laboratori (podent-se fer proves avaluadores sense previ avís).
     
    Informació addicional  

    S'utilitzarà el llenguatge Java per a la construcció dels programes.
     
    Llengua de les classes  

    Català