Logo UAB

Fonaments de Programació

Codi: 104337 Crèdits: 6
2024/2025
Titulació Tipus Curs
2503758 Enginyeria de Dades FB 1

Professor/a de contacte

Nom:
Roberto Benavente Vidal
Correu electrònic:
robert.benavente@uab.cat

Equip docent

Ivan Erill Sagales

Idiomes dels grups

Podeu consultar aquesta informació al final del document.


Prerequisits

Atès que l’assignatura és d’introducció, s’assumirà que no es posseeix cap tipus de coneixement previ sobre la matèria.

Malgrat això, és recomanable tenir coneixements a nivell d’usuari d’algun tipus de plataforma (windows, mac o linux).

En les activitats presencials a l'aula és imprescindible disposar d'un ordinador portàtil per a realitzar les tasques de l'assignatura.


Objectius

Aquesta assignatura té un caràcter general i introductori a la programació. S'aprofundirà en l'estudi dels aspectes metodològics de la programació i l'aprenentatge d'un llenguatge d'alt nivell. Per tant, els objectius generals que es proposen per a l'assignatura són els següents:

  • Entendre el cicle de vida del software: anàlisi del problema (entendre el que se’ns demana), disseny (proposar una solució al problema), implementació (codificació en un llenguatge de programació de la solució escollida), i prova (realització d’un test de manera sistemàtica per assegurar la correctesa de la solució implementada).
  • Dotar l'estudiant de la capacitat de disseny d'algorismes per a la resolució de problemes, introduint de manera progressiva i sistemàtica una metodologia rigorosa i estructurada de programació, basada fonamentalment en la tècnica del disseny descendent d'algorismes.
  • Introduir a l'estudiant en un llenguatge de programació real. Es pretén que l'estudiant percebi la diferència entre la flexibilitat de la notació pseudo-algorísmica que s'empra en els primers temes i l'estricta sintaxi d'un llenguatge de programació real, en els seus aspectes lèxics (paraules vàlides del llenguatge), sintàctics (regles per combinar-les) i semàntics (significat de les mateixes).
  • Habituar l'estudiant a desenvolupar programes seguint unes normes d'estil tendents a aconseguir programes de qualitat. Dins d'aquestes normes d'estil s'engloben aquelles que faciliten la comprensió del codi, com poden ser l'ús de comentaris, la indentació del codi, la utilització de noms adequats per als tipus de dades, etc.

Competències

  • Avaluar de manera crítica el treball realitzat.
  • Dissenyar solucions algorítmiques eficients per a problemes computacionals, implementar-les en forma de desenvolupaments de programari robust, estructurat i fàcil de mantenir, i verificar-ne la validesa.
  • Planificar i gestionar el temps i els recursos disponibles.
  • Que els estudiants hagin demostrat que comprenen i tenen coneixements en una àrea d'estudi que parteix de la base de l'educació secundària general, i se sol trobar a un nivell que, si bé es basa en llibres de text avançats, inclou també alguns aspectes que impliquen coneixements procedents de l'avantguarda d'aquell camp d'estudi.

Resultats d'aprenentatge

  1. Aplicar els principis bàsics de l'estructura i la programació dels computadors.
  2. Aplicar estratègies de depuració, prova i correcció de programes.
  3. Avaluar de manera crítica el treball realitzat.
  4. Desenvolupar programes amb un bon estil de programació i ben documentats.
  5. Implementar en un llenguatge de programació problemes algorítmics de dificultat mitjana.
  6. Planificar i gestionar el temps i els recursos disponibles.
  7. Que els estudiants hagin demostrat que comprenen i tenen coneixements en una àrea d'estudi que parteix de la base de l'educació secundària general, i se sol trobar a un nivell que, si bé es basa en llibres de text avançats, inclou també alguns aspectes que impliquen coneixements procedents de l'avantguarda d'aquell camp d'estudi.

Continguts

Tema 1: Introducció a la informàtica

Història. Estructura funcional de l’ordinador. Programes/instruccions. Nivells conceptuals de l’ordinador.

Tema 2: Resolució de problemes: introducció a l’algorísmica i la programació.

Introducció a la resolució de problemes. Concepte d'algorisme. Fases en el desenvolupament d'algorismes. La programació com a disciplina d'enginyeria. Cicle de vida del software. Elements bàsics d'un algorisme. Eines per a la representació d'algorismes. Llenguatges de programació. Classificació. Traductors de llenguatges: Compiladors i intèrprets.

Tema 3: Conceptes bàsics i estructures de control

Definició de variables i constants. Tipus de dades fonamentals. Estructura Seqüencial. Estructures de selecció o condicionals. Estructures iteratives o repetitives.

Tema 4: Estructures de dades

Arrays unidimensionals: strings, tuples i llistes. Cerques i recorreguts.

Tema 5: Subprogrames

El concepte de subprograma com a abstracció d'operacions. Localitat, niament, àmbit i visibilitat. Definició de funcions i procediments. Crides a funcions i procediments. Disseny modular descendent.

Tema 6: Fitxers

Definicions bàsiques. Entrada/ sortida de dades en fitxers. Tipus d'accesos a fitxers.

Tema 7: Prevenció i detecció d'errors

Tipus d'errors. Excepcions i asserts.  Programació preventiva. Depuració de programes.

Tema 8: Introducció a la programació orientada a objectes

Classes i objectes. Atributs i mètodes. Encapsulació. Definició de classes.

Tema 9: Tipus de dades  complexes 

Llistes: iteradors, generadors, paradigma funcional i list comprehensions. Conjunts. Diccionaris.

 


Activitats formatives i Metodologia

Títol Hores ECTS Resultats d'aprenentatge
Tipus: Dirigides      
Classes de problemes 26 1,04 2, 1, 4, 5, 3, 7
Classes de pràctiques 11 0,44 2, 1, 4, 5, 3, 6, 7
Classes de teoria 10 0,4 2, 1, 4, 5, 3, 7
Tipus: Supervisades      
Projectes de programació 30 1,2 2, 1, 4, 5, 3, 6, 7
Tipus: Autònomes      
Preparació classes i estudi personal 20 0,8 2, 1, 4, 5, 6, 7
Resolució de problemes auto-avaluables 48 1,92 2, 1, 4, 5, 3, 7

La gestió de la docència de l'assignatura es farà a través del gestor documental Caronte (http://caronte.uab.cat/), que servirà per a poder veure els materials, gestionar els grups de pràctiques, fer els lliuraments corresponents, veure les notes, comunicar-vos amb el professorat, etc. Per a poder-lo utilitzar cal fer els següents passos:

  1.  Donar-se d'alta donant el nom, NIU, i una foto en format JPG. Si ja us heu donat d'alta per alguna altra assignatura, no cal tornar-ho a fer; podeu anar al següent pas.
  2.  Inscriure’s al tipus de docència "Programació en Python", donant com a codi d'assignatura el proporcionat el primer dia de classe. 

La docència de l'assignatura es desenvolupa en dues sessions de dues hores cadascuna en una aula informàtica. En aquestes sessions, es  podran diferenciar les següents activitats docents:

MD1 Exposició de continguts a classe: Presentació dels continguts teòrics a treballar en la classe. Alguns d'aquests continguts s'hauran d'haver preparat abans de la classe a partir de la lectura de texts, visualització de vídeos, cerca d'informació, etc. Els continguts presentats estaran directament relacionats amb els problemes proposats en altres activitats docents, de forma que seran la base sobre la que es desenvoluparan altres activitats del curs.

MD2 Classes participatives: Resolució en comú del conjunt de problemes proposats als estudiants. Tots els temes aniran acompanyats d'una relació de problemes que l'estudiant ha de resoldre. En aquest sentit, i a mida que l'estudiant vagi progressant en la profunditat dels seus coneixements, aquests problemes seran poc a poc més complexos, permetent d'aquesta manera apreciar clarament els avantatges d'utilitzar les eines metodològiques impartides durant el curs. Tots els problemes desenvolupats a classe i altres que es puguin proposar es podran trobar a la plataforma Caronte, i seran auto-avaluables. Aquestes activitats han de permetre a l’estudiant aprofundir en la comprensió i personalitzar el coneixement. El fet que siguin auto-avaluables permet adequar el ritme de consolidació i reflexionar sobre el propi aprenentatge.

MD3 Tutories: Hores de lliure disposició per l’estudiant per a consultes sobre aspectes en què necessiti ajuda addicional per part del professorat.

MD4 Realització de projectes curts: Realització de petits projectes de pràctiques per aprofundir en aspectes aplicats de la teoria. Aquests projectes es resoldran en petits grups, en els quals, cada membre del grup haurà de fer una part i posar-la en comú amb la resta del grup per a tenir la solució final.

MD5 Activitats d’avaluació: Veure apartat d'avaluació d'aquesta guia docent.

 

Competències transversals

Les competències transversals T06 i T08 es treballen i s’avaluaren al llarg del curs en les següents activitats:

Competència

MD1

MD2

MD4

T06 – Avaluar de manera crítica el treball realitzat

Treball personal de preparació dels materials

Avaluació: Examen Teòric (Tp i Tf)

Avaluació: Resolució de Problemes (P) d’auto-avaluació amb Caronte

Avaluació: Projecte de pràctiques (PPg i PPi)

T8 – Planificar el temps i els recursos disponibles

 

 

L’enunciat de la pràctica donarà indicacions de com realitzar la planificació.

Avaluació: Projecte de pràctiques grupal (PPg)

 

 

Nota: es reservaran 15 minuts d'una classe, dins del calendari establert pel centre/titulació, per a la complementació per part de l'alumnat de les enquestes d'avaluació de l'actuació del professorat i d'avaluació de l'assignatura/mòdul.


Avaluació

Activitats d'avaluació continuada

Títol Pes Hores ECTS Resultats d'aprenentatge
1. Examen teòric parcial 15% 2 0,08 2, 1, 4, 5, 3, 7
2. Examen teòric final 35% 2 0,08 2, 1, 4, 5, 3, 7
3. Lliuraments de problemes 20% 0 0 2, 1, 4, 5
4. Projectes de programació (avaluació grupal) 20% 0,5 0,02 2, 1, 4, 5, 6
5. Examen Projectes de programació (avaluació individual) 10% 0,5 0,02 2, 1, 4, 5, 3

Procés i activitats d'avaluació programades

Al llarg del curs es realitzaran les activitats d’avaluació següents:

Activitat

Data

Recuperació

Percentatge

Nota mínima

Examen Teòric Parcial (Tp)    Individual

Consultar Planificació

Consultar Planificació

15%

 No

Examen Teòric Final (Tf)    Individual

Consultar Planificació

Consultar Planificació

35%

 Tf >= 5

Lliuraments de Problemes (P) Individual

Cada setmana

No

20%

No

Projectes de Programació (PPg) Grupal

Consultar Planificació

Consultar Planificació

20%

PPg >= 5

Examen dels Projectes de Programació (PPi) Individual

Consultar Planificació

Consultar Planificació

10%

PPi >= 5

Per poder aprovar l’assignatura, el resultat de la suma ponderada de les activitats d’avaluació ha de ser més gran o igual que 5, i caldrà treure una nota mínima de 5 en les activitats Tf, PPg i PPi.

 

Programació d’activitats d’avaluació

Les dates d'avaluació i lliurament de treballs es publicaran al gestor documental Caronte i poden estar subjectes a canvis de programació per motius d'adaptació a possibles incidències. Sempre s'informarà pel gestor documental sobre aquests canvis ja que s'entén que aquesta és la plataforma habitual d'intercanvi d'informació entre professorat i estudiants.

 

Procediment de recuperació

L’estudiant es pot presentar a la recuperació sempre que s’hagi presentat a un conjunt d’activitats que representi un mínim de dues terceres parts de la qualificació total de l’assignatura.

Els exàmens teòrics (Tp i Tf) es podran recuperar en un únic examen de recuperació a les dates fixades per la coordinació del Grau. L’examen de recuperació tindrà un percentatge del 50% sobre la nota final. La nota de l’examen de recuperació, en cas de realitzar-se, substituirà a les notes dels exàmens parcial (Tp) i final (Tf) realitzats durant el curs.

D’acord amb la coordinació del Grau i la direcció de l’Escola d’Enginyeria l'activitat Lliuraments de Problemes (P) Individual no es podrà recuperar.

 

Procediment de revisió de les qualificacions

Els estudiants tindran dret a la revisió dels exàmens teòrics (Tp i Tf). El  lloc, data i hora de revisió es publicarà el dia que siguin publicades les notes. Si l’estudiant no es presenta a aquesta revisió no es revisarà posteriorment aquesta activitat. Sols en casos justificats es podrà fer una revisió a posteriori de la data fixada i sempre fins a un màxim de 7 dies naturals.

De les notes dels projectes de programació (PPg i PPi) no es realitzarà revisió perquè l’avaluació es realitza davant dels estudiants.

 

Avaluació única

Aquesta assignatura ofereix sistema d'avaluació única.

L'avaluació única de l'assignatura constarà de les següents activitats d'avaluació:

Activitat

Data

Recuperació

Percentatge

Nota mínima

Examen Teòric Final (Tf)    Individual

Consultar Planificació

Consultar Planificació

50%

 Tf>= 5

Projectes de Programació (PPg) Grupal

Data Examen Teoria

Data Examen Recuperació

30%

PPg >= 5

Examen Projectes de Programació (PPi) individual

Data Examen Teoria

Data Examen Recuperació

20%

PPi >= 5

Per poder aprovar l’assignatura, el resultat de la suma ponderada de les activitats d’avaluació ha de ser més gran o igual que 5, i caldrà treure una nota mínima de 5 en les activitats Tf, PPg i PPi.

S'aplicarà el mateix sistema de recuperació que per l'avaluació continuada.

La revisió de la qualificació final segueix el mateix procediment que per a l'avaluació continuada.

 

Qualificacions

No Avaluable (NA): Qualsevol alumne que lliuri una pràctica o una avaluació programada tindrà nota. Només es considerarà no avaluable en el cas de no lliurar cap activitat avaluable. 

Nota Final: Surt de la suma ponderada segons els criteris exposats en l’apartat d’activitats d’avaluació. Si en alguna activitat no s’assoleix la nota mínima la nota sortirà de la següent fórmula:

Mínim (suma ponderada de notes , 4.5)

Matriculesd’honor: Atorgar una qualificació de matrícula d’honor és decisió del professorat responsable de l’assignatura. La normativa de la UAB indica que les MH només es podran concedir a estudiants que hagin obtingut una qualificació final igual o superior a 9.00. Es pot atorgar fins a un 5% de MH del total d'estudiants matriculats. En el cas que el nombre d’estudiants amb nota superior o igual a 9 siguin més del 5%del total de matriculats, es prioritzà els estudiants segons les següents regles (en ordre):

  1. Estudiants que hagin aconseguit la nota igual o superior a 9 fent menys recuperacions d'activitats (ja sigui per haver suspès l'activitat o perquè s'ha anat a pujar nota).
  2. Estudiants amb més notes iguals o superiors a 9 a les activitats Tp, Tf, i PPi.
  3. Estudiants amb millor nota global.

 

Irregularitats per part de l’estudiant, còpia i plagi

Sense perjudici d'altres mesures disciplinàries que s'estimin oportunes, es qualificaran amb un zero les irregularitats comeses per l'estudiant que puguin conduir a una variació de la qualificació d'un acte d’avaluació. Per tant, la còpia, el plagi, l’engany, deixar copiar, etc. en qualsevol de les activitats d’avaluació implicarà suspendre-la amb un zero. Les activitats d’avaluació qualificades d'aquesta forma i per aquest procediment no seran recuperables. Si és necessari superar qualsevol d'aquestes activitats d'avaluació per aprovar l'assignatura, aquesta assignatura quedarà suspesa directament, sense oportunitat de recuperar-la en el mateix curs. En aquest cas, la nota numèrica de l'expedient serà el valor menor entre 3.0 i la mitjana ponderada de les notes.

 

Avaluació dels estudiants repetidors

Els estudiants repetidors que el cursanterior a l'actual hagin aprovat l'assignatura "Programació avançada" i hagin lliurat correctament els exercicis de repàs proposats en aquella assignatura, podran superar l'assignatura presentant uns exercicis de síntesi del curs. La nota final en aquest cas serà igual a 5. Els estudiants que es vulguin acollir a aquesta via, ho hauran de comunicar al professorat de l'assignatura la primera setmana de classe.

La resta d'estudiants repetidors han de cursar l’assignatura per complet. No es mantindrà cap nota de cursos anteriors. 

 


Bibliografia

J. Guttag. Introduction to Computation and Programming Using Python: With Application to Understanding Data. Second Edition. MIT Press. ISBN-10: 9780262529624

S. Chazallet Python 3. Los fundamentos del lenguaje.  Eni, ISBN-10: 2409006140

E. Matthes. Python Crash Course: A Hands-On, Project-Based Introduction to Programming. No Starch Press ISBN-10: 1593276036 

M. Myers. A Smarter Way to Learn Python: Learn it faster. Remember it longer. Createspace Independent Pub  ISBN-10: 1974431479

A. Prieto, A. Lloris, J.C. Torres.  Introducción a la Informática. Mc Graw-Hill ISBN-10: 8448146247

A. Prieto, B. Prieto. Conceptos de Informática. Mc Graw-Hill, Schaum ISBN-10: 8448198573

L. Joyanes Aguilar.  Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos.  Mc. Graw-Hill. ISBN-10:8448161114


Programari

S'utilitzarà la darrera versió del paquet Anaconda que inclou Python 3.x i l'editor Spyder (https://www.anaconda.com/products/individual).


Llista d'idiomes

Nom Grup Idioma Semestre Torn
(PAUL) Pràctiques d'aula 81 Català primer quadrimestre matí-mixt
(PAUL) Pràctiques d'aula 82 Català primer quadrimestre matí-mixt