Cientista da Computação Autodidata

Guia de estruturas de dados e algoritmos para o iniciante

Cientista da Computação Autodidata
× Cientista da Computação Autodidata

Cientista da Computação Autodidata

Compartilhar

Autor: Cory Althoff

ISBN impresso: 978-85-7522-837-1
ISBN ebook: 978-85-7522-838-8
Ano: 2022
Páginas: 240
Preço impresso: R$ 67,00 O ebook deste livro está disponível na Amazon.

Opine sobre este livro

Descrição do livro

Prepare-se para uma nova e empolgante carreira no desenvolvimento de software

Cientista da Computação Autodidata dá sequência ao livro Programador Autodidata, que inspirou centenas de milhares de profissionais a aprender a programar fora da escola.

Em Programador Autodidata, Cory mostrou aos leitores por que não precisamos de um diploma em Ciência da Computação para programar profissionalmente e ensinou os fundamentos da programação que usou para passar de iniciante a engenheiro de software no eBay sem diploma.

Em Cientista da Computação Autodidata, Cory ensina os tópicos mais importantes da Ciência da Computação que todos os programadores autodidatas precisam conhecer para ter carreiras maravilhosas. O livro dá ênfase a estruturas de dados e algoritmos: dois assuntos que qualquer aspirante a programador tem de entender. Cientista da Computação Autodidata não o tornará apenas um programador melhor, mas também o ajudará a passar na entrevista técnica: processo pelo qual todos os programadores têm de passar para ter um novo emprego.

Independentemente de se você está se preparando para conseguir um emprego ou se deseja aumentar seu conhecimento em estruturas de dados e algoritmos, Cientista da Computação Autodidata impulsionará sua carreira em programação. Foi escrito realmente para iniciantes. Logo, você não terá problemas ao lê-lo mesmo se não tiver estudado Ciência da Computação.

Ver menos ▲

Sumário

  • Sobre o autor
  • Sobre o editor técnico
  • Agradecimentos
  • Introdução
  • Parte I Introdução aos algoritmos
  • Capítulo 1 ■ O que é um algoritmo?
    • Analisando algoritmos
    • Tempo constante
    • Tempo logarítmico
    • Tempo linear
    • Tempo log-linear
    • Tempo quadrático
    • Tempo cúbico
    • Tempo exponencial
    • Complexidade de melhor caso versus de pior caso
    • Complexidade de espaço
    • Por que isso é importante?
    • Vocabulário
    • Desafio
  • Capítulo 2 ■ Recursão
    • Quando usar a recursão
    • Vocabulário
    • Desafio
  • Capítulo 3 ■ Algoritmos de busca
    • Busca linear
    • Quando usar uma busca linear
    • Busca binária
    • Quando usar a busca binária
    • Procurando caracteres
    • Vocabulário
    • Desafio
  • Capítulo 4 ■ Algoritmos de ordenação
    • Ordenação por bolha (bubble sort)
    • Quando usar a ordenação por bolha
    • Ordenação por inserção (insertion sort)
    • Quando usar a ordenação por inserção
    • Ordenação por intercalação (merge sort)
    • Quando usar a ordenação por intercalação
    • Algoritmos de ordenação do Python
    • Vocabulário
    • Desafio
  • Capítulo 5 ■ Algoritmos de string
    • Detecção de anagramas
    • Detecção de palíndromos
    • Último dígito
    • Cifra de César
    • Vocabulário
    • Desafio
  • Capítulo 6 ■ Matemática
    • Sistema binário
    • Operadores bitwise
    • FizzBuzz
    • Máximo divisor comum
    • Algoritmo de Euclides
    • Números primos
    • Vocabulário
    • Desafio
  • Capítulo 7 ■ Inspiração autodidata: Margaret Hamilton
  • Parte II Estruturas de dados
  • Capítulo 8 ■ O que é uma estrutura de dados?
    • Vocabulário
    • Desafio
  • Capítulo 9 ■ Arrays
    • Desempenho do array
    • Criando um array
    • Movendo zeros
    • Combinando duas listas
    • Encontrando as duplicidades em uma lista
    • Encontrando a interseção de duas listas
    • Vocabulário
    • Desafio
  • Capítulo 10 ■ Listas encadeadas
    • Desempenho da lista encadeada
    • Crie uma lista encadeada
    • Faça uma busca em uma lista encadeada
    • Removendo um nó de uma lista encadeada
      • Inverta uma lista encadeada
    • Encontrando o ciclo de uma lista encadeada
    • Vocabulário
    • Desafios
  • Capítulo 11 ■ Pilhas (Stacks)
    • Quando usar pilhas
    • Criando uma pilha
    • Usando pilhas para inverter strings
    • Pilha mínima
    • Parênteses empilhados
    • Vocabulário
    • Desafios
  • Capítulo 12 ■ Filas (Queues)
    • Quando usar filas
    • Criando uma fila
    • Classe Queue interna do Python
    • Crie uma fila usando duas pilhas
    • Vocabulário
    • Desafio
  • Capítulo 13 ■ Tabelas hash
    • Quando usar tabelas hash
    • Caracteres de uma string
    • Soma de dois números
    • Vocabulário
    • Desafio
  • Capítulo 14 ■ Árvores binárias
    • Quando usar árvores
    • Criando uma árvore binária
    • Percorrendo uma árvore pela largura
    • Mais buscas em árvores
    • Inverta uma árvore binária
    • Vocabulário
    • Desafios
  • Capítulo 15 ■ Heaps binários
    • Quando usar heaps
    • Criando um heap
    • Emendando cordas com custo mínimo
    • Vocabulário
    • Desafio
  • Capítulo 16 ■ Grafos
    • Quando usar grafos
    • Criando um grafo
    • Algoritmo de Dijkstra
    • Vocabulário
    • Desafio
  • Capítulo 17 ■ Inspiração autodidata: Elon Musk
  • Capítulo 18 ■ Próximos passos
    • O que fazer a seguir?
    • Subindo a escada dos freelancers
    • Como conseguir uma entrevista
    • Como se preparar para uma entrevista técnica
    • Recursos adicionais
    • Considerações finais
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Cory Althoff

Cory Althoff é um programador, palestrante e autor, cujo trabalho inclui os livros Programador Autodidata e Cientista da Computação Autodidata. Depois de se formar em ciência política, Cory aprendeu sozinho a programar, tornando-se um engenheiro de software no eBay. Os livros de Cory foram traduzidos para vários idiomas e ele foi destaque em publicações,… Ver perfil completo ▶