Identifying Data 2019/20
Subject (*) Fundamentals of Programming II Code 614G02009
Study programme
Grao en Ciencia e Enxeñaría de Datos
Descriptors Cycle Period Year Type Credits
Graduate 2nd four-month period
First Basic training 6
Language
Spanish
Teaching method Face-to-face
Prerequisites
Department Ciencias da Computación e Tecnoloxías da Información
Coordinador
Alonso Pardo, Miguel angel
E-mail
miguel.alonso@udc.es
Lecturers
Alonso Pardo, Miguel angel
Cabrero Canosa, Mariano Javier
Hernandez Pereira, Elena Maria
E-mail
miguel.alonso@udc.es
mariano.cabrero@udc.es
elena.hernandez@udc.es
Web http://moodle.udc.es
General description Nesta materia preséntanse as técnicas de deseño de programas, incluindo os fundamentos da orientación a obxectos, asi como as estruturas de datos básicas en computación e os seus principios de uso.

A materia pertence ao bloque Programación e Algoritmos, polo que a relación más estreita dase coas outras dos materias deste mesmo bloque: Fundamentos de Programación I (que se pode considerar predecesora directa) e Deseño e Análise de Algoritmos (que se pode considerar sucesora directa). Con respecto aos outros bloques, as relacións máis directas danse con Bases de Datos e Sistemas para Procesamento de Datos. Outro bloque temático de materias relacionadas é o que forman aquelas de Fundamentos Matemáticos, e dentro deste grupo, especialmente a materia Matemática Discreta.

Study programme competencies
Code Study programme competences
A5 CE5 - Coñecemento de estruturas de datos e algoritmos básicos e capacidade para utilizalos eficientemente na resolución dun problema.
B1 CB1 - Que os estudantes demostrasen posuír e comprender coñecementos nunha área de estudo que parte da base da educación secundaria xeral, e adóitase atopar a un nivel que, aínda que se apoia en libros de texto avanzados, inclúe tamén algúns aspectos que implican coñecementos procedentes da vangarda do seu campo de estudo
B5 CB5 - Que os estudantes desenvolvesen aquelas habilidades de aprendizaxe necesarias para emprender estudos posteriores cun alto grao de autonomía
B6 CG1 - Ser capaz de buscar e seleccionar a información útil necesaria para resolver problemas complexos, manexando con soltura as fontes bibliográficas do campo.
C1 CT1 - Utilizar as ferramentas básicas das tecnoloxías da información e as comunicacións (TIC) necesarias para o exercicio da súa profesión e para a aprendizaxe ao longo da súa vida.

Learning aims
Learning outcomes Study programme competences
Comprender e saber programar utilizando orientación a obxectos B1
B5
B6
C1
Coñecer e saber usar linguaxes de programación de relevancia actual B1
B5
B6
C1
Comprender os principios básicos de almacenamento de datos e a súa manipulación A5
B1
B6
C1
Coñecer e saber utilizar as estruturas de datos estándar en computación e os algoritmos máis relevantes para manipulalas A5
B5
B6
C1
Identificar a estrutura de datos máis adecuada para un problema determinado A5
B5
B6
C1

Contents
Topic Sub-topic
Técnicas de deseño de programas Abstracción e especificacación
Módulos funcionais e de datos
Manexo de excepcións y eventos
Orientación a obxectos Clases e obxectos. Métodos.
Clases e funcións
Herencia
Interfaces e Polimorfismo
Utilización das estruturas de datos básicas en computación Listas
Pilas
Colas
Colas de Prioridade
Dicionarios
Árbores
Árbores Binarias de Busca
Tablas Hash
Grafos

Planning
Methodologies / tests Competencies Ordinary class hours Student’s personal work hours Total hours
Guest lecture / keynote speech A5 B1 B5 B6 30 24 54
Laboratory practice A5 B1 B5 B6 C1 20 36 56
Problem solving A5 B1 B5 B6 C1 10 17.5 27.5
Objective test A5 B1 B5 B6 3 7.5 10.5
 
Personalized attention 2 0 2
 
(*)The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies Description
Guest lecture / keynote speech Nas clases presenciais de teoría, o profesor realizará unha breve descrición dos contidos temáticos e dos obxectivos básicos perseguidos, co fin de dotar o alumno dunha visión global da materia. Ademais tratará de establecer interrelacións con outros conceptos previamente adquiridos, de forma que se poida establecer unha liña temporal, e expoñerá a bibliografía recomendada. Seguidamente pasará a desenvolver os contidos teóricos, utilizando como método a clase maxistral.
Laboratory practice As clases de prácticas obrigan á realización de prácticas de programación nunha linguaxe de alto nivel. Impoñerase unha periodicidade na súa entrega para fomentar o estudo continuo. O enunciado das prácticas, que se proporcionará coa suficiente antelación para que o alumno o lea con detemento e analice en profundidade, detallará o problema e as especificacións, que deberán respectarse estritamente. Posteriormente, o labor do profesor será o de supervisar as sesións de prácticas, solucionando dúbidas e corrixindo erros de interpretación, malos hábitos de programación e erros de sintaxe, etc.
Problem solving Nas clases presenciais de problemas, co fin de afianzar os conceptos teóricos presentaranse supostos prácticos, que nun principio serán resoltos polo profesor para orientar os alumnos. A medida que se avance no desenvolvemento teórico formularase a resolución de problemas por parte dos alumnos, constituídos en grupos de traballo. A devandita actividade, así como a discusión e participación activa en clase, valoraranse na nota final.

Tanto nas clases de problemas coma nos exemplos mostrados durante as exposicións teóricas, cando estes impliquen o desenvolvemento de código ou pseudocódigo este realizarase mostrando os sucesivos pasos do deseño descendente. Con isto pretendemos: a) que o alumno se acostume ao uso deste método, e b) evitar que se perda nos detalles de sintaxe e as características particulares da linguaxe, en lugar de fixar a súa atención na comprensión e deseño da solución.

Como actividades non presenciais, formularanse exercicios adicionais que o alumno deberá resolver e comentar/corrixir co profesor durante as horas de titorías, colectivas e/ou individuais. Trátase de fomentar a participación dos alumnos e promover, na medida do posible, o diálogo aberto e a valoración de solucións.
Objective test Avaliación sumativa do alumno mediante un exame final ao termo do cuadrimestre. Este será eminentemente práctico para que o alumno poida demostrar que adquiriu os coñecementos necesarios de deseño de programas, orientación a obxectos e utilización de estruturas de datos, e que adestrou o suficiente como para posuír as habilidades precisas para resolver supostos prácticos que implique a aplicación dos devanditos coñecementos.

Personalized attention
Methodologies
Laboratory practice
Problem solving
Description
O desenvolvemento, tanto das clases maxistrais coma das de resolución de problemas e os laboratorios de prácticas, realizarase atendendo ao progreso dos alumnos nas capacidades de comprensión e asimilación dos contidos impartidos. O avance xeral da clase compaxinarase cunha atención específica a aqueles alumnos que presenten maiores dificultades na tarefa da aprendizaxe e cun apoio adicional a aqueles outros que presenten maior desenvoltura e desexen ampliar coñecementos.

No que respecta ás titorías individuais, dado o seu carácter personalizado, non deben dedicarse a estender os contidos con novos conceptos, senón a aclarar os conceptos xa expostos. O profesor utilizaraas como unha interacción que lle permita extraer conclusións respecto ao grao de asimilación da materia por parte dos alumnos.

Assessment
Methodologies Competencies Description Qualification
Laboratory practice A5 B1 B5 B6 C1 Realización segundo as condicións establecidas no enunciado de cada práctica. 20
Problem solving A5 B1 B5 B6 C1 Valoraranse os resultados, forma e condicións de realización de diversos traballos puntuables que se detallarán durante o curso. 10
Objective test A5 B1 B5 B6 Realización obrigatoria. Necesario aprobar a proba para superar a materia. 70
 
Assessment comments

Traballos prácticos e solución de problemas

- De acordo
ao artigo 14, apartado 4, da normativa*, o plaxio dos traballos
levará unha nota global de NON APTO, tanto ao estudante que
presente material copiado como a quen o facilitase, e a
cualificación de SUSPENSO na convocatoria anual.

Matrícula a tempo parcial

-
Os alumnos matriculados a tempo parcial terán que entregar as
actividades avaliables nas condicións e prazos específicos que se
establecerán. Será obriga do estudante comunicar a súa situación ao
profesorado.

Non presentado

- Quen non concurra á proba obxectiva no período oficial de avaliación terá a condición de “Non presentado” (NP).


*
Normativa de avaliación, revisión e reclamación das cualificacións dos
estudos de grao e máster universitario, aprobada polo Consello de
Goberno da Universidade da Coruña o 19 de decembro de 2013.


Sources of information
Basic Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser (2013). Data Structures and Algorithms in Python. John Wiley & Sons
Kenneth A. Lambert (2013). Fundamentals of Python: Data Structures. Course Technology

Complementary Bradley N. Miller, David L. Ranum (2013). Problem Solving with Algorithms and Data Structures using Python. Franklin, Beedle & Associates
Benjamin Baka (2017). Python Data Structures and Algorithms: Improve application performance with graphs, stacks, and queues. Packt Publishing
Sitio web da contorna de desenvolvemento Spyder: https://www.spyder-ide.org/
Sitio web da plataforma para ciencia de datos Anaconda: https://www.anaconda.com/

Libro de Miller & Ranum: https://runestone.academy/runestone/static/pythonds/index.html

Recommendations
Subjects that it is recommended to have taken before
Discrete Mathematics/614G02002
Fundamentals of Programming I/614G02004

Subjects that are recommended to be taken simultaneously

Subjects that continue the syllabus
Design and Analysis of Algorithms/614G02011

Other comments


(*)The teaching guide is the document in which the URV publishes the information about all its courses. It is a public document and cannot be modified. Only in exceptional cases can it be revised by the competent agent or duly revised so that it is in line with current legislation.