Auto-educação em computador-ciência
Um programa completamente gratuito para aprender o curso de ciência da computação por curso
Introdução à ciência da computação (1-2 semanas)
- Visão geral da ciência da computação
- Introdução à programação
- Visão geral de algoritmos e estruturas de dados
- Organização e arquitetura básica de computadores
Recursos:
- Introdução à Ciência da Computação pela Universidade de Harvard em EDX
- Codecademy Aprenda como codificar o curso
Fundamentos de programação (4-6 semanas)
- Introdução à linguagem de programação python
- Declarações de fluxo de controle
- Tipos de dados e estruturas
- Funções e módulos
- Operações de entrada e saída
- Depuração e manuseio de erros
- Conceitos de programação orientados a objetos
Recursos:
- Python para todos da Universidade de Michigan na Coursera
- Aprenda Python da maneira mais difícil de Zed Shaw
Estruturas e algoritmos de dados (12-16 semanas)
- Estruturas de dados básicas (matrizes, listas vinculadas, pilhas, filas)
- Estruturas de dados avançadas (árvores, gráficos, tabelas de hash)
- Análise e design de algoritmo
- Pesquisando e classificando algoritmos
- Recursão
- Programação dinâmica
- Algoritmos gananciosos
- Dividir e conquistar algoritmos
Recursos:
- Estruturas de dados e especialização de algoritmos pela Universidade da Califórnia, San Diego em Coursera
- Introdução aos algoritmos pela MIT Press
Arquitetura e sistemas de computador (8 a 12 semanas)
- Visão geral do hardware e software do computador
- Sistemas operacionais
- Gerenciamento de memória
- Sistemas de entrada/saída
- Redes de computadores
- Sistemas distribuídos
Recursos:
- Arquitetura de computadores da Universidade de Princeton em Coursera
- Sistemas operacionais: três peças fáceis de Remzi H. Arpaci-Dusseau e Andrea C. Arpaci-Dusseau
Sistemas de banco de dados (8 a 12 semanas)
- Introdução aos bancos de dados
- Sistemas de banco de dados relacionais (SQL)
- Design de banco de dados e normalização
- Consultando e manipulando dados
- Administração de banco de dados
Recursos:
- Introdução aos bancos de dados da Universidade de Stanford em Coursera
- Sqlbolt (tutoriais interativos on -line SQL)
Desenvolvimento da Web (8 a 12 semanas)
- Desenvolvimento front-end (HTML, CSS, JavaScript)
- Desenvolvimento de back-end (Web Frameworks, Programação do lado do servidor)
- Integração do banco de dados (SQL, ORM)
- Segurança e autenticação
Recursos:
- O Projeto Odin (currículo de desenvolvimento da Web de pilha completa gratuita)
- Freecodecamp (currículo gratuito de desenvolvimento da web)
Engenharia de Software (8 a 12 semanas)
- Ciclo de vida de desenvolvimento de software
- Gerenciamento de projetos de software
- Engenharia de requisitos
- Testes e garantia de qualidade
- Manutenção e evolução de software
Recursos:
- Engenharia de software Essentials da Universidade do Colorado Boulder na Coursera
- O mítico-mês de Frederick P. Brooks Jr.
Inteligência artificial e aprendizado de máquina
- Visão geral da inteligência artificial e aprendizado de máquina
- Algoritmos de aprendizado supervisionado (regressão linear, regressão logística, árvores de decisão, máquinas vetoriais de suporte, vizinhos mais parecidos, Bayes ingênuos) (4-6 semanas)
- Algoritmos de aprendizagem não supervisionados (agrupamento, redução de dimensionalidade) (4-6 semanas)
- Aprendizagem de reforço
- Redes neurais e aprendizado profundo (4-6 semanas)
- Processamento de linguagem natural
- Visão computacional
Recursos:
- Aprendizado de máquina por Andrew Ng na Coursera
- Aprendizagem profunda de Yoshua Bengio, Ian Goodfellow e Aaron Courville
Computer Graphics and Visualization (8 a 12 semanas)
- Oleodutos gráficos
- Transformações geométricas
- Primitivos gráficos 2D e 3D
- Técnicas de renderização (rastreamento de raios, rasterização)
- Animação e simulação
- Técnicas de visualização
Recursos:
- Computer Graphics da Universidade de Tóquio na EDX
- Renderização em tempo real de Tomas Akenine-Möller, Eric Haines e Naty Hoffman
Interação humano-computador (8 a 12 semanas)
- Princípios do design da interface do usuário
- Processos de design centrados no usuário
- Teste e avaliação de usabilidade
- Design de interação
- Visualização da informação
- Acessibilidade
Recursos:
- Interação humana-computador da Universidade da Califórnia San Diego na Coursera
- Não me faça pensar por Steve Krug
Segurança cibernética (8 a 12 semanas)
- Segurança de rede
- Criptografia
- Autenticação e controle de acesso
- Análise e detecção de malware
- Avaliação e gerenciamento de risco de segurança
Recursos:
- Introdução à segurança cibernética pela Escola de Engenharia Tandon da Universidade de Nova York no EDX
- Engenharia de segurança por Ross J. Anderson
Ferramentas de desenvolvimento de software (4-6 semanas)
- Sistemas de controle de versão (Git)
- Ambientes de Desenvolvimento Integrado (IDES)
- Ferramentas de depuração e criação de criação
- Construir automação e integração contínua (Jenkins)
Recursos:
- Manual Git por Github
- Eclipse IDE Tutorial de Vogella
Matemática para Ciência da Computação (8 a 12 semanas)
- Matemática Discreta
- Álgebra linear
- Probabilidade e estatística
- Cálculo
- Teoria do número
Recursos:
- Matemática para Ciência da Computação pelo Instituto de Tecnologia de Massachusetts no MIT OpenCourseware
- Álgebra linear por Gilbert Strang no MIT OpenCourseware
Ética e sociedade em computação (8 a 12 semanas)
- Questões éticas na computação
- Implicações sociais e políticas da computação
- Problemas de privacidade e segurança
- Propriedade intelectual e direitos autorais
- Impacto global da computação
Recursos:
- Computação e Sociedade pela Universidade de Harvard em EDX
- O Código: Vale do Silício e a Remaking of America por Margaret O'Mara
Espero que isso seja benéfico para todos os leitores, tanto quanto foi benéfico para mim também. Lembre-se de que todos os horários estimados para terminar esses cursos são baseados em ter um emprego em período integral enquanto estudam.