Credits
6
Types
Compulsory
Requirements
This subject has not requirements
, but it has got previous capacities
Department
CS
Teachers
Person in charge
- Jordi Delgado Pin ( jdelgado@cs.upc.edu )
Others
- Caroline König ( caroline.leonore.konig@upc.edu )
- Jose Luis Balcázar Navarro ( jose.luis.balcazar@upc.edu )
Weekly hours
Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6
Competences
Transversals
Especifics
Generic
Objectives
-
Learn new data structures: Stacks, Queues, Lists, Trees and Graphs and the algorithms associated with the necessary operations on these structures.
Related competences: CG2, CG4, CT6, CE03, CE04, CE12, -
Learn different implementations of data structures: Implementations using simpler data structures provided by the programming language, and dynamic implementations.
Related competences: CG2, CG4, CE02, CE03, CE04, CE12, -
Learn the basics of object oriented programming: Concepts of class, instance, method, inheritance (single and multiple), etc.
Related competences: CG2, CG4, CT6, CE03, CE04, CE10, -
Extension of Computational Complexity: Big O, Big Omega, Master Theorems
Related competences: CG2, CG4, CT6, CE02, CE12, CE13, -
Solve a small/medium-sized problem in group, applying what they have learned about object orientation
Related competences: CG2, CG4, CG8, CT4, CE03, CE04, CE10,
Contents
-
Trees and Graphs
We will start the course using the data structures that the programming language provides us to implement Trees and Graphs. We will look at path algorithms for both structures, and other important algorithms related to these, such as Dijkstra's algorithm. -
Objects and Classes
The fundamental concepts of object orientation are introduced: Class, object, instance, delegation, inheritance, etc. and other particularities of the implementation of object orientation specific to the programming language we work with. -
Dynamic data structures
We will learn how to implement known data structures using the concept of reference to an object. We will re-implement data structures that the programming language provides by default, and new data structures that we have already seen implemented more easily. -
Sets and Dictionaries: Implementation
We will look at different ways to implement sets and dictionaries: Hash Tables and Binary Search Trees (BSTs). The properties, advantages and disadvantages of these structures will be studied. -
Algorithm Complexity (II)
In PA1 we started the study of the concept of complexity of a program, an algorithm and a problem, and we introduced the asymptotic notation, though only the definition of Theta (f). This topic is a continuation, where we will see the Big O, the Big Omega, etc., and the Master Theorems.
Activities
Activity Evaluation act
Algorithmic Complexity (II)
The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.Objectives: 4
Contents:
Theory
6h
Problems
0h
Laboratory
6h
Guided learning
0h
Autonomous learning
8h
Teaching methodology
Teaching the course is structured in lectures and laboratory sessions.Teachers will use lectures to introduce the essential contents of the course. In the laboratory sessions the contents of the course will be brought to the computer by carrying out practical problems. The laboratory classes will be a continuation of the lectures, where new concepts will be implemented as they appear in lectures.
Evaluation methodology
Grading the course will consist of two theoretical tests (T1 and T2), one mid-course and the other at the end, and one medium-sized practical work (Practice).Then, the evaluation method would be:
0.8 * Theory + 0.2 * Practice
where:
Theory: MAX(T2, 0.5 * T1 + 0.5 * T2)
Reassessment: Only those who have failed the theory part, after taking the final exam, may take the reassessment. The maximum grade that can be obtained in the reassessment is 7.
Teamwork:
Evaluated using a simple rubric that each group tutor group uses
to rank different aspects of teamwork of every member of the group.
Bibliography
Basic
-
Composing programs
- DeNero, John,
-
Structure and interpretation of computer programs
- Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie,
MIT Press [etc.],
1996.
ISBN: 9780262011532
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002456139706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Data structures and algorithms with Python
- Lee, Kent D; Hubbard, Steve,
Springer,
2014.
ISBN: 9783319130712
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004152009706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementary
-
Python pocket reference
- Lutz, Mark,
O'Reilly Media,
2014.
ISBN: 9781449356941
Web links
- Aquest és el text PRINCIPAL de l'assignatura, la font d'informació primària per a tot allò que expliquem a classe. Tot i això, a PA2 hi ha temes que no apareixen en aquest text. http://composingprograms.com/
- 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