Vés al contingut

Llenguatges de Programació

Crèdits
6
Tipus
  • GRAU: Obligatòria d'especialitat (Computació)
  • GCED: Optativa
Requisits
Departament
CS
Els llenguatges de programació són l'eina bàsica en moltes de les activitats que realitzarà un enginyer informàtic. És per això, que la capacitat de triar el llenguatge de programació més adient és crucial. Cal tenir en compte que no és el mateix si ens interessa principalment l'eficiència, la fiabilitat o la velocitat de desenvolupament. L'assignatura donarà una visió global sobre els llenguatges de programació, així com una petita introducció a la compilació. A més, presentarem amb una mica més de detall els llenguatges funcionals i els usarem per introduir nous elements dels llenguatges de programació, com ara els sistemes de tipus o la programació d'ordre superior. També mostrarem com aquests llenguatges poden ser usats per especificar i modelar hardware i software o, per exemple, en aplicacions financeres. Finalment, es consideraran breument els llenguatges de scripting, cada cop més usats, tant en el prototipat com en el desenvolupament d'aplicacions. Cal remarcar que l'assignatura també treballarà la capacitat per aprendre nous llenguatges.

Professorat

Responsable

Altres

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6

Competències

Comunicació eficaç oral i escrita

  • G4 [Avaluable] - Comunicar de forma oral i escrita amb altres persones coneixements, procediments, resultats i idees. Participar en debats sobre temes propis de l'activitat de l'enginyer tècnic en informàtica.
    • G4.3 - Comunicar-se de manera clara i eficient en presentacions orals i escrites sobre temes complexos, adaptant-se a la situació, al tipus de públic i als objectius de la comunicació, utilitzant les estratègies i els mitjans adequats. Analitzar, valorar i respondre adequadament a les preguntes de l'auditori.
  • Ús solvent dels recursos d'informació

  • G6 [Avaluable] - Gestionar l'adquisició, l'estructuració, l'anàlisi i la visualització de dades i d'informació de l'àmbit de l'enginyeria informàtica, i valorar de forma crítica els resultats d'aquesta gestió.
    • G6.3 - Planificar i utilitzar la informació necessària per a un treball acadèmic (per exemple, per al treball de final de grau) a partir d'una reflexió crítica sobre els recursos d'informació utilitzats. Gestionar la informació de manera competent, independent i autònoma. Avaluar la informació trobada i identificar-ne les llacunes.
  • Especialitat computació

  • CCO1 - Tenir un coneixement profund dels principis fonamentals i dels models de la computació i saber-los aplicar per a interpretar, seleccionar, valorar, modelar i crear nous conceptes, teories, usos i desenvolupaments tecnològics, relacionats amb la informàtica.
    • CCO1.2 - Demostrar coneixement dels fonaments teòrics dels llenguatges de programació i les tècniques de processament lèxic, sintàctic i semàntic associades, i saber aplicar-les per a la creació, el disseny i el processament de llenguatges.
  • Objectius

    1. Conèixer les diferents fases de la compilació, en particular l'anàlisi lèxic, el sintàctic i el semàntic.

      Competències relacionades: CCO1.2,
    2. Conèixer eines per a la creació d'analitzadors lèxics i sintàctics.
      Competències relacionades: CCO1.2,
    3. Conèixer les diferències entre compiladors i intèrprets.
      Competències relacionades: CCO1.2,
    4. Diferenciar les característiques d'un llenguatge de programació. Identificar els seus punts forts i els seus punts febles i ser capaç de justificar una tria.
      Competències relacionades: G4.3, CCO1.2,
    5. Conèixer les característiques principals dels llenguatges de programació funcionals.
      Competències relacionades: CCO1.2,
    6. Conèixer construccions avançades dels llenguatges de programació.
      Competències relacionades: CCO1.2,
    7. Ser capaç de modelar i especificar problemes de hardware o software usant llenguatges funcionals.

      Competències relacionades: G4.3, G6.3, CCO1.2,
    8. Conèixer les característiques principals dels llenguatges de scripting.

      Competències relacionades: CCO1.2,
    9. Ser capaç d'aprendre nous llenguatges de programació de forma autònoma.
      Competències relacionades: CCO1.2, G6.3,

    Continguts

    1. Introducció als llenguatges de programació.
      Turing completesa. Paradigmes de la programació. Característiques principals.
    2. Introducció a la compilació.
      Compilació i interpretació. L'anàlisi lèxic. L'anàlisi sintàctic. Gramàtiques. Taula de símbols. Arbre de sintaxi abstracta. Anàlisi semàntic. Generació de codi.
    3. Llenguatges funcionals
      Fonaments. Pattern Matching. Avaluació Eager/Lazy. Introducció a Haskell.
    4. Sistemes de tipus
      Els tipus en els llenguatges de programació. Els tipus i la fiabilitat. Sistemes de tipus en els llenguatges funcionals i en els llenguatges orientats a objectes.
    5. Programació d'ordre superior
      Les funcions d'ordre superior. Aplicacions. Programació de funcions d'ordre superior en llenguatges funcionals i orientats a objectes.
    6. Especificació i modelat usant llenguatges funcionals
      Llenguatges declaratius en l'especificació i el modelat. Prototipat. Especificacions executables. Transformació de programes.
    7. Llenguatges de scripting
      Característiques. Utilització de llenguatges de scripting. Combinació de paradigmes. Tipus. Ordre superior. Breu introducció a Python.

    Activitats

    Activitat Acte avaluatiu


    Introducció als llenguatges de programació

    Es presentaran els continguts a la classe de teoria i es realitzaran treballs pràctics a la sessió de laboratori.
    Objectius: 4 5 9
    Continguts:
    Teoria
    2h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    4h

    Introducció a la compilació

    Presentació dels continguts a les classes de teoria. Realització de pràctiques de laboratori utilitzant analitzadors lèxics i sintàctics i realitzant un petit treball pràctic.
    Objectius: 1 2 3
    Continguts:
    Teoria
    2h
    Problemes
    0h
    Laboratori
    8h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    8h

    CL

    Prova sobre els continguts del tema 2.
    Objectius: 1 2 3
    Setmana: 6
    Teoria
    0h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    0h

    Llenguatges funcionals

    Presentació de continguts i realització de problemes a les classes de teoria. Realització de treballs pràctics en Haskell a les sessions de laboratori.
    Objectius: 4 5 9
    Continguts:
    Teoria
    4h
    Problemes
    0h
    Laboratori
    6h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    8h

    Sistemes de tipus

    Presentació de continguts a les sessions de teoria, que són treballats per al llenguatge Haskell a les sessió de laboratori.
    Objectius: 4 5 6 9
    Teoria
    4h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    Programació d'ordre superior

    Presentació de continguts a les sessions de teoria i aplicació al llenguatge Haskell a les sessions de laboratori.. També es veurà quines formes de programació d'ordre superior admeten a d'altres llenguatges coneguts com ara Java.
    Objectius: 4 5 6 9
    Continguts:
    Teoria
    2h
    Problemes
    0h
    Laboratori
    2h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    Especificació i modelat usant llenguatges funcionals

    Presentació de continguts a les sessions de teoria i realització d'algun cas pràctic, que posteriorment es codificat a la sessió de laboratori.
    Objectius: 5 7
    Continguts:
    Teoria
    4h
    Problemes
    0h
    Laboratori
    2h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    EP

    Examen escrit dels Temes 3 a 5.
    Objectius: 5 6
    Setmana: 10
    Teoria
    0h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    0h

    Llenguatges de scripting

    Presentació de les característiques principals i d'algun exemples de llenguatges a classe de teoria. Utilització de llenguatges de scripting al laboratori, com ara gestors de processos o per navegadors web, etc.
    Objectius: 3 4 8 9
    Continguts:
    Teoria
    2h
    Problemes
    0h
    Laboratori
    6h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    Aprenentatge d'un nou llenguatge de programació

    L'estudiant haurà d'aprendre un nou llenguatge que se li assignarà.

    Teoria
    2h
    Problemes
    0h
    Laboratori
    2h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    4h

    CT

    En aquest acte s'avaluarà l'aprenentatge
    Objectius: 4 9
    Setmana: 14
    Teoria
    0h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    0h

    Activitats de repàs



    Teoria
    2h
    Problemes
    0h
    Laboratori
    2h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    EF


    Objectius: 4 5 6 7 8
    Setmana: 15 (Fora d'horari lectiu)
    Teoria
    0h
    Problemes
    0h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    0h

    Metodologia docent

    Les classes estan dividides en sessions de teoria i laboratori.

    A les sessions de teoria es desenvoluparan els coneixements de l'assignatura, intercalant l'exposició de nou material teòric amb exemples i la interacció amb els alumnes per tal de discutir els conceptes.

    A les classes de laboratori es posaran en pràctiques els conceptes introduïts i s'aplicaran a llenguatges de programació i a problemes concrets. Es realitzaran tres petites pràctiques que aniran associades a les diferents proves d'avaluació.

    Mètode d'avaluació

    La nota de l'assignatura és

    N = 0.50·F + 0.20·P1 + 0.20·P2 + 0.10·D

    on:

    F = nota de l'examen final
    P1 = nota delm parcial (mitjans de curs)
    P2 = nota de a pràctica (finals de curs)
    D = nota del treball dirigit

    L'examen parcial sera un examen d'ordinador que avalua Haskell. L'examen final serà un examen escrit que avaluarà sobre tots els continguts del curs. La pràctica consisteix en utilitzar eines per generar compiladors i Python per a resoldre un cas pràctic.

    El treball dirigit consisteix en preparar un vídeo i un document escrit sobre les propietats d'un o alguns llenguatges de programació. La seva avaluació es farà per evaluació entre companys (co-avaluació). Les qualificacions de les competències transversals s'obtenen del treball dirigit.

    Bibliografia

    Bàsic

    Capacitats prèvies

    Capacitats prèvies sobre lògica adquirides a l'assignatura Fonaments Matemàtics (FM):
    - Coneixement dels conceptes bàsics de lògica de proposicions i predicats
    - Coneixements sobre Inferència lògica.

    Capacitats prèvies sobre Programació adquirides a les assignatures d'Estructura de Dades i Algorismes (EDA) i Projectes de Programació (PROP):
    - Coneixement sobre programació.
    - Coneixement sobre llenguatges de programació orientats a objectes