Data Structures and
Algorithms
Ciprian Cornea
Faculty of Mathematics and Computer Scienceoverview
materials
labs
evaluation
The Algorithms and Data Structures course is designed to provide students with a solid knowledge of efficient algorithms and fundamental data structures in computer science. The course addresses essential concepts underlying software development and efficient computational problem solving.
Students will learn the basic principles of algorithms, including time and space complexity analysis.
Explore various data structures such as lists, stacks, queues, trees, and graphs, and understand how they influence the efficiency of algorithms.
Develop skills in designing efficient algorithms for various problems such as sorting, searching, and traversing graphs.
Application of theoretical knowledge in practical projects and labs to reinforce understanding and practical skills.
Reference books: "Introduction to Algorithms" by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
Fundamentals of algorithms and data structures, basic terminology.
Methods for analyzing algorithm efficiency, notations, and complexities.
Study and implementation of sorting and searching algorithms in various scenarios.
Implementation and usage of lists, stacks, and queues in practical contexts.
Exploration of concepts related to trees, including binary trees and AVL trees.
Study of graphs and application of traversal algorithms in depth-first and breadth-first manners.
Understanding and implementation of divide and conquer algorithms for solving complex problems.
Study and application of dynamic programming techniques for algorithm optimization.
Utilization of greedy algorithms in solving optimization problems.
Application of network flow algorithms to solve network-related problems.
Study of NP-hard problems and strategies for efficiently approximate solutions.
Application of knowledge in practical projects, solving complex problems, and developing a final project.
Practical Tasks:
Expected Outcomes:
Practical Tasks:
Expected Outcomes:
Practical Tasks:
Expected Outcomes:
Practical Tasks:
Expected Outcomes:
Practical tasks focusing on algorithm implementation and data structure usage. Assessment based on correctness, efficiency, and documentation of implemented algorithms.
Periodic assessments evaluating theoretical understanding and problem-solving skills. Topics include algorithm design, complexity analysis, and data structure application.
Application of knowledge to solve complex problems. Evaluation based on problem-solving approach, implementation, and presentation.
Accuracy and efficiency of implemented algorithms. Analysis of time and space complexity.
Proficiency in utilizing various data structures (lists, stacks, queues, trees, graphs) for problem-solving.
Application of theoretical concepts in labs and projects. Proper documentation and reporting of implemented algorithms and structures.
Assignments/Labs: 30%
Examinations: 40%
Final Project: 30%
Regular feedback sessions for addressing concerns and providing
guidance.
Detailed feedback on assignments, labs, and the final project.