Giter Site home page Giter Site logo

data-structures-and-algorithms-roadmap's Introduction

<a alt="Github All Releases">
    <img src="https://img.shields.io/github/downloads/HumamAlhasan/Data-Structures-and-Algorithms-Roadmap/total.svg" /></a>
<a href="https://img.shields.io/github/forks/HumamAlhasan/Data-Structures-and-Algorithms-Roadmap/shields.svg?style=social&label=Fork" alt="GitHub forks">
    <img src="https://img.shields.io/github/forks/HumamAlhasan/Data-Structures-and-Algorithms-Roadmap.svg?style=social&label=Fork" /></a>
    

<a href="https://img.shields.io/github/stars/HumamAlhasan/Data-Structures-and-Algorithms-Roadmap.svg?style=social&label=Stars" alt="GitHub forks">
    <img src="https://img.shields.io/github/stars/HumamAlhasan/Data-Structures-and-Algorithms-Roadmap.svg?style=social&label=Stars" /></a>


Data Structures and Algorithms Roadmap

ok let's face it everyone has an endless fear inside, when it comes to Data structures & Algorithms, these two core aspects which technically they're the first Submarine that it will dive with you into Software engineering world or computer science, and even if we want to fake it, but it just doesn't work without the ability to understand these aspects and use them, which literally means: everyone is able to write code, even complete systems architectures, and code runs anyway,

But the real difference between coders and Engineers is very abstracted, programming is just a small part of being an engineer the hardest of being an engineer, is the architectures itself, so whether it's an App, Platform, or even O-Systems, which is also meant coders do a very small part of the engineering working process, and also when it comes to the new tech learning processes engineers can move between tech stacks and programming languages so easy,

but hi wait a second why! what makes them super powerful people, the real answer which everyone is trying to run away from it is The core Fundamentals of Computer science, the power of knowing what happens behind the scenes, the very compact and controllable space and performance, for example, the right Decisions of choosing the best Data structure to organize and store some specific kind of data, knowing the strengths and weaknesses of each one,

e.g. the deep understanding of the differences between Arrays, Lists, Multimaps, Heap, Stack, Queue, Trees, Graphs and so on and so forth,

the ability of separating problems into multiple parts, and writing the best implementation to solve these problems with the respect of the performance and the space etc.. Actually the whole thing it's much way simpler than you think, but it's supernatural for our brains to have that kind of fear when they do not know anything about it, which we call it Xenophobia or the Fear of the Unknown, so i do know that there is no better time to start, the tech industry expanding horribly, and market needs not just coders but real Engineers

Note by engineers I don't mean the creatures who have CS degrees ๐Ÿค“ cause most of the CS graduated people they do know these things just as a theoretical views

wish you all the best and I can't wait to see the transformation you'll go through

๐Ÿ“™ Contents table


๐Ÿค” What is it?

The main purpose of this roadmap is to make you understand almost everything about these two huge main aspects and how to use them in your new coming Apps, or just to crack the company's interview that you're about to apply to, or finally to simply break this fear wall ๐Ÿ’ช๐Ÿฝ


๐Ÿ˜บ Why it's the perfect time to use it?

lets for example, imagine this scenario, you've begun to learn a new tech for 3 years and you've already started to make money using it, and suddenly the support for this tech stopped,

and the community started to hate this tech, which means that you can't work with it anymore or even if you want to companies will never trust this tech, which means at the and of the time you will become unemployed and you will repeat the same circle of learning a new tech,

but why? well the simplest answer is that you don't know what's happening behind the scenes, you only write code, but when you deeply understand the way your software works and how to face machine, then you're safe and if you want to learn a new tech surely it will never take more than a month plus it's awesome what's happening in this scientific field don't you want to become a part of this awesome journey.


it's not hard, but also not easy ๐Ÿ˜†

weird

The beginning of billion miles trip is one step, Algorithms and data structures aren't hard, but like anything else you need to practice and read and practice, and when you get into the journey you will ever forget this hardness,

and you'll focus on details, and by the easy things doesn't stays for long, so every second you spend learning Data structures and Algorithms, remember it's for you as a Person knowledge or as Great target,

and at the end of this learning journey you'll feel a lot of power which is the power of being able to really talk and work with these aspects, and finally if you're afraid of them then you've just broke this fake wall.


And what about math?! ๐Ÿ™ƒ

Math

alot of (developers) and (coders) says that you don't have to learn math to become a professional programmer and that's almost true in their case instead of learning some math skills repeat your self all the time,

if you want to learn how to code then you don't have to learn much math,

but when it comes to the engineering journeys then math is a very important subject, i'm not telling you that you have to be a math professor or something,

but undertanding the mathematical and the logical oprations that you're doing helps you alot to compress time and to learn quickly,

so if you've PHD Math degree, or you just want to rollback all what you've learned since the 1grade,

then don't worry I've got your back, math is very simple but as i told you like any other thing you need to practice then it will become so easy, and remember that you don't need those tons of math skills, but this is for the developers with zero math skills which they're a lot.


know exactly where you are, and what you want

if you really want to learn something through this journey you should have a goal, and also you must know which level you are, just to make things easier,

don't escape any example and use then in order in order, cause it's all related


๐Ÿฅž What it will consists of?

  • Refreshing your math knowledge or simply build it.

  • Selecting the programming language you want to use there will be examples in these four languages : Java, C++, Python, Javascript for now if you like to add yours fork it and join me spreading this knowledge.

  • understanding the thiories behind each Data structre and algorithm.

  • Using or sharing examples of each data structure and it's algorithm example.

there will be examples almost for all the popular Data strucres


Do it with love or don't even begin

if you don't have passion about the thing you're doing then it's very hard to gain any progress, even if it feels uncontrollable cause we all want it to happen fast,

but every time you feel that you're away from your goal then remember this base constant universal low, for every goal you want to achieve there are some taxes, so you decide if you want to pay them before or after you achieve your happiness euphoria,

it feels sometimes hard an so connected but your passion will make it so exciting all the time, so the result of this pain that you're investing in your self and the gain will be knowledge, dream job, great projects ideas etc.. so focus on your goals, breathe, and do it, now or never.


๐Ÿƒ๐Ÿผโ€โ™‚๏ธ Things speeds up you learning process and makes it more easy and fun

  • after every example you see, try to write the summary of this example usage.
  • don't pressure yourself, it's fine we were all the same.
  • try to focus and stop everything bothers you.
  • Building software is like playing instruments, and if you want to play some instrument you have to know some theories then you have to practice and practice i think it was so clear ๐Ÿ’›
  • Try to practice it in the morning.
  • don't let your learning session goes for more than 2 hours max.

data-structures-and-algorithms-roadmap's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.