Fundamentals
If you're pursuing a career as a professional software engineer, you should dedicate the first three to six months to mastering the fundamentals.
Here are the courses I believe you should take, listed in order. Depending on your knowledge and experience level, you can take all the courses in order, or just pick the ones that are best for you.
Programming Languages
I have several courses on various programming languages such as Python, Java, JavaScript, and C#. Professional software engineers often know more than one language, but if you're starting out, just focus on one language.
I recommend you learn Java first, even if you're not planning to use it in the future. Java is a classic programming language with amazing features. Once you learn Java, you can quickly and easily switch to similar languages like JavaScript, C#, C++, etc.
Introduction to Programming with Java
Learn the basics of programming using Java, one of the most widely-used programming languages. This is a great starting point for anyone new to programming.
View courseObject-oriented Programming with Java
Learn and understand object-oriented programming principles used in designing complex applications and frameworks.
View courseAdvanced Java Concepts (Optional)
Master exceptions, generics, collections, lambdas, streams, multi-threading, and asynchronous programming. Take this course only if you want to become a professional Java developer.
View courseData Structures and Algorithms
Studying classic data structures and algorithms helps you improve your programming and problem-solving skills. These topics are frequently asked in coding interviews, and this course will help you master them.
Data Structures & Algorithms: Part 1
Learn all about arrays, linked lists, stacks, queues, and hash tables.
View courseData Structures & Algorithms: Part 2
Master more complex data structures and algorithms: binary trees, AVL trees, heaps, tries, and graphs.
View courseData Structures & Algorithms: Part 3
Master the classic searching, sorting, and string manipulation algorithms.
View courseDesign Patterns
Design patterns are engineered solutions to common problems in software design, and are often asked about in coding interviews. There are 20 classic design patterns commonly known as GoF (Gang of Four) patterns. The following courses help you learn and understand these patterns and appreciate object-oriented programming techniques.
Design Patterns 1: Behavioral Design Patterns
Learn and understand the memento, state, iterator, strategy, template, command, observer, mediator, chain of responsibility, and visitor patterns.
View courseDesign Patterns 2: Structural Design Patterns
Master the composite, adapter, decorator, facade, flyweight, bridge, and proxy patterns.
View courseDesign Patterns 3: Creational Design Patterns
Master the prototype, singleton, factory, abstract factory, and builder patterns.
View courseVersion Control and Collaboration
The Ultimate Git Mastery Course
Everything you need to version your code and collaborate with others using Git and GitHub in one course.
View course