The road to becoming an efficient programmer in Java What you'll learn The student can explain, develop, and adopt iterative and recursive implementations of operations on several data structures. The student can explain and implement various sorting algorithms, and choose sorting algorithms for different problem scenarios. The student can choose search structures for different problem scenarios, and explain, implement, and analyze backtracking algorithms. The student can explain, develop and adopt implementations of various graph algorithms, and choose graph data structures for different problem scenarios. Requirements Java programming is required as expected prior knowledge. Description Algorithms and data structures are fundamental notions in computer science . Understanding how they can be exploited in combination for better programming implementations in terms of time complexity is vital for writing efficient code. This course enables the student to - Understand, explain, and implement standard data structures, explain and analyze the core properties of these data structures. - Understand, explain, and implement standard algorithms. - Apply standard data structures and algorithms to solve programming tasks where each one takes place in a different scenario. - Analyze and compare implementations with respect to their time complexity. - Understand, explain, and apply standard programming techniques in the context of standard data structures Regarding the learning objectives of this course, the student will learn about the following components Data Structures Data Containers: e.g. list, tree, set Ordered Data Structures: e.g. stack, queue, priority queue, map Operations on Data Structures: e.g. iterative implementations, recursive implementations Sorting Algorithms selection sort, insertion sort, merge sort, quick sort Trees search, insertion, deletion binary tree, binary search tree tree traversals: e.g. pre-order, post-order, in-order, breadth-first traversal Hashing Hash table: representation of a map Hash function: hash code and compress functions Collision avoidance techniques: Separate Chaining, linear probing Insertions and Removals Graphs and Graph Algorithms graph data structures: e.g. directed graphs, undirected graphs, weights, representations graph algorithms: e.g. graph traversals, path finding, cycle finding, connectivity, topological ordering, shortest path, minimum spanning tree Who this course is for Beginner Java developers who are interested in writing efficient code. Homepage