In today’s age where technology is covering almost all the sectors of society, its head that is programming has become one of the most prominent fields. As the sector expands so does the competition in it. Becoming a competitive programmer is accessible through technology itself. Remember “Competitors are not your enemies, they are the people who keep reminding you of your own shortcomings.” Here in this article, I’m providing a few important links and guides in an indexed manner that you can find useful in your journey of being a competitive programmer.
Pick a language
Software development has seen transformation unlike any other domain out there. Obviously, this resulted in the evolution of the programming language. C, C++, & Java are the three languages that have defined the programming paradise and undoubtedly own great value in the market.
C++ is a general-purpose programming language designed by Bjarne Stroustrup as an extension of the C programming language.
Java is also a general-purpose programming language that is class-based, object-based, and designed to have as few dependencies as possible.
C programming language is considered the mother of all programming languages. It is a general-purpose procedural computing language, support and structured programming, lexical variable scope, and recursion.
Learn
The following points need to be learned.
- Understand Syntax and Basics
- Loops and Statements
- Scope and Functions
- How Code Works
- Understand the concept of Time and Space complexity
- Make small programs to understand better.
Data structures
Beginner
Following in the list of topics that you need to cover in the beginner stage:
- Array
- Linked list
- Stack
- Queue
- Tree
Intermediate
The topics that you have to work upon at the intermediate stage are following:
- Heap
- Prioirty Queue
- Huffman Tree
- union find
- Tries
- Hash Table
- Tree map
Proficient
After you reach the proficient stage following topics will then become your friends:
- Segment tree
- Binary indexed tree
- Suffix array
- Sparse Table
- LCA
- Range tree
Expert
Finally when you are at the expert stage you have to step ahead to grasp the topics hereunder:
- Suffix Automaton
- Suffix Tree
- Heavy light Decomposition
- Treap
- Aho-Corasick
- K-d Tree
- Link-Cut Tree
- Splay Tree
- Palindromic Tree
- Rope
- Dancing links
- Radix Tree
- Dynamic Suffix array
Algorithms
The foundation of computer science is based on the study of algorithms. An algorithm is a sequence of clear and precise step-by-step instructions for solving the problem in a finite amount of time.
Introduction
Algorithm will be introduced to you under the following contents:
- Computer Algo
- Big O Notation
- Recurrence Basis
- Divide & conquer
- time Complexity Function
- Pseudocode Basics
Graphs
Secondly what you have to learn in Graphs are:
- Graph
- Basic Terminolotgy
- Directed Graphs
- Representation
- Depth-first Search
- Weighted Graph
- Floyd-Warshall Algo
- Topological sort
- Connectivity of Graph
- Spanning Tree
- Prim’s & Kruskal Algo
Search Algo
Following are the three types of algorithms that you have to study:
- Linear Search Algo
- Binary Search
- Jump Search
String Algo
topics and types
- String Basics
- Searching Tech
- Hamming Dist.
- Suffix tree
- String Hashing
- Rabin-Karp Algo
Sorting Algo
types of sort
- Insertion Sort
- Merge Sort
- Bubble Sort
- Counting Sort
- Quick Sort
- Selection Sort
Dynamic Programming
- Basics
- Edit Distance
- Edit Distance Alignment
Hashing
- Hash Table
- Collisions
Trees
- Tree
- Binary Heap
- Binary Search Tree
- Tree Traversals
Linear Structure
- Singly Linked List
- Doubly linked List
- Fixed-Sized Array
- Dynamic Array
Resources
Youtube
Obviously, the best and most popular way preferred for free learning is youtube. This will help you a lot in becoming a competitive programmer So here is the list of YouTubers classified as per their teaching language in both English and Hindi. You may go for whosoever content you like the most and find it convenient for understanding.
In English
- Neso Academy
- Tushar Roy
- Simple Snippets
- Abdul Bari
- Frescopecamp
- CS Dojo
In Hindi
- Code with Harry
- Apna College
- Anuj Bhaiya
- Education 4u
- Easy Tuts4u
Reading
Additionally, for those who prefer reading over watching videos, the following are some websites and books that you may refer to as per your convenience and choice.
Websites
Books
- C Programming Absolute Beginner
- C++ : The Complpete Reference
- Java-The Complete Reference
- Head First Java
- Introduction to Algorithms
- Algoruthm for interviews
- Data Structures And Algorithms Made Easy.
Practice websites
Practice makes a man perfect. How can one become a competitive programmer without practicing their learnings? Following is the list of some most popular and most used websites for practicing their coding skills. Moreover, These are also technical hiring sites that focus on competitive programming challenges. It’s for both consumers and businesses. So here you can have a perfect assessment of your developing skills.
Tips
- Understand topics properly,
- Besides that Build Logics and
- Understand the code on paper while practicing
- Moreover, don’t simply copy the code and try to understand its working.
For similar helpful content do follow my Instagram page @codehub.py and also join our telegram channel. There you’ll find more such information classified in simple posts and also don’t forget to have a look at other similar articles like How to earn money as a programmer? at inprogrammer.