Visão Geral
O curso Algorithms and Data Structures tem como objetivo capacitar profissionais no entendimento e aplicação de algoritmos e estruturas de dados fundamentais para o desenvolvimento de software eficiente. O treinamento aborda conceitos essenciais de organização de dados, análise de complexidade e resolução de problemas, sendo uma base sólida para programação, engenharia de software e entrevistas técnicas.
Conteúdo Programatico
Module 1 – Introduction to Algorithms and Complexity
- What is an algorithm
- Time and space complexity
- Big-O, Big-Theta, Big-Omega notation
- Best, average, and worst case analysis
- Problem-solving strategies
Module 2 – Arrays and Strings
- Array fundamentals
- String manipulation
- Traversal techniques
- Two-pointer technique
- Sliding window technique
Module 3 – Linked Lists
- Singly and doubly linked lists
- Insertion and deletion operations
- Traversal and search
- Cycle detection (Floyd’s algorithm)
- Applications of linked lists
Module 4 – Stacks and Queues
- Stack operations and applications
- Queue and circular queue
- Deque (double-ended queue)
- Priority queue basics
- Implementation using arrays and linked lists
Module 5 – Recursion and Backtracking
- Recursion fundamentals
- Recursive vs iterative solutions
- Backtracking techniques
- Solving combinatorial problems
- Examples (permutations, subsets)
Module 6 – Sorting and Searching Algorithms
- Linear and binary search
- Bubble sort, selection sort, insertion sort
- Merge sort and quicksort
- Stability and efficiency of sorting algorithms
- Practical use cases
Module 7 – Trees and Binary Search Trees
- Tree terminology and structure
- Binary trees and traversals (DFS, BFS)
- Binary search trees (BST)
- Tree operations (insert, delete, search)
- Balanced trees overview
Module 8 – Graphs and Advanced Topics
- Graph representation (adjacency list/matrix)
- Breadth-first search (BFS)
- Depth-first search (DFS)
- Shortest path algorithms (Dijkstra)
- Introduction to dynamic programming