Algoritmos e Estruturas de Dados

com

Confira TODO O CONTEÚDO disponível que você terá acesso, em nossa plataforma exclusiva,  incluindo aulas gravadas e a programação das próximas sessões ao vivo.

Tudo organizado para sua conveniência e para enriquecer ainda mais sua experiência de aprendizado!

Masterclass AO VIVO

Acontecem mensalmente nas quintas feiras às 19:30hrs

Confira quais são as próximas sessões de masterclass que já estão agendadas para este grupo:

Quando

Tema

Quando:
01/08
Tema:

Multicast Confiável: Sistemas Distribuídos

Entenda o Algoritmo de Multicast Confiável, chave para garantir a entrega de mensagens em sistemas distribuídos.

01/08

Multicast Confiável: Sistemas Distribuídos

Entenda o Algoritmo de Multicast Confiável, chave para garantir a entrega de mensagens em sistemas distribuídos.
Quando:
15/08
Tema:

Árvores de Van Emde Boas: Operações de Inteiros

Aprenda sobre as Árvores de Van Emde Boas e suas operações eficientes para intervalos de inteiros.

15/08

Árvores de Van Emde Boas: Operações de Inteiros

Aprenda sobre as Árvores de Van Emde Boas e suas operações eficientes para intervalos de inteiros.
Quando:
05/09
Tema:

Roteamento em Redes: Estratégias Avançadas

Examine algoritmos avançados de roteamento utilizados em modernas redes de comunicação.

05/09

Roteamento em Redes: Estratégias Avançadas

Examine algoritmos avançados de roteamento utilizados em modernas redes de comunicação.
Quando:
19/09
Tema:

Árvores Rubro-Negras: Estruturas Dinâmicas

Domine Árvores Rubro-Negras, uma estrutura de dados dinâmica para armazenamento e busca eficiente.

19/09

Árvores Rubro-Negras: Estruturas Dinâmicas

Domine Árvores Rubro-Negras, uma estrutura de dados dinâmica para armazenamento e busca eficiente.
Quando:
03/10
Tema:

GHS: Árvore Geradora em Distribuídos

Aprenda o Algoritmo GHS e sua aplicação na construção de Árvores Geradoras Mínimas em sistemas distribuídos.

03/10

GHS: Árvore Geradora em Distribuídos

Aprenda o Algoritmo GHS e sua aplicação na construção de Árvores Geradoras Mínimas em sistemas distribuídos.
Quando:
17/10
Tema:

Matriz Esparsa: Armazenamento Otimizado

Descubra como Matrizes Esparsas otimizam o armazenamento de dados com muitos elementos nulos.

17/10

Matriz Esparsa: Armazenamento Otimizado

Descubra como Matrizes Esparsas otimizam o armazenamento de dados com muitos elementos nulos.

Masterclass já realizadas

Você terá acesso completo a todas as sessões já realizadas, garantindo que não perderá nenhum conteúdo relevante. Confira todas as sessões de masterclass já realizadas:
18/07/2024
Explore as Estruturas de Dados Persistentes, utilizadas para manter múltiplas versões de conjuntos de dados.
04/07/2024
Descubra como o Algoritmo de Clock Vetorial é usado para ordenar eventos em sistemas distribuídos.
20/06/2024
Aprenda sobre as Tabelas de Hash Distribuídas, eficientes para armazenamento e recuperação rápida de dados.
06/06/2024
Estude o Algoritmo de Snapshot Distribuído e sua importância na captura do estado global em sistemas distribuídos.
02/05/2024
Explore os princípios e aplicações dos algoritmos de hashing criptográfico, fundamentais na segurança de dados.
18/04/2024
Entenda o protocolo RIP, um algoritmo clássico de roteamento em redes, e sua aplicação prática.
04/04/2024
Domine as Árvores de Segmentos, uma ferramenta poderosa para gerenciar e consultar intervalos em arrays.
21/03/2024
Aprenda o funcionamento do Algoritmo de Eleição Bully, essencial para determinar lideranças em sistemas distribuídos.
07/03/2024
Descubra a eficiência dos Heaps Binomiais em filas de prioridade e suas operações fundamentais.
22/02/2024
Entenda como o Algoritmo de Berkeley sincroniza relógios em sistemas distribuídos, um componente chave para a consistência de tempo.

Lições Complementares

Essas lições são elaboradas em colaboração com os alunos, que têm a oportunidade de propor os temas em conjunto com ElemarJr. Confira as lições complementares já disponíveis:

A B-Tree é uma árvore balanceada, ou seja, todas as suas folhas estão no mesmo nível. Ela é usada para armazenar grandes quantidades de dados em disco e em memória secundária, o que a torna muito útil em bancos de dados e sistemas de arquivos que manipulam conjuntos grandes de dados. Ela tenta equilibrar o custo de processamento com o custo de I/O.

Nesta lição falamos sobre o conceito de Pareto, pois é através deste tema que programadores conseguem ter uma visão mais clara da relação entre desempenho de código e recursos utilizados. A ideia ainda pode ser ampliada e dividida em três níveis, onde é possível fazer uma conexão com a arquitetura de software, algoritmos e estruturas de dados e micro otimização.A matemática fornece a base teórica necessária para analisar a eficiência dos algoritmos, entender os princípios subjacentes das estruturas de dados e resolver problemas complexos de maneira lógica e sistemática.

A matemática fornece a base teórica necessária para analisar a eficiência dos algoritmos, entender os princípios subjacentes das estruturas de dados e resolver problemas complexos de maneira lógica e sistemática.

Vídeo dedicado para responder algumas questões em comum dos alunos do grupo de estudos.

Alguns conceitos podem parecer confusos se você tiver ouvindo sobre eles pela primeira vez, é o caso quando falamos sobre “Redução” e “Completude”, mas nesta lição, eu busco te mostrar um pouco do conceito sobre esses dois temas de uma forma mais clara, que te ajude a entender melhor.

QuickSort é um algoritmo de ordenação tremendamente popular. Ele é famoso, principalmente por seu desempenho. Ele adota recursividade e a abordagem “dividir-para-conquistar” – ambos conceitos importantes para quem quer saber algoritmos de verdade. Nesta lição te explico de um jeito descomplicado, passo-a-passo, o QuickSort – esse algoritmo clássico de ordenação.

Você sabe o que é a Binary Heap? Saberia explicar como ela funciona? Se a resposta for não, você pode estar deixando passar excelentes oportunidades de “turbinar” as aplicações que você desenvolve. Nesta lição, te explico de um jeito descomplicado, passo-a-passo, a BinaryHeap – uma estrutura de dados fundamental que serve como base para o HeapSort – um algoritmo clássico de ordenação.

Estudar e compreender esses algoritmos permite que os programadores ampliem seu repertório, adquiram uma base sólida em estruturas de dados e estratégias de solução de problemas, e desenvolvam habilidades analíticas e de otimização. Além disso, os algoritmos clássicos fornecem uma base sólida para explorar algoritmos mais avançados e compreender a teoria por trás deles.

O Bubble Sort é um algoritmo de ordenação simples e intuitivo. Ele percorre a lista várias vezes, comparando pares de elementos adjacentes e trocando-os se estiverem fora de ordem. Nesta lição, te explico de um jeito descomplicado, passo-a-passo, o BubbleSort – esse algoritmo clássico de ordenação.

Na carreira de um programador, ele vai enfrentar diversos desafios na elaboração de códigos. Vão haver problemas mais simples, mais complexos, enfim, são inúmeros cenários. Para ele vai ser importante saber como classificar estes problemas dentro das classes (P, NP, NP-completo, etc), pois é desta forma que ficará mais claro, por exemplo, saber que tipo de algoritmo conseguirá escrever, alinhando com os objetivos de negócio.

Nesta lição, abordamos a importância de definir claramente o que o sucesso significa para você. Explicamos como essa definição ajuda a manter o foco, identificar oportunidades e criar um plano de ação eficiente. Se você está enfrentando dificuldades para alcançar seus objetivos, esse vídeo pode trazer insights valiosos e ser um guia para traçar seu caminho rumo ao sucesso.

#LiveCoding

As sessões de livecoding são realizadas de forma interativa, permitindo a participação ativa dos alunos que desejam aprofundar seus conhecimentos. Confira as sessões de live coding já realizadas:

Você sabe o que é uma hashtable? Saberia como implementar uma? Se a resposta é NÃO, eu posso te ajudar. Nesse vídeo, mostro, passo a passo, o que é e como implementar uma hashtable em uma “sessão particular”, com muito código.

Nesta lição, exploramos o fascinante mundo da manipulação de bits com a ajuda de Elemar Júnior e seu grupo de estudos de algoritmos e estruturas de dados! Através de uma conversa descontraída e muito código, vamos entender o que é a manipulação de bits e como ela pode ser aplicada em diversos contextos, desde a criação de representações mais eficientes para campos lógicos até a relação com métodos de compressão, como o Huffman.

Algoritmos genéticos são uma técnica de otimização que se baseia na evolução biológica. Assim como na natureza, onde os indivíduos com características mais vantajosas têm mais chances de sobreviver e passar seus genes para as próximas gerações, nos algoritmos genéticos as soluções mais promissoras são selecionadas para “cruzar” e gerar novas soluções.

Recomendações de Livros

Em algumas sessões de masterclass são recomendados livros para complementar e aprofundar os temas estudados.

Bônus Exclusivo

Introdução a Análise de Algoritmos e Big-O

Saber Big-O é importante porque permite determinar a complexidade de um algoritmo em relação ao tamanho da entrada. Isso ajuda a identificar algoritmos eficientes e escaláveis para lidar com grandes quantidades de dados e muitas requisições simultâneas. Empresas como Google, Amazon e Microsoft frequentemente fazem perguntas sobre complexidade de algoritmos durante o processo de seleção de candidatos.

O desempenho de um algoritmo é fundamental para a eficiência e escalabilidade de uma solução. Compreender como medir e melhorar o desempenho é essencial para criar soluções eficientes e escaláveis. Além disso, muitas empresas valorizam o conhecimento desses conceitos durante o processo de seleção de candidatos.

Medir o desempenho de um algoritmo requer técnicas adequadas para obter resultados precisos. É importante evitar armadilhas comuns, como medir o tempo de execução em um ambiente não controlado ou medir apenas um caso específico em vez de uma amostra representativa de entradas.

A complexidade linear descreve um algoritmo cujo tempo de execução aumenta linearmente com o tamanho da entrada. Isso significa que o tempo de execução é proporcional ao número de elementos na entrada.

A complexidade constante descreve um algoritmo cujo tempo de execução não varia com o tamanho da entrada. Isso significa que o tempo de execução é constante, independentemente do número de elementos na entrada.

A complexidade quadrática descreve um algoritmo cujo tempo de execução aumenta quadraticamente com o tamanho da entrada. Isso significa que o tempo de execução é proporcional ao quadrado do número de elementos na entrada.

A complexidade cúbica descreve um algoritmo cujo tempo de execução aumenta cúbicamente com o tamanho da entrada. Isso significa que o tempo de execução é proporcional ao cubo do número de elementos na entrada.

A complexidade fatorial descreve um algoritmo cujo tempo de execução aumenta exponencialmente com o tamanho da entrada. Isso significa que o tempo de execução é proporcional ao fatorial do número de elementos na entrada.

Big-O é uma notação usada para descrever a complexidade assintótica de um algoritmo. Isso significa que Big-O descreve a taxa de crescimento do tempo de execução ou alocação de recursos em relação ao tamanho da entrada.

P e NP são classes de problemas em teoria da computação. Problemas em P podem ser resolvidos em tempo polinomial, enquanto problemas em NP podem ser verificados em tempo polinomial. A questão P = NP é uma das perguntas mais importantes em ciência da computação.

A complexidade assintótica descreve o comportamento do algoritmo quando a entrada aumenta para um tamanho infinito. Ela é representada por Big-O e é uma forma de descrever a complexidade de um algoritmo sem se preocupar com constantes e termos de baixa ordem.

Escalabilidade é a capacidade de um sistema lidar com o aumento de demanda sem comprometer o desempenho. Na computação, isso se refere à capacidade de um algoritmo lidar com grandes quantidades de dados e muitas requisições simultâneas. A análise de algoritmos é fundamental para determinar a escalabilidade de um algoritmo.

Existem várias técnicas para determinar a complexidade de um algoritmo, incluindo análise de tempo, análise de espaço e análise assintótica. A análise assintótica, representada por Big-O, é uma forma de descrever a complexidade de um algoritmo sem se preocupar com constantes e termos de baixa ordem. Ela é a técnica mais comum e útil para determinar a complexidade de um algoritmo.

Bônus Exclusivo

Arquitetura de Software

Você terá acesso exclusivo a uma aula gravada de mentoria de arquitetura de software, com um conteúdo extremamente valioso para impulsionar sua carreira. Nessa aula, você terá 2 horas e 30 minutos de informações e insights poderosos. Não perca essa oportunidade incrível de aprender com um especialista no assunto.

Telegram

Grupo no Telegram é uma comunidade criada exclusivamente para nossos alunos onde é possível debater, compartilhar, obter novos aprendizados e ainda fazer um super networking.

Qual é a sua impressão do conteúdo que apresentamos?
CONSEGUIU PERCEBER SEU POTENCIAL DE TRANSFORMAÇÃO?
Lembre-se, para transcender e alcançar o extraordinário, você deve estar disposto a ir além, a fazer o que a maioria não está disposta a fazer.
Aqueles que enfrentam e superam desafios complexos não apenas se destacam, mas criam o seu próprio caminho para o sucesso.
Está pronto para dar este salto e se juntar a este seleto grupo?

Plano semestral

De 477,00 por apenas
R$ 349,50 à vista
ou em até 3x de R$ 116,50

Elemar Jr.

Com mais de 30 anos de experiência e uma carreira internacional bem-sucedida, Elemar Jr. compartilha suas vivências para ajudar outros profissionais a aproveitarem oportunidades e evitarem desafios que enfrentou em sua trajetória.

Ele aprendeu que conhecer os fundamentos, como algoritmos e estruturas de dados, é mais importante para resolver problemas do que seguir as tendências de bibliotecas e frameworks. Sua abordagem tem levado a resultados maiores e mais rápidos, influenciando outras pessoas a seguirem o mesmo caminho.

Há anos, Elemar vem ajudando desenvolvedores a fazer software de maneira mais efetiva, enfatizando a importância do estudo dos fundamentos.

Por isso, hoje se considera mais do que um desenvolvedor de software, mas também um profissional que ajuda a “desenvolver gente que desenvolve software”.

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Programa ElemarJR de Aceleração, Do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Programa ElemarJR de Aceleração, Do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Mentoria em Arquitetura de Software

Ênfase em Systems Design

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Reproduzir vídeo

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Algoritmos e Estruturas de Dados - Conteúdo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Algoritmos e Estruturas de Dados - Conteúdo:

Algoritmos e Estruturas de Dados – Conteúdo

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Algoritmos e Estruturas de Dados - Conteúdo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

× Precisa de ajuda?