Eu vi algum material do curso do MIT, e foi chocantemente ruim . Eles tinham materiais de ensino que exigiam VC5, grupos de variáveis globais implícitas, passando cores como "Blue" em vez de 32GB ARGB, e muito menos 4x [0,1] floats, esse tipo de coisa. Eu não confiaria em um currículo ou código só porque vem de uma universidade de grande nome.
Meu grau de computação em equipe (de uma universidade que é o top 10 no Reino Unido para CS) consistia em:
Primeiro ano:
- OOP- os super básicos
- Sistemas de computador - coisas como representações inteiras binárias.
- Teoria básica de banco de dados relacional
- Matemática para CS - simples geometria 2D e 3D.
- Um pouco de HTML / JS - coisas para iniciantes completos
- Um pedaço igualmente pequeno de PHP.
- Um pouco de programação funcional
Segundo ano:
- Questões legais em computação - coisas como, leis que giram em torno proteção de dados do usuário
- Linguagens de programação - a hierarquia e o lexing do Chomsky foram cobertos
- Sistemas operacionais, redes e a Internet - principalmente coisas como memória virtual e paginação, pilha de IP
- Gráficos de computador 2D - na maioria apenas provando teoremas do subjacente matemática
- AI- descrições básicas de redes neurais, sistemas de crenças bayesianos, etc.
- Análise de requisitos - visão geral resumida da UML, requisitos funcionais / não funcionais.
- Projeto de equipe
Terceiro ano:
- Análise de algoritmo - teoria da complexidade, principalmente
- Implementação de linguagens de programação - técnicas de análise LL / LR, CFGs e tais coisas.
- Gerenciamento de projetos de software - uma olhada nos modelos Waterfall / Agile
- Computação internacional - Unicode e outros divertimentos de localização
- IA avançada - não sei, honestamente, e eu fiz um exame em breve
- computação gráfica 3D - principalmente, novamente, apenas provando teoremas para matrizes de rotação e tais
- Sistemas baseados em agentes - principalmente sobre agentes assíncronos se comunicando, alcançar as decisões do grupo, etc.
- Aplicações de microprocessador - processamento de sinal digital
- Robótica - abrange coisas como visão computacional e decisão de robôs fazendo em alto nível
Como você notará, praticamente tudo é "o básico" de algo e quase nada é coberto até uma profundidade útil.
O material que valeu a pena, essencial:
- OOP- e mais um pouco, e mais um pouco
- Programação funcional - também um pouco mais. Tente escolher uma linguagem como C ++ ou C #, em que você não precise reaprender a sintaxe e as ferramentas, etc., para abordar os dois estilos.
- A parte virtual do sistema operacional é boa para se conhecer, assim como o modo kernel versus o modo usuário. Ignorar a segmentação e a pilha de IPs.
- Análise de requisitos - deve ser útil para qualquer projeto
- Análise de algoritmo - saber qual é a complexidade algorítmica, como reduzi-la e qual é a complexidade das operações comuns é importante.
- Modelos de gerenciamento de projetos de software - muitas lojas fazem Agile e muitos modelos mais antigos ainda fazem modelos estilo Cachoeira.
- Computação internacional - o Unicode é essencial
As coisas que valeram a pena, opcionalmente:
- Linguagens de programação - Hierarquia de Chomsky, as ferramentas de lexação e análise. Pule a teoria por trás dos analisadores LL ou LR - um analisador LR pode aceitar virtualmente qualquer CFG realista e não ambíguo, e quando não puder, a documentação do seu gerador de analisador irá informá-lo sobre isso.
- Gráficos 3D. Eu não quero dizer "provar que isso é uma fórmula de matriz de rotação" desperdícios de tempo, quero dizer real "Isso é um shaver de vértice" coisas, ou GPGPU. Isso é divertido, interessante e diferente.
- Algumas das coisas de IA são campos em potencial e busca de caminhos divertidos.
Coisas essenciais, mas eu não as abordei de qualquer maneira:
- Concorrência - um must-know, pelo menos o básico, para qualquer um em 2012.
O resto foi uma completa perda de tempo. Infelizmente, a maioria desses nove pontos eu já conhecia ou peguei as partes úteis em outro lugar. Se você ler sobre coisas como o problema do FizzBuzz , rapidamente se torna aparente que você não precisa saber muito para estar no topo - o que é uma sorte, já que meu diploma e muitos dos materiais que eu já vi online em outros cursos realmente não ensinam muito.