Gary Willard, MBA
I would recommend starting with algorithms and coding small problems. Then coding something bigger that you'd like, like the Pong game like Leo suggested.
If I was to turn back in time, this is what I would do: practice coding everyday by learning about new algorithms and solving problems on websites like Leetcode and Hackerrank.
It would also be nice if you could pick up an online course about computers or about algorithms. Having things explained seems easier in videos with drawings for me.
Here is are 2 courses with the foundations of Computer Science and programming, by Google:
Hope this helps! good luck! <3
If you were to learn about Computer Science, I would recommend going with the following -
- Learning a programming language in each paradigm - imperative, object-oriented, functional, and lisp and scripting. You could choose languages like python or JS which will allow you to code in any of these paradigms, to begin with.
- Learning about microprocessors
- Learning about OS fundamentals
- Learning about networking
- Maths fundamentals - Probability, Stats, Algebra etc (required to build understanding around crypto spacd, machine learning etc)
Then you could potentially advance into areas like cybersecurity, machine learning, distributed systems, etc. but for these subjects also I would recommend learning the fundamentals before going deep into an area...
Many of the online portals like Udacity, Coursera, eDx, etc have these courses for free. Also, you can some of the courses taught at Harvard or MIT on these subjects online.
* Math: Computer Science is a branch of Math. So if you don't like Math, you'll probably find Computer Science hard. Conversely, the more Math you know, the easier Computer Science will be.
* Soft Skills, like learning to work well with others, being nice to people, good communication skills, understanding how to navigate difficult situations -- that sort of thing. If you get a job in this field, you'll often be a part of a larger team. You'll have to learn to get along and work with people from all sorts of backgrounds, and you'll need to be nice to others.
* Patience: In this field you'll often be presented with hard problems that you'll have to solve. Very often you won't be able to solve them on the first try, or the second, or the third... This can lead to frustration. You need to be patient and try again and again. But eventually you'll get there -- if you're patient!
Also...a fun book I've read that "Algorithms to Live By" by Brian Christian and Tom Griffiths. It anecdotally introduces several algorithms that are applied to real-life stuff!
Ali recommends the following next steps:
The strict minimum you need to learn is:
- at least one coding language.
- data structure and algorithms.
- computer architecture.
I may add to that list "introduction to operating system" but I do not think it is mandatory (part of the strict minimum)
Then you can add specific topics depending on the area of computer science you want to work in. Additional skills may be then:
- math if you research new algorithms, machine learning, cybersecurity encryption
- protocols if you want to work in telecom or protocols
- cybersecurity if you are interested in cybersecurity but not in research.
- and others...
Then it's just continuous practice, continuous learning. I've worked for three very different companies and except for the basics, none required the same skills.
Bangaru Raja’s Answer
Computer Science is very vast and there are many career paths. Below are the the points I feel need to focus while exploring career path in computer science.
- Understand basics of computer science
- Logical Thinking
- Minimum one programming language knowledge (C#, Java, Python, etc.,)
- Identify your area of Interest Low level programming, Mobile Development, QA , Automation Tools, Networking, Web Development, Security , Big Data, Machine Learning, etc.,
- Once you identify the interested area, do little research on which Technical skills are being asked by going through career portals and take specific course training either from online platforms or class room trainings.
- Practice and try to do some personal projects which will help to improve the learnings done.