Data Structures-Syllabus-2020-I
Data Structures-Syllabus-2020-I
TERM: 2020-I
INSTRUCTORS:
MAIN GOAL
To study concepts, techniques and basic methods on fundamental data structures, as well as their implementation
and efficient applications for problem-solving.
SPECIFIC GOALS
● To understand the main data structures (as data collections) and their defined set of operations.
● To implement the main data structures and the operations that can be performed on them in
several ways and at least one programming language.
● To solve information management problems through suitable abstraction, detailed design, and
optimized implementation to a particular situation.pp
● To produce implementations of data structures and their operations, contemplating quality
aspects such as correction, encapsulation, modularity, efficiency, and simplicity.
● To use other thinking paradigms to design algorithms that allow the students to improve their
abilities to solve problems.
● To perform comparative analysis of the main data structures and associated algorithms.
● To be able to understand, apply and code the data structures learned in the solution of
computational problems, using the students’ own implementations and those standard libraries of
the selected programming language.
METHODOLOGY
● This course will combine traditional lecturing with hands-on exercises to reinforce student learning.
Students are expected to attend classes regularly, take tests, and submit assignments and other work at the
times specified by the instructor.
● A class project will be developed in groups of students to reinforce the application of the main data
structures concepts and algorithms. Students will be required to work in teams. Individual class projects
will not be allowed, only under exceptional conditions and with a proper justification, such as a medical
condition with the corresponding clinical concept.
CONTENTS
● Introduction
○ Syllabus Presentation
○ Java Overview and Introduction to Programming Judges
○ Asymptotic Analysis
● Linear data structures
○ Linked Lists
○ Queues, Stacks and Circular Arrays
○ Dynamic Arrays and Amortized Analysis
● Trees
○ Tree Terminology
○ Tree Traversals (Inorder, Preorder, Postorder, Level Order)
○ Binary Search Trees (BST)
○ AVL Trees
○ Heaps
○ Heap-Sort
○ Disjoint Sets
● Hashing
○ Hashing and Hash Functions
○ Hash Tables
○ Rabin-Karp’s algorithm
● Graphs
○ Terminology
○ Representation of graphs
○ Operations on Graphs
○ Graph Traversals (Depth First Search- DFS, Breadth First Search-BFS, A*)
Everybody in the class is expected to show courtesy, civility, and respect for one another. Students are expected to
do their own work. Cheating, plagiarism and any other form of academic dishonesty will not be tolerated.
Students are encouraged to discuss ideas and techniques broadly with other class members, but not specifics of
assigned problems. Sharing of code or intermediate designs for the assigned problems is expressly prohibited.
This will be a zero-tolerance policy.
It is permissible to use software and materials available from other sources (understanding that you get no credit
for using the work of others on those parts of your problems) as long as: 1) You acknowledge explicitly which
aspects of your assignment were taken from other sources and what those sources are. 2) The materials are freely
and legally available. 3) The material was not created by a student of this course this year or in prior years.
CLASS ATTENDANCE AND ABSENCES
This course assumes an interactive approach in its structure and in its presentation, which requires engaged
participation from all members of the class. Your presence is essential to the success of this course and
accordingly to your individual success in it. Therefore, regular attendance is expected and considered mandatory.
Each student is allowed four absences from class for the entire semester without direct penalty to his or her grade,
this does not include penalties that may result from missing in-class activities, take-home assignments or project
deadlines.
GRADING POLICY
The evaluation system consists of a point system, in which students will need to accumulate at least 300 points to
get a passing grade of 3.0. If someone achieves 500 points or more, their corresponding grade will be 5.0. Since
the amount of quizzes or class homeworks is not bounded, it is possible to accumulate more than 500 points. Each
instructor expects to have quizzes, review quizzes or exercises, particular lab exercises and other tasks to
complete a minimum of 65 points.
Important: In the practical exercises (labs), given that for one assignment different implementations are possible,
only credit will be granted to the solutions that meet the requirements for the use of data structures established in
the exercises.
Grading
Lab: implementation of 15 3%
hashing-based data structures
* Important note: to meet the objectives of the course, the credit for partial deliveries on the project development
will only be taken into account when the project final report is delivered. To make it clear, if the final delivery of
the project does not occur, the total grade assigned to this course activity will be zero.
BIBLIOGRAPHY
● M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3rd Ed., Pearson, 2012.
● L. Joyanes and I. Zahonero. Estructuras de datos en Java, 1st Ed., McGraw-Hill, 2008.
● C. A. Shaffer, Data Structures and Algorithm Analysis, Edition 3.2 (Java Version), Virginia
Tech, 2012.
● H. M. Deitel and P. J. Deitel, Java How to Program, 9th Ed., Prentice Hall, 2012.
● R. Sedgewick and K. Wayne, Algorithms, 4th Edition, Princeton University, Addison-Wesley,
2011.
● S. Sahni, Data Structures, Algorithms and Applications in Java, Silicon Press; 2nd edition, 2004.
● Aho, J. Hopcroft and J. Ullman, Data Structures and Algorithms,Addison-Wesley, 1983.
● Streib, J. T., & Soma, T. (2017). Guide to Data Structures: A Concise Introduction Using Java.
Springer.
OTHER RESOURCES: