This is my basic Computer Engineering Study Guide and where I did some experiments with algorithms
I am working on it to have some source of knowledge to share with everyone who wants to learn more about computer engineering
-
Introduction to Data Structures:
-
Arrays:
-
Linked Lists:
- Singly linked lists, doubly linked lists, and circular linked lists.
- Insertion, deletion, and searching in linked lists.
- Implementations and time complexity.
-
Stacks:
- Definition and characteristics of stacks.
- Basic operations (push, pop, peek).
- Applications of stacks and implementations.
-
Queues:
- Definition and characteristics of queues.
- Basic operations (enqueue, dequeue, peek).
- Priority queues and implementations.
-
Trees:
- Binary trees, binary search trees.
- Tree traversals (pre-order, post-order, in-order).
- Basic operations and time complexity.
-
Graphs:
- Definition of graphs, representations (adjacency matrix, adjacency list).
- Graph traversals (DFS, BFS).
- Common graph algorithms (Dijkstra's, Prim's, Kruskal's).
-
Hash Tables:
- Concept of hash tables and hash functions.
- Collision resolution (chaining, open addressing).
- Implementations and time complexity.
-
Heaps:
- Definition and characteristics of heaps.
- Basic operations (insertion, deletion, heapify).
- Heapsort and applications of heaps.
-
Balanced Trees:
- AVL trees, red-black trees.
- Tree balancing and operations.
- Time complexity in balanced trees.
-
Directed and Undirected Graphs:
- Cycles in graphs, topological sorting.
- Minimum spanning trees (MST).
- Bellman-Ford and Floyd-Warshall algorithms.
-
Advanced Data Structures:
- B-trees, tries, segment trees.
- Persistent data structures.
- Data compression and compact data structures.
-
Time and Space Complexity:
- Asymptotic analysis (O, Ω, Θ notations).
- Understanding the complexity of algorithms and data structures.
-
Search and Sorting Algorithms:
- Search algorithms (linear search, binary search).
- Sorting algorithms (insertion sort, merge sort, quicksort).
-
Practical Applications:
- Development and implementation of algorithms in real projects.
- Solving programming problems online and in competitions.