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 course
4h

Object-oriented Programming with Java

Learn and understand object-oriented programming principles used in designing complex applications and frameworks.

View course
4h

Advanced 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 course
6h

Data 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 course
5h

Data Structures & Algorithms: Part 2

Master more complex data structures and algorithms: binary trees, AVL trees, heaps, tries, and graphs.

View course
6h

Data Structures & Algorithms: Part 3

Master the classic searching, sorting, and string manipulation algorithms.

View course
3h

Design 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 course
4h

Design Patterns 2: Structural Design Patterns

Master the composite, adapter, decorator, facade, flyweight, bridge, and proxy patterns.

View course
2h

Design Patterns 3: Creational Design Patterns

Master the prototype, singleton, factory, abstract factory, and builder patterns.

View course
1h

Version 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
6h