Even though I took some programming subjects in the university, I didn't learn how to code efficiently there, I did it online. I read a bunch of webpages, watched some Youtube tutorials, read some books, used a bit of intuition, and solved hundreds of coding problems.

At some point, a friend asked me for an online coding course I recommend, and then I realized that there is no such a course with all the things I consider it should have. So I decided to write my own coding course (Which I am expecting to finish by August 2021). I am going to link some problems from different pages, so I would suggest you to create and account in:

My intention with this course is not to teach you how to code from the very beginning, I am assuming you have already some basics about coding or logical thinking. If you have that, you can take the course and I hope you enjoy it and actually learn how to code. Remember to put effort and time into this.

Also, I would say that it is almost impossible to make a full Python course. Python is huge, I am even learning new things every month, but I will try my best to write down all my Python knowledge in this course.

Joseandres H.

I am going to teach Python for multiple reasons:

- It is the coding language that I know the best
- It has a simple syntax
- It is really powerful with all the libraries it has
- I consider it the best one to learn nowadays

If you are really new in coding, I would suggest you to check the following tutorials I made:

- Visual Studio Code (VSC) and most useful extensions
- How to install Python and use it in VSC
- How to install Pypy (fast Python) and use it in VSC

At the end of this section, there will be some easy problems to verify that you learn all the basics of Python.

The data structures are specific ways to organize, manage, and store data that enable efficient access and modification. More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data

Surprisingly, there are a lot of data structures, and they all have advantages and disadvantages. I want to give you a quick but in-depth view of all the data structures I consider every "good programmer" should know about, or be prepared to be asked about. So, I will leave some links to problems for each topic to practice.

Data structures are not everything to be an efficient programmer, because you also need to learn how to use them. Considering that a data structure can be used in a lot of ways, and even that you can do a mix between some of them, you have to learn some very important algorithms and approaches.

I will explain the most relevant algorithms and approaches to solve problems. There will also be some problems for each topic to practice.

This section of the course will focus only on extra topics, which are relevant but not mandatory to be an efficient programmer.

This part will not have problems to solve, as these are only supplemental topics of Python.

Definition of complexity

Basic data types and operators

Tuples and lists (arrays)

Strings

Outputs and Inputs

If/else statements

While loops

For loops

User's functions

Lambda functions

Classes/Objects and inheritance (working on)

Using libraries (csv, json and os) (wait for it)

Read and write files

Big O Notation (Time and space complexities)

Introductory problems

Multidimensional arrays (working on)

Generators (working on)

Queues (wait for it)

Stacks

Dequeues (library)

Sets (Hash tables)

Dictionaries (Hash tables)

Linked lists

Doubly linked lists

Binary trees

Heaps

Binary search trees (BST)

Self binary balanced search tree (SBBST)

Segment trees

Tries

Graphs

Brute Force (not recommended)

Recursion

Iterative (greedy)

Sorting

Binomial coefficients for big numbers

Binary search

Two pointers

Bit manipulation

Depth first search (DFS)

Breadth first search (BFS)

Alpha–beta pruning (game theory)

Backtracking

Dynamic programming (DP)

Topological sort

Threading