Programació i Algorísmia I

Esteu aquí

Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits, però té capacitats prèvies
Departament
CS
Aquesta assignatura és la introducció a la programació pels estudiants del Grau d'IA. L'assignatura girarà al voltant del concepte d'Abstracció, posant èmfasi en el procés mitjançant el que hom és capaç de resoldre problemes utilitzant ja sigui abstracció basada en funcions o abstracció basada en dades.

Professors

Responsable

  • Jordi Delgado Pin ( )

Altres

  • Jose Luis Balcázar Navarro ( )

Hores setmanals

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

Competències

Competències Transversals

Transversals

  • CT4 [Avaluable] - Treball en equip. Ser capaç de treballar com a membre d'un equip interdisciplinari, ja sigui com un membre més o realitzant tasques de direcció, amb la finalitat de contribuir a desenvolupar projectes amb pragmatisme i sentit de la responsabilitat, assumint compromisos tenint en compte els recursos disponibles.
  • CT6 [Avaluable] - Aprenentatge autònom. Detectar deficiències en el propi coneixement i superar-les mitjançant la reflexió crítica i l'elecció de la millor actuació per ampliar aquest coneixement.

Competències Tècniques

Específiques

  • CE02 - Dominar els conceptes bàsics de matemàtica discreta, lògica, algorísmica i complexitat computacional i la seva aplicació per al tractament automàtic de la informació per mitjà de sistemes computacionals i la seva aplicació per a la resolució de problemes.
  • CE03 - Identificar i aplicar els procediments algorítmics bàsics de les tecnologies informàtiques per dissenyar solucions a problemes, analitzant la idoneïtat i complexitat dels algoritmes proposats.
  • CE04 - Dissenyar i utilitzar de forma eficient els tipus i estructures de dades més adequats a la resolució d'un problema.
  • CE10 - Analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
  • CE12 - Dominar els principis fonamentals i 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 intel·ligència artificial.
  • CE13 - Avaluar la complexitat computacional d'un problema, identificar estratègies algorítmiques que puguin conduir a la seva resolució i recomanar, desenvolupar i implementar aquella que garanteixi el millor rendiment d'acord amb els requisits establerts.

Competències Tècniques Generals

Genèriques

  • CG2 - Utilitzar els coneixements fonamentals i metodologies de treball sòlides adquirits durant els estudis per adaptar-se als nous escenaris tecnològics de el futur.
  • CG4 - Raonar, analitzant la realitat i dissenyant algoritmes i formulacions que la modelin. Identificar problemes i construir solucions algorísmiques o matemàtiques vàlides, eventualment noves, integrant el coneixement multidisciplinari necessari, valorant diferents alternatives amb esperit crític, justificant les decisions preses, interpretant i sintetitzant els resultats en el context de l'domini d'aplicació i establint generalitzacions metodològiques a partir de aplicacions concretes.
  • CG8 - Observar un exercici ètic de la professió en totes les seves facetes, aplicant criteris ètics en el disseny de sistemes, algoritmes, experiments, utilització de dades, d'acord amb els sistemes ètics recomanats pels organismes nacionals i internacionals, amb especial èmfasi en seguretat, robustesa , privacitat, transparència, traçabilitat, prevenció de biaixos (de raça, gènere, religió, territori, etc.) i respecte als drets humans.

Objectius

  1. Conèixer els conceptes més bàsics de la programació amb funcions (senzilles i d'ordre superior) i la seva utilització com a eines per adeqüar un llenguatge de programació al domini del problema que es vol resoldre
    Competències relacionades: CG2, CT6, CE03, CE10, CE12,
  2. Conèixer el concepte de recursivitat i com distingir processos iteratius i recursius definits amb funcions recursives
    Competències relacionades: CG4, CT6, CE03, CE10, CE12,
  3. Començar a entendre el concepte de disseny del programari
    Competències relacionades: CG4, CT6, CE03, CE10,
  4. Poder treballar amb la idea d'error en un programa i l'utilització d'excepcions per tractar aquests errors
    Competències relacionades: CG4, CE10,
  5. Conèixer el concepte de contenidor i les situacions en que és pertinent utilitzar-los. Conèixer el cost del seu ús (informalment)
    Competències relacionades: CG4, CT6, CE02, CE04,
  6. Conèixer el concepte de classe i iniciar l'estudiant en l'ús dels objectes i l'herència
    Competències relacionades: CG2, CG4, CT6, CE04, CE10,
  7. Introduir l'estudiant en el càlcul de la complexitat dels algorismes
    Competències relacionades: CE13,
  8. Involucrar l'estudiant en el disseny i implementació en grup d'un problema senzill
    Competències relacionades: CG2, CG4, CG8, CT4, CE03, CE10,

Continguts

  1. Construint Abstraccions amb Funcions: Funcions (senzilles i d'ordre superior). Entorns. Control del flux d'execució.
    S'introdueix a l'estudiant en el mecanisme principal de solució de problemes a partir del disseny bottom-up de funcions que acostin el llenguatge de programació al domini del problema. S'estudien els mecanismes de definició de funcions, pas de paràmetres, entorn i abast, i les principals estructures de control del flux d'execució (condicional, iteratives)
  2. Construint Abstraccions amb Funcions: Recursivitat i exemples.
    S'introdueix el fet que una funció es pot cridar a ella mateixa, la recursivitat com a mecanisme conceptual per resoldre problemes i la idea de procés. Funcions recursives defineixen processos iteratius i recursius.
  3. Construint Abstraccions amb Funcions: Disseny. Tractament d'errors amb excepcions.
    S'introdueix el concepte de dissenyar un programa per resoldre un problema. S'introdueix la idea d'error en un programa i com tractar-los amb el mecanisme d'excepcions.
  4. Construint Abstraccions amb Funcions: Exemples de resolució de problemes
    Es reforcen els conceptes introduits fins el moment amb nombrosos problemes de dificultat baixa i mitjana.
  5. Construint Abstraccions amb Dades: Abstracció de Dades
    Es comença a treballar la idea d'Abstracció de Dades amb tipus senzills (parells, nombres racionals), il·lustrant el concepte de barrera d'abstracció . S'introdueixen les primeres estructures de dades contenidor.
  6. Construint Abstraccions amb Dades: Contenidors
    Es comença a treballar amb contenidors proporcionats pel llenguatge de programació: Seqüències, Llistes, Diccionaris i amb altres d'implementats dins el curs, com les Matrius o els Arbres.
  7. Construint Abstraccions amb Dades: Mutabilitat. Iteradors i Generadors.
    El concepte de mutabilitat es veu per primer cop relacionat amb llistes, i es discuteixen els avantatges i inconvenients de tenir estructures de dades immutables. S'introdueixen els iteradors i generadors com a noves estructures de control.
  8. Construint Abstraccions amb Dades: Objects, Classes, Herència, Composició
    Es fan els primers passos cap a la orientació a objectes a travers del concepte d'objecte i el de classe. Els conceptes d'herència i composició també s'introdueixen.
  9. Complexitat dels Algorismes
    Es fa una petita introducció a la notació asimptòtica i al càlcul de la complexitat en cas pitjor d'alguns algorismes notables vistos durant el curs.

Activitats

Activitat Acte avaluatiu


Teoria
12h
Problemes
0h
Laboratori
12h
Aprenentatge dirigit
0h
Aprenentatge autònom
24h

Teoria
14h
Problemes
0h
Laboratori
14h
Aprenentatge dirigit
0h
Aprenentatge autònom
28h

Complexitat dels Algorismes

Cal que l'estudiant estigui atent a classe i realitzi els exercicis proposats.
Objectius: 7
Continguts:
Teoria
4h
Problemes
0h
Laboratori
4h
Aprenentatge dirigit
0h
Aprenentatge autònom
8h

Examen Parcial


Objectius: 1 2 3 4
Setmana: 7
Tipus: examen de teoria
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Examen Final


Objectius: 5 6 7 8
Setmana: 17
Tipus: examen final
Teoria
3h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Metodologia docent

La docència de l'assignatura està estructurada en classes de teoria i classes de laboratori.

A les classes de teoria els professors presenten els continguts essencials de l'assignatura. A les classes de laboratori es practiquen els continguts de l'assignatura (els presentats a classe i els adquirits autònomament) mitjançant la realització de problemes pràctics. Les classes de laboratori seran una continuació de les classes teòriques, on els conceptes nous s'implementaran a mida que vagin apareixent.

Mètode d'avaluació

El mètode d'avaluació de l'assignatura consistirà en dues proves de caire teòric (T1 i T2), una a mitjans de curs i l'altre al final i una pràctica de mida petita-mitjana (Practica).

Aleshores, el mètode d'avaluació seria:
0.6* Teoria + 0.4*Practica
on:
Teoria: 0.5* T1 + 0.5* T2

Competència transversal "Treball en equip":

S'avalua usant una rúbrica simple en que el tutor de cada grup puntua els
diferents aspectes del treball en equip de cada membre dels grups.

Bibliografia

Bàsica:

Web links

  • Aquest és el text PRINCIPAL de l'assignatura, la font d'informació primària per a tot allò que expliquem a classe. http://composingprograms.com/
  • Aquest és el curs CS 61A: Structure and Interpretation of Computer Programs, de l'Universitat de Berkeley, en el que aquest curs està basat https://cs61a.org/
  • La principal referència del llenguatge de programació que fem servir: Python. No és un lloc on aprendre a programar, és un lloc on consultar detalls de les construccions i llibreries del llenguatge https://docs.python.org/3/reference/index.html

Capacitats prèvies

Les definides en el batxillerat científic-tècnic o equivalents.

Addenda

Continguts

Cap modificació respecte a la Guia Docent

Metodologia docent

Cap canvi respecte a la Guia Docent, donat que les condicions ara mateix i el plà de vacunació (juny 2021) fan pensar en un desenvolupament normal/presencial del curs el proper setembre de 2021. En cas de que les circumstàncies així ho requereixin, les classes, tant de teoria com laboratoris, es farien de manera no presencial.

Mètode d'avaluació

Cap modificació respecte a la Guia Docent. Les avaluacions serien no presencials només en circumstàncies molt extremes. Fins i tot si les classes són no presencials, s'intentaria que l'avaluació fos presencial.

Pla de contingència

Cap, donat que les condicions ara mateix i el plà de vacunació (juny 2021) fan pensar en un desenvolupament normal/presencial del curs el proper setembre de 2021. Si no fos possible dur a terme activitats presencials, es farien tant les classses de teoria, com de problemes de forma no presencial amb Meet, així com tots els actes d'avaluació de forma no presencial utilitzant Meet