Logo UAB
2021/2022

Programació avançada

Codi: 100126 Crèdits: 6
Titulació Tipus Curs Semestre
2500149 Matemàtiques OT 4 0
La metodologia docent i l'avaluació proposades a la guia poden experimentar alguna modificació en funció de les restriccions a la presencialitat que imposin les autoritats sanitàries.

Professor/a de contacte

Nom:
Vicenç Soler Ruíz
Correu electrònic:
Vicenc.Soler@uab.cat

Utilització d'idiomes a l'assignatura

Llengua vehicular majoritària:
català (cat)
Grup íntegre en anglès:
No
Grup íntegre en català:
Grup íntegre en espanyol:
No

Prerequisits

Convé haver après els coneixements en programació bàsica en C en els primers cursos del Grau o en altres assignatures, encara que no és imprescindible.

Objectius

L'assignatura té dues parts ben diferenciades. Un primer objectiu és aconseguir un bon domini de programació en C, de manera que els alumnes siguin capaços d'estructurar una aplicació i de programar un algorisme complexe. Un segon objectiu és aconseguir una formació en programació orientada a objectes (principalment amb Java, però també en Python), creació de llibreries i que serveixi de base per a l'aprenentatge de qualsevol llenguatge orientat a objectes.
 
Les pràctiques es basen en fer dos jocs: un en C i l'altre en Java.
El desenvolupament de jocs com a base de les pràctiques de l'assignatura proporciona la obligatorietat de fer servir molts aspectes diferents dels llenguatges de programació i fa que les pràctiques siguin més atractives per a l'alumne. Tot això fa de motivant per a què l'alumne estigui més interessat pel desenvolupament de l'assignatura.

Competències

  • Demostrar de forma activa una elevada preocupació per la qualitat en el moment d'argumentar o exposar les conclusions dels seus treballs
  • Desenvolupar un pensament i un raonament crític i saber comunicar-ho de manera efectiva, tant en les llengües pròpies com en una tercera llengua
  • Distingir, davant d'un problema o situació, el que és substancial del qual és purament ocasional o circumstancial.
  • Generar propostes innovadores i competitives en la recerca i en l'activitat professional.
  • Que els estudiants hagin demostrat posseir i comprendre coneixements en un à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 recolza en llibres de text avançats, inclou també alguns aspectes que impliquen coneixements procedents de l'avantguarda del seu camp d'estudi.
  • Que els estudiants hagin desenvolupat les habilitats d'aprenentatge necessàries per a emprendre estudis posteriors amb un alt grau d'autonomia.
  • Que els estudiants puguin transmetre información idees, problemes i solucions a un públic tan especialitzat com no especialitzat
  • Que els estudiants sàpiguen aplicar els seus coneixements al seu treball o vocació d'una forma professional i posseeixin les competències que solen demostrar-se per mitjà de l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi.
  • Reconèixer la presència de les Matemàtiques en altres disciplines
  • Treballar en equip.
  • Utilitzar aplicacions informàtiques d'anàlisi estadística, càlcul numèric i simbòlic, visualització gràfica, optimització o altres per experimentar en Matemàtiques i resoldre problemes
  • Utilitzar eficaçment bibliografia i recursos electrònics per obtenir informació

Resultats d'aprenentatge

  1. Conèixer l'arquitectura i les especificacions de funcionament dels productes programari, coneixent la naturalesa i les possibilitats que els diferents llenguatges de codificació li proporcionen.
  2. Conèixer les diferents activitats implicades en les fases del cicle de vida de productes programari i les seves aplicacions.
  3. Demostrar de forma activa una elevada preocupació per la qualitat en el moment d'argumentar o exposar les conclusions dels seus treballs
  4. Desenvolupar un pensament i un raonament crític i saber comunicar-ho de manera efectiva, tant en les llengües pròpies com en una tercera llengua
  5. Dominar les metodologies i eines de desenvolupament dels sistemes d'informació, dels sistemes de gestió de bases de dades i de les eines per a l'automatització del desenvolupament dels productes programari.
  6. Generar propostes innovadores i competitives en la recerca i en l'activitat professional.
  7. Poder realitzar la implementació total o parcial del producte programari i poder dissenyar els mètodes de verificació i validació.
  8. Que els estudiants hagin demostrat posseir i comprendre coneixements en un à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 recolza en llibres de text avançats, inclou també alguns aspectes que impliquen coneixements procedents de l'avantguarda del seu camp d'estudi.
  9. Que els estudiants hagin desenvolupat les habilitats d'aprenentatge necessàries per a emprendre estudis posteriors amb un alt grau d'autonomia.
  10. Que els estudiants puguin transmetre información idees, problemes i solucions a un públic tan especialitzat com no especialitzat
  11. Que els estudiants sàpiguen aplicar els seus coneixements al seu treball o vocació d'una forma professional i posseeixin les competències que solen demostrar-se per mitjà de l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi.
  12. Saber analitzar, dissenyar i implementar sistemes basats en computadors en general, utilitzant tècniques i mètodes que assegurin la seva eficàcia i eficiència.
  13. Saber aportar solucions científicament vàlides i tecnològicament actuals.
  14. Tenir coneixements de maquinari i sistemes de comunicacions.
  15. Treballar en equip.
  16. Utilitzar eficaçment bibliografia i recursos electrònics per obtenir informació.

Continguts

Primera part.

1. Recordatori de programació  estructurada i modular aplicada al C.
  1.1. Recordatori bàsic
     

1.1.1. Estructures i tipus de dades

1.1.2. Estructures de seqüència, control i iteració

1.1.3. Procedimiments i funcions

  1.2. Estructures dinàmiques
     

1.2.1 Organització de punters i adreces de memòria

1.2.2. Estructures bàsiques: piles, llistes i cues.

1.2.3. Arbres

1.2.4. Matrius dinàmiques

2. Recursivitat.
 

2.1. Fonaments de la recursivitat

2.2. Algorismes de cerca de solucions mitjançant arbres:

     

2.2.1. Amplitud prioritària i profunditat prioritària.

2.2.2. Backtraking.

 

Segona part

3.Programació orientada a objectes
   

3.1. Conceptes generals y característiques.

3.2. Classes i objectes

3.3. Anàlisi i disseny orientat a objectes.

4. Java
   

4.1. Característiques del llenguatge.

4.2 Classes, bucles, funcions i estructures del llenguatge

  5. Python en Programació Orientada a Objectes

 

 *Llevat que les restriccions imposades per les autoritats sanitàries obliguin a una priorització o reducció d’aquests continguts.

Metodologia

Classes  teòriques, de problemes i pràctiques:

Es presentaran els conceptes de l’assignatura. Es farà èmfasi en la interpretació dels resultats i en la relació entre aquests conceptes i les seves aplicacions. Es presentaran exemples que permetin als alumnes abordar de forma autònoma la resolució de problemes.

Es discutirà la resolució dels problemes proposats.

La base de l’assignatura serà absolutament pràctica. Això implica que les classes es fan totalment en ordinador. Els conceptes teòrics seran explicats en cada sessió i seran complementats amb exercicis proposats pel professor, que s'hauran de programar directament a l’ordinador amb la seva supervisió.

 

Tutories:

El professor supervisarà i avaluarà el treball dels estudiants. Aquests plantejaran els dubtes que els hagin sorgit en la resolució dels exercicis plantejats. 

En les primeres sessions de tutoria el professor recollirà informació sobre la formació de cada estudiant i l'assessorarà sobre com corregir possibles mancances. En la resta de sessions de tutoria es resoldran dubtes i es discutirà la resolució dels  problemes.

 

Activitats autònomes:

Els exercicis i pràctiques hauran de ser resolts de manera individual. No té cap mena de sentit, en aquesta assignatura, el formar grups de pràctiques de més d’un alumne per a resoldre les pràctiques.

 

*La metodologia docent proposada pot experimentar alguna modificació en funció de les restriccions a la presencialitat que imposin les autoritats sanitàries.

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.

Activitats formatives

Títol Hores ECTS Resultats d'aprenentatge
Tipus: Dirigides      
Classes teòriques, de problemes i pràctiques 45 1,8 7
Tipus: Autònomes      
Estudi personal i desenvolupament de pràctiques 97 3,88 7

Avaluació

Mòdul de teoria i problemes (pes 33%).

Examen final, fent que l’alumne respongui els conceptes teòrics a partir de problemes de programació que es plantegen.

 

Mòdul de pràctiques (pes  66%)
Les dues pràctiques de l’assignatura contaran cadascuna com un 33% de la nota final

 

Exàmens

Les Matrícules d'Honor no es concediran als estudiants que optin per fer l'examen de recuperació.

S'aplicarà la qualificació "No avaluable" als estudiants que no es presentin a l'examen.

L'examen de recuperació s'aplica només als estudiants que no han aprovat l'assignatura.

 

*Lavaluació proposada pot experimentar alguna modificació en funció de les restriccions a la presencialitat que imposin les autoritats sanitàries.

 

 -

Activitats d'avaluació

Títol Pes Hores ECTS Resultats d'aprenentatge
Examen 33% 4 0,16 3, 4, 5, 8, 11
Examen de recuperació 33% 4 0,16 3, 4, 5, 8, 11
Lliurament de pràctiques 66% 0 0 1, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

Bibliografia

C                                                                                                          

C/C++. Curso de programación. 4ª Edición.

Fco. Javier Ceballos Sierra;Fco. Javier Ceballos Sierra

 

eBook eBook | 2015

 

JAVA                                                                                                                

- Learning Java : An Introduction to Real-World Programming with Java

Marc Loy;Patrick Niemeyer;Daniel Leuck;Marc Loy;Patrick Niemeyer;Daniel Leu...

 

eBook eBook | 2020

- Java Cookbook : Problems and Solutions for Java Developers

Ian F. Darwin;Ian F. Darwin

 

eBook eBook | 2020

- Foundational Java : KeyElements and Practical Programming

David Parsons;David Parsons

 

eBook eBook | 2020

 

PYTHON                                                                                                      

- Python : an introduction to programming / James Parker

 

 Llibre en línia | 2017
 
- High Performance Python : Practical Performant Programming for Humans
Micha Gorelick;Ian Ozsvald;Micha Gorelick;Ian Ozsvald
eBook eBook | 2020
 
- Python : An Introduction to Programming
Parker, James R.;Parker, James R.
eBook eBook | 2021
 
Guido van Rossum, "El Tutorial de Python" (Una introducción informal a Pyhon),

      - Python 2: http://docs.python.org.ar/tutorial/pdfs/TutorialPython2.pdf
      - Python 3: http://docs.python.org.ar/tutorial/pdfs/TutorialPython3.pdf

- Mark Lutz, "Learning Python", Ed. O'Reilly

- Raúl González Duque, "Python para todos", http://mundogeek.net/tutorial-python/

-"Python tutorial", https://www.tutorialspoint.com/python/

 

Altres llibres                                                                              

- "The C++ Programming Language", B.Stroustrup, 3ªed.,Addison-Wesley, 1997.

- "Programación en C/C++", M.Alfonseca, A.Sierra, Anaya-Multimedia, 1999.

- "El lenguaje de programación Java", K.Arnold, J.Gosling, Addison-Wesley, 1997

- "Programación en JAVA 2", J.Zukowski, Anaya-Multimedia, 1999

- "Descubre Java 1.2", M.Morgan, Prentice Hall, 1999.

- "Java2: The Complete Reference", P.Naughton, H.Schildt, Osborne/McGraw-Hill, 2000

- "Core Java" Volúmenes I y  II, C.S.Horstmann, G.Cornell, Sun Microsystems Press.

Programari

https://www.codeblocks.org/downloads/binaries/

https://www.eclipse.org/downloads/

https://code.visualstudio.com/download