The document provides guidance to students on a simplified roadmap for studying computer science. It recommends focusing first on fundamental subjects like programming, data structures, and algorithms, practicing problem-solving, and participating in programming competitions. It outlines timelines for completing core CS subjects over 1-4 years either sequentially or in parallel with technology tracks. It also provides course recommendations and emphasizes gaining a strong understanding of programming concepts before specializing in areas like front-end or back-end development, machine learning, or other technology fields.
Complete Computer Science Roadmap and Guide for Students
1. خارطة
طريق
مبسطة
لعلوم
حاسب
Mostafa S. Ibrahim
Teaching, Training and Coaching for more than a decade!
Artificial Intelligence & Computer Vision Researcher
PhD from Simon Fraser University - Canada
Bachelor / Msc from Cairo University - Egypt
Ex-(Software Engineer / ICPC World Finalist)
2. You after few years:
“10 Things I Wish
Someone Told Me When
I Went to University”
8. Today
● A short and focused guidelines to NOT be lost
● If any conflicts between this NEW video and OLD videos, this is the priority!
● There are many CS subjects that you should study all
● Let’s see your top priority today
● Other subjects? schedule others later
○ Maybe schedule them during the college days
○ Or in parallel to the work
○ You only need a crash course for these other courses (or at least 2-3 chapters)
● Can I study technology track early before or parallel to basics?
○ You shouldn’t. Usually you will regret 3-4 years later in work
■ Yes, you can make money early! But don’t
○ Do that ONLY if you are under great financial stress
9. The fundamental/critical subjects
● Programming and OOP
○ Strong understanding for the language syntax
○ Builtin library (like C++ STL / Java collection
○ Do many console projects
● Data Structures and Algorithms
○ These 2, especially algorithms, will take a LOT of time
○ You need to PRACTICE a lot
○ They will change your mentality. Make you a problem-solver
○ Enhancing coding, debugging and testing skills
○ Interest in programming competitions?
■ Start in my Juniors-sheet and participate in ICPC contests
○ Important for some local interviews. Mandatory in big companies (FAANG like Google)
10. The fundamental/critical subjects
● Design Patterns
○ One step toward enhancing your design skills
○ Important in interviews
● Software engineering
○ UML Diagram tools
○ Methodologies to manage a big project/team such as Agile
○ Many courses/books are very talkative :(. Get an idea
11. The fundamental/critical subjects
● Database (RMDBS - NoSQL)
○ This is where we store the data
○ Critical for backend jobs. Go deep
○ Good to know for frontend jobs
● Networking and Operating systems
○ A fair course is enough. Having some background is useful
○ Delay if running out of time but schedule as soon as possible
○ As a fresh Software Engineer, it is rarely to be asked in them
12. Market Track
● Front/Back end software engineers
are the most popular
● Next jobs are Machine Learning
and Data science
○ Less and more competitive
● Limited (for fresh)
○ Embedded development, Games
Development, Security
Img credit
13. Timeline
● Nowadays, many people start programming in prep or secondary school
○ My split of 1st/2nd and 3rd/4th doesn;t make sense for them
● If you are new to the field
○ Try in the first 2 years to finish these core subjects
○ Starting from the third year focus on the technology
○ Keep problem solving activity as long as you code in the market (next ~10 years)
14. The core of the core
● First, Deep focus with Programming, OOP, Data Structures and Algorithms
● My recent Udemy (Promotion) English are built to achieve a consistent and
intensive roadmap for this stage. You need around 1000 hours to finish
15. The core of the core: Timeline
● 1- Start the C++ Course. Go up to finishing pointers topic
● 2- Then In parallel, you will do the following:
○ Continue in the C++ course until the last project. You don't have to finish the last modern
sections.
○ Start in the data-structure course
○ Start in this interviews preparation sheet
● 3- Done with the data-structure course?
○ Move to Algorithms Part 1 then Part 2
● 4- Move to the interviews course
○ This one can be parallel to coming things (basics/technology)
16. What about the other languages
● You can start with ANY language. My preference is C++
● Many languages are not well served. Limited practice and projects
● So
○ If I have courses for the other language, just take it
○ If no, find ANY course with good coverage on the internet
AND
Solve the practice/projects of my corresponding C++ course
17. The remaining of the core
● One approach
○ Finish the remaining fundamental subjects first, then move to technology
○ I prefer that
● Another approach
○ Parallelize the other subjects + a technology track
○ Tip: if you plan to work in backend, finish database (RDBMS) first
18. ● The core: My Udemy courses
● Design patterns: link link link link (pick one)
● Software Engineering: Link
● Database: Link
● Operating Systems: CS-537, CS-342
● Computer Network: Books (Computer Networking A Top-Down Approach,
Computer Networks by Andrew S. Tanenbaum) — Course
● Machine Learning: Link
● Technology roadmaps: https://roadmap.sh - backend - frontend
● Competitions Sheet
● My overall contributions (important) / More
Materials
19. Misc
● Got lost? Just pick a programming language and focus on it for now!
● The other videos in the playlist will answer more questions for you