Llenguatges de Programació

Esteu aquí

Crèdits
6
Tipus
Obligatòria d'especialitat (Computació)
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.

Professors

Responsable

  • Albert Rubio Gimeno ( )

Altres

  • Elvira Pino Blanco ( )
  • Gerard Escudero Bakx ( )
  • Jordi Petit Silvestre ( )
  • Jose Carmona Vargas ( )
  • Jose Miguel Rivero Almeida ( )

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0.4
Aprenentatge autònom
5.6

Competències

Competències Transversals

Comunicació eficaç oral i escrita

  • G4 - 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 - 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.

Competències Tècniques de cada especialitat

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.

    Related competences: CCO1.2,
  2. Conèixer eines per a la creació d'analitzadors lèxics i sintàctics.
    Related competences: CCO1.2,
  3. Conèixer les diferències entre compiladors i intèrprets.
    Related competences: 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.
    Related competences: CCO1.2, G4.3,
  5. Conèixer les característiques principals dels llenguatges de programació funcionals.
    Related competences: CCO1.2,
  6. Conèixer construccions avançades dels llenguatges de programació.
    Related competences: CCO1.2,
  7. Ser capaç de modelar i especificar problemes de hardware o software usant llenguatges funcionals.

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

    Related competences: CCO1.2,
  9. Ser capaç d'aprendre nous llenguatges de programació de forma autònoma.
    Related competences: 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

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.
Teoria
2
Problemes
0
Laboratori
0
Aprenentatge dirigit
0
Aprenentatge autònom
4
Objectius: 4 5 9
Continguts:

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.
Teoria
6
Problemes
0
Laboratori
8
Aprenentatge dirigit
0
Aprenentatge autònom
8
Objectius: 1 2 3
Continguts:

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.
Teoria
4
Problemes
0
Laboratori
6
Aprenentatge dirigit
0
Aprenentatge autònom
8
Objectius: 4 5 9
Continguts:

Sistemes de tipus

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

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.
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Objectius: 4 5 6 9
Continguts:

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.
Teoria
4
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6
Objectius: 5 7
Continguts:

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.
Teoria
2
Problemes
0
Laboratori
6
Aprenentatge dirigit
0
Aprenentatge autònom
6
Objectius: 3 4 8 9
Continguts:

Aprenentatge d'un nou llenguatge de programació

L'estudiant haurà d'aprendre un nou llenguatge que se li assignarà.
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
2
Aprenentatge autònom
4

Activitats de repàs

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

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ó

Es realitzaran tres proves més un treball dirigit (TD) que a més de tenir un pes a la nota de l'assignatura, servirà per avaluar les competències transversals.

Les proves CL, EP i EF tindran associades una petit treball pràctic que caldrà haver entregat abans de realitzar la corresponent prova i que anomenarem PCL, PEP i PEF.

La nota del treball dirigit s'obtindrà de la prova TC, i es descompondrà en tres parts:

-TC1 que avaluarà els coneixements adquirits sobre el llenguatge de programació assignat.

-TC2 que avaluarà la competència de G4.3 mitjançant una breu presentació i una discussió amb el professor i la resta d'estudiants, a més de la documentació entregada.

-TC3 que avaluarà la competència de G6.3 segons la descripció realitzada de les fonts consultades i el referenciant que se'n realitzi. Així com del resultat obtingut a TC1.

La nota final s'obtindrà a partir de quatre notes:

NOTA1 = 30%PCL+70%CL
NOTA2 = 30%PEP+70%EP
NOTA3 = 10%PEF+90%EF
NOTA4 = TC1

amb la següent ponderació:

NOTA FINAL= 20%NOTA1 + 30%NOTA2 + 40%NOTA3 + 10%NOTA4

Bibliografia

Bàsica:

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