Artigo original: https://www.freecodecamp.org/news/these-are-the-best-free-courses-to-learn-data-structures-and-algorithms-in-depth-4d52f0d6b35a/

Escrito por: javinpaul

Algoritmos e estruturas de dados são alguns dos tópicos essenciais para programadores, tanto para obter um emprego como para se dar bem nele. Um bom conhecimento de estruturas de dados e algoritmos é a base para escrever bem seu código.

Se você já está familiarizado com as estruturas de dados essenciais (como arrays, strings, listas vinculadas, árvores e mapas - textos explicativos em inglês) e estruturas de dados avançadas, como tries e árvores autobalanceadas - como as árvores AVL, saberá quando usar cada estrutura e como calcular os custos de memória e de CPU de seu código.

Embora você não precise escrever seu próprio array, lista vinculada ou hash table, já que todo grande SDK de programação, como o JDK ou a biblioteca STL do C++,  já vem com eles, você precisa entendê-los para poder usá-los no lugar certo.

Usar a estrutura de dados certa pode melhorar drasticamente o desempenho de um algoritmo.

Idealmente, todos nós deveríamos aprender estruturas de dados e algoritmos (textos em inglês) em nossas escolas e faculdades. Isso, no entanto, raramente é abordado. A maioria dos programadores (eu mesmo, inclusive) é apresentada a uma estrutura de dados somente em nossos cursos de ciência da computação, mas não aprendemos de fato a importância deles no mundo real. É por isso que não os entendemos melhor.

Para nós, eles são apenas os algoritmos e estruturas de dados, ou seja, algum conceito, não uma ferramenta que você utiliza para escrever programas bons. Não sabíamos que o Facebook os utilizava para armazenar os detalhes ao nosso respeito, nem que o Google os usaria para armazenar páginas da web e vincular consultas de pesquisa.

Enfim, nunca é tarde demais.

Se você acha que seu conhecimento de estruturas de dados é pequeno ou se deseja melhorar seu conhecimento a respeito delas, veio ao lugar certo.

No passado, eu já compartilhei alguns livros gratuitos para o aprendizado de estruturas de dados e algoritmos (em inglês). Neste artigo, você aprenderá sobre os melhores cursos sobre algoritmos e estruturas de dados disponíveis gratuitamente on-line.

Cursos gratuitos para aprender estruturas de dados e algoritmos

Aqui temos uma lista com alguns dos melhores cursos para aprender algoritmos e estruturas de dados, todos eles gratuitos. Muitos programadores acham que recursos gratuitos não são bons, mas isso não é verdade.

Mesmo que, algumas vezes, eles não se comparem em qualidade e abrangência aos recursos pagos, eles são, de fato, os melhores recursos para se começar.

Você pode usar esses cursos para se familiarizar com as estruturas de dados essenciais e aprender o básico.

Alguns desses cursos são particularmente bons no que diz respeito às entrevistas de emprego. Assim, você pode usá-los juntamente com algum livro que estiver usando para sua entrevista de emprego em programação (texto em inglês).

Curso 1: Conceitos de estruturas de dados em C

Este é um curso de treinamento em algoritmos e estruturas de dados on-line e gratuito, que visa ensinar o básico sobre estruturas de dados em programação de computadores.

As estruturas de dados ensinadas no curso incluem a pilha (stack), a fila (queue) e a lista vinculada (linked list) usando a linguagem de programação C (textos explicativos dos links em inglês).

O objetivo principal deste curso (em inglês) é fazer com que alunos e engenheiros de software visualizem o funcionamento diferente de cada estrutura de dados.

9KAnoe0SwLrdwMWSxZvutFKzyxq959oVVyZ7
Conceitos e estruturas de dados em C

Este não é um curso para esgotar todo o tema, mas você aprenderá sobre pilhas, filas e listas vinculadas.

Em resumo, é um ótimo curso para programadores que recém estão sendo apresentados às estruturas de dados e para aqueles que acabam de aprender uma linguagem de programação e desejam saber o básico sobre como funcionam as estruturas de dados.

Curso nº 2: Algoritmos Parte 1 - Coursera

Esta é a primeira parte de uma série de cursos em duas partes de Robert Sedgewick tratando de algoritmos e estruturas de dados na Coursera.

Nesta parte, você aprenderá as estruturas de dados essenciais, como listas vinculadas, pilhas, filas, árvores binárias e hash tables, além de algoritmos de pesquisa e ordenação, como a pesquisa binária e as ordenações quicksort, mergesort, insertion sort, entre outras (todos os links em inglês).

Uqip9-SbrXSJg53ERcVRpQIvCRwBl9MQsozM
Algoritmos Parte 1

Você também aprenderá sobre os algoritmos e estruturas de dados principais, usados nas aplicações diárias, e entenderá as vantagens e desvantagens da escolha de cada data estrutura de dados, com algoritmos de travessia, obtenção e atualização.

Todos os recursos deste curso estão disponíveis gratuitamente, mas ele não oferece um certificado de conclusão.

Curso nº 3: Algoritmos - Parte 2

Esta é a segunda parte de uma série de cursos em duas partes de Robert Sedgewick e Kevin Wayne tratando de algoritmos e estruturas de dados na Coursera. Os dois autores são professores de Ciência da Computação.

Robert Sedgewick também é autor do livro Algorithms 4th Edition (em inglês), um dos livros mais populares sobre algoritmos para desenvolvedores em Java.

Nesta parte, você aprenderá sobre os algoritmos de processamento de grafos e strings.

Você também verá algoritmos e estruturas de dados avançados utilizados no desenvolvimento de aplicações.

No que diz respeito à prova social, tanto Algoritmos Parte 1 como Algoritmos Parte 2 são altamente recomendados e têm classificações e avaliações impressionantes.

-ClYQqg03sCkaKTze2IFx-gVZ1rJ9oxXbiM3
Algoritmos — Parte 2

Curso nº 4: Estruturas de dados em Java

Este é um curso on-line introdutório sobre estruturas de dados e algoritmos e análises de complexidade. Ele ensinará você a projetar, implementar e analisar estruturas de dados básicas usando a linguagem Java.

A melhor parte deste curso é a quantidade de exemplos práticos e o fato de ele se concentrar na intuição em vez de em fórmulas e provas matemáticas.

BidoQMlvn0BpD8u95vR7IaGcorlUbo87lAMw
Estruturas de dados em Java

O curso fornece uma boa introdução à "análise de complexidade", o que torna possível identificar um programa de desempenho ruim (e um de bom desempenho), mesmo sem a necessidade de executá-lo.

Esses são os cursos sobre estruturas de dados e algoritmos gratuitos disponíveis on-line. Você pode usar esses cursos para aprender algoritmos e estruturas de dados no seu próprio ritmo.

Eles podem não ser abrangentes, mas fornecem uma boa introdução. Depois de ver esses cursos, você pode pegar um bom livro, como Introduction to Algorithms (em inglês) para complementar ainda mais seu conhecimento.

Curso nº 5: Estruturas de dados fáceis e avançadas

Atualização: este curso já não é mais gratuito, mas é ótimo e pode valer a pena para você. Este curso de algoritmos e estruturas de dados da Udemy é para todos os que querem aprender estruturas de dados do nível básico ao avançado.

Este curso não espera que você tenha conhecimento prévio de estruturas de dados, mas um conhecimento prévio básico de Java é útil.

O autor, @William Fiset, é um engenheiro de software do Google e já foi finalista mundial da ICM-ICPC, sendo dono de habilidades em resolução de problemas e em programação excelentes.

Em termos de prova social, o curso tem mais de 25 mil alunos e uma média de classificação de 4,1 ratings em 683 avaliadores, o que é impressionante.

Em resumo, ele é um guia completo para o aprendizado de tudo que se precisa saber sobre estruturas de dados.

4-E1RXoSCW8fNivg1wkYVuFmvzPzhkE3uVIF
Estruturas de dados fáceis e avançadas

Esse também é o curso ideal para alunos de ciência da computação e profissionais de software que querem aprender estruturas de dados e algoritmos pela perspectiva de uma entrevista.

Assim, se estiver buscando um emprego em empresas baseadas em produção, como Amazon, Google, Microsoft ou Facebook, você pode usar esse curso para dar início à sua preparação.

Outras fontes (em inglês)

Observações finais

Obrigado por ter chegado ao final deste artigo. Boa sorte em sua jornada em programação! Ela certamente não será fácil, mas, fazendo esses cursos, você estará um passo mais próximo de dominar algoritmos e estruturas de dados do que sua concorrência.

Se gostou deste artigo, compartilhe-o com seus amigos e colegas. Não se esqueça, também, de seguir o autor, javinpaul, no Twitter!