Vés al contingut

Programació Aplicada I

Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits , però té capacitats prèvies
Departament
CS
Web
http://www.cs.upc.edu/~ap1
Mail
ap1@cs.upc.edu
El curs presenta els elements d'un llenguatge de programació informàtica i els fonaments algorísmics bàsics per treballar amb dades escalars i estructurades. Durant el curs els estudiants adquiriran els coneixements per abordar problemes de programació de complexitat baixa i mitjana.
El curs cobreix conceptes i tècniques bàsiques per construir programes en llenguatges imperatius.


1. coneixerà els components bàsics dels llenguatges imperatius: variables, tipus, expressions, condicionals i iteracions.
2. serà capaç d'utilitzar i dissenyar procediments (accions i funcions) per encapsular solucions de subproblemes.
3. serà capaç d'utilitzar la metodologia del disseny descendent per donar solucions a problemes de dificultat mitjana.
4. serà capaç d'utilitzar vectors i diccionaris per emmagatzemar informació estructurada i com a base per al disseny d'estructures de dades.
5. Coneixerà i sabrà reproduir i utilitzar correctament alguns algorismes fonamentals, com ara la cerca dicotòmica o els algorismes elementals d'ordenació vectorial.

El llenguatge de programació utilitzat en aquest curs és Python, encara que l'èmfasi no està en l'aprenentatge dels detalls del llenguatge sinó en la resolució de problemes algorísmics i la construcció de programes estructurats.

Professorat

Responsable

Hores setmanals

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

Competències

Coneixements

  • K3 - Identificar els fonaments matemàtics, les teories informàtiques, els esquemes algorísmics i els principis d'organització de la informació aplicables al modelat de sistemes biològics i a la resolució eficient de problemes bioinformàtics mitjançant el disseny d'eines computacionals.
  • K4 - Integrar els conceptes oferts pels llenguatges de programació de major ús en l'àmbit de les Ciències de la Vida per a modelar i optimitzar estructures de dades i construir algorismes eficients, relacionant-los entre sí i amb els seus casos d'aplicació.
  • Habilitats

  • S7 - Implementar mètodes de programació i anàlisi de dades a partir de l'elaboració d'hipòtesis de treball, dins de l'àrea d'estudi.
  • S8 - Enfrontar-se a la presa de decisions, i defensar-les amb arguments, en la resolució de problemes de les àrees de biologia, així com, dins dels àmbits adequats, les ciències de la salut, les ciències de la computació i les ciències experimentals.
  • Competències

  • C6 - Detectar deficiències en el propi coneixement i superar-les mitjançant la reflexió crítica i l'elecció de la millor actuació per a ampliar aquest coneixement.
  • Objectius

    1. Entendre com construir un programa i utilitzar les eines les eines necessàries: consola, editor i compilador.
      Competències relacionades: K4, C6,
    2. Comprendre la sintaxi i la semàntica d'expressions i instruccions bàsiques en un llenguatge de programació imperatiu (Python).
      Competències relacionades: K4, C6,
    3. Comprendre els conceptes de funció, procediment i pas de paràmetres, per poder-ho
      utilitzar funcions i procediments per desenvolupar programes.
      Competències relacionades: K4, C6,
    4. Comprendre llistes, diccionaris i conjunts, i identificar com utilitzar-los adequadament per resoldre problemes
      Competències relacionades: K3, K4, S7, C6,
    5. Comparar solucions pel que fa a l'ús del temps i de la memòria i triar les solucions més adequades per a casos senzills.
      Competències relacionades: K3, S7, S8, C6,
    6. Comprendre esquemes de cerca i recorregut i aplicar-los adequadament per resoldre problemes.
      Competències relacionades: K3, S7, C6,
    7. Entendre la cerca binària i els algorismes d'ordenació bàsics (inserció, selecció, bombolla, mergesort)
      Competències relacionades: K3, S8, C6,

    Continguts

    1. Basic Programming concepts
      Introduction: algorithm, program
      - variable, expression,
      - assignment. I/O. Conditional
      - Iiterative statements.

      Solving problems with scalar data
    2. Iterative schemas
      Traversal & Search schemas.
      Invariants
    3. Functions and Procedures
      Function design and parameter passing.
      Function design examples.
    4. Lists
      Representation of data structures with lists. Traversal and search algorithms on lists. Python memory management of Lists
    5. Matrices
      Basic algorithms on matrices: sum, symmetric, transpose, multiplication.
      Python memory management of Matrices
    6. Dictionaries
      Memory representation of dictionaries. Hashing concept.
      Mutability. Tuples.
      Counters. Sets.
      FrozenSets
    7. Computational Complexity
      Basic notions of computational complexity
    8. Sort algorithms
      Bubble sort
      Insertion sort
      Selection sort
      Mergesort
      sorting Python structures using lambda as key
    9. Standard Python Input
      readline
      readlines
      strip
      split

    Activitats

    Activitat Acte avaluatiu


    Basic concepts of programming

    Introduction: algorithm, program, variable, expression, assignment. I/O. Conditional Iiterative statements. Solving problems with scalar data
    Objectius: 1 2
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Iterative schemas

    Traversal & Search problems Invariants. Loop design
    Objectius: 2 6
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Functions.

    Functions: design and parameter passing. Function design examples.
    Objectius: 3
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Lists and Matrices

    Representation of data structures with lists. Traversal and search algorithms on lists. Python memory management of Lists Matrices. Basic algorithms on matrices: sum, symmetric, transpose, multiplication. Python memory management of Matrices
    Objectius: 4
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Dictionaries and Sets

    Dictionaries. Memory representation. Hashing concept. Counters. Sets. Memory representation. FrozenSets.
    Objectius: 4 5
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Computational Complexity

    Basic notions of computational complexity
    Objectius: 5 6 7
    Continguts:
    Teoria
    2h
    Problemes
    2h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    6h

    Sort algorithms

    Bubble sort Insertion sort Selection sort sorting Python structures. Using lambda as key
    Objectius: 7
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Data Structure Design

    Representing complex data. lists of lists, lists of dictionaries, dictionaries with lists, embedded dictionaries. dicctionaries with structured keys (tuples/frozensets) Problem solving via appropriate data structures
    Objectius: 4 5
    Continguts:
    Teoria
    4h
    Problemes
    4h
    Laboratori
    0h
    Aprenentatge dirigit
    0h
    Aprenentatge autònom
    12h

    Metodologia docent

    During theoretical sessions, the professor will expose programming concepts, combined with examples and problem solving.

    During problem-solving sessions, students will work on their own solving problems with an online platform (El Jutge), under supervison and assistance of the professor when needed

    Mètode d'avaluació

    hi haura dos examens. Un parcial i un final
    Addicionalment, hi haura algunes proves evaluables realitzades durant les classes de problemes, anunciades amb antelacio.

    NotaFinal = 0.10*NP + 0.90*max(EF, 0.4*EP+0.6*EF)

    on:
    NP : Nota de problemes. Testos curts realitzas a les classes de problemes
    EP: Examen parcial
    EF: Examen final

    Es podran presentar a reevaluacio els estudiants que no hagin superat el curs.
    La reevaluació consistirà en un exàmen adiccional, la nota del qual substituirà la de EF.

    Bibliografia

    Bàsic

    Complementari

    Web links

    Capacitats prèvies

    cap