Base Knowledge
Programming
JAVA language.
(curricular units Introduction to Programming, Programming and Advanced Programming)
Teaching Methodologies
In theoretical classes, the most relevant and representative data structures are presented, analyzed and discussed.
In laboratory classes, students operationalize this knowledge, performing exercise sheets that include analysis, implementation, testing and selection of data structures. Periodic laboratory tests allow continuous monitoring of student performance, while seminars promote greater integration of students in the learning process, through the preparation and delivery of presentations on selected topics to their colleagues.
Learning Results
Developing skill related to program curriculum, including:
– Understanding the concept of algorithmic complexity
– Knowing several data sttuctures and complexity profile of supported operations.
– Selecting an appropriate data structure according to the desired usage profile.
– Understanding the behavior of several data structures and the algorithms that are associated to them,
– Developing generic and recursive programming skills
Program
1 – Introduction
1.1 – Complexity analysis
1.2 – Generic programming
1.3 – Collection API
2 – Fundamental Structures
2.1- Stacks, queues, trees
2.1.1 – Basics
2.1.2 – Aplication – Huffman trees
2.1.3 – Aplication – Expression representation, computation and infix-postfix conversion
2.2 – Search Trees
2.2.1 – Basics
2.2.2 – AVL
2.2.3 – Red-Black
2.2.4 – B-Trees
3- Hash Tables
3.1 – Basics
3.2 – Linear and quadratic probing
3.3 – Chained hashes
4- Advanced Structures
4.1 – Heaps
4.2 – Splay Tree
4.3 – Data structures for spacial and multdimensional information.
In lab classes, algorithms and structures studied in theoretical classes will be implemented, applied and tested, using the Java language.
Curricular Unit Teachers
Jorge Miguel Sousa BarreirosGrading Methods
includes the following components
Exam - 10 points
– Written test to be carried out at the corresponding assessment period.
– The grade of written tests from previous seasons (up to 2 years) can be reused as long as their classification is greater than or equal to 50%.
Seminar - 1.5 values
– Presentation made during the school period during class time, on dates to be disclosed, on a topic of choice from a predetermined list of topics.
– This component of the grade is valid for all evaluation periods of the academic year, and cannot be replaced or improved.
– The grade of seminars from previous periods (up to 2 years) can be reused as long as their classification is greater than or equal to 50%.
Laboratory Tests - 8.5 values
– Two tests, carried out during laboratory classes, in dates to be announced.
– This component of the note is valid for the normal epoch and optionally other epochs. Outside the regular season, the exam will include an optional practice portion that replaces the lab test grade.
– The grade of laboratory tests from previous periods (up to 2 years) can be reused as long as its classification is greater than or equal to 50%.
Internship(s)
NAO
Bibliography
Goodrich, M. T. ; Tamassia, R., 2011- Data structures and algorithms in Java. 5th ed.. Hoboken, NJ : John Wiley & Sons, cop. 2011. 710 p.. ISBN 978-0-470-39880-7 (1A-1-429 (ISEC) – 16300)
Weiss, M. A., 1992 – Data structures and algorithm analysis. Redwood City, California : Benjamin/Cummings, 1992. 455 p.. ISBN 0-8053-9052-9 (1A-5-26 (ISEC) – 05840)
Cormen, T. H. ; Leiserson, Charles E. ; Rivest, Ronald L., 1997- Introduction to algorithms. Cambridge [etc.] : The MIT Press, 1997 imp. 1028 p.. ISBN 0-262-53091-0 (1A-1-427 (ISEC) – 09849)
Complementar Bibliography:
Weiss, M. A., 2009, Data Structures & Problem Solving Using Java,Pearson; 4th edition
Open data structures in java, 2023 – https://opendatastructures.org/
Provided course material (slides and annotations)