Sendo um programador completamente autodidata, eu gostaria que pudesse me aperfeiçoar aprendendo sozinho o curso de ciências da computação ministrado a um típico aluno de ciências da computação.
Encontrar recursos diferentes na Internet tem sido fácil, é claro que existe o software aberto para cursos do MIT e existem cursos Coursera de Stanford e de outras universidades. Existem inúmeros outros recursos abertos espalhados pela Internet e alguns bons livros que são repetidamente recomendados.
Eu tenho aprendido muito, mas meu estudo é muito fragmentado, o que realmente me incomoda. Eu adoraria Se em algum lugar pudesse encontrar um caminho a seguir e uma pilha à qual me deveria limitar, para ter certeza sobre as partes essenciais da ciência da computação que estudei e depois abordar sistematicamente as que não tenho.
O problema com a Wikipedia é que ele não diz o que é essencial, mas insiste em ser uma referência completa.
Curso aberto do MIT para ciência da computação e engenharia elétrica. Também possui uma lista enorme de cursos, sem informar quais cursos são essenciais e quais são opcionais conforme o interesse / requisito da pessoa. Não encontrei menção de uma ordem na qual se deveria estudar assuntos diferentes.
O que eu adoraria é criar uma lista que eu possa seguir, como essa manequim
SUBJECTS DONE
Introduction to Computer Science *
Introduction to Algorithms *
Discrete Mathematics
Adv. Discrete Mathematics
Data structures *
Adv. Algorithms
...
Como você pode ver claramente, tenho pouca ideia de em que assuntos específicos a ciência da computação consiste.
Seria extremamente útil, mesmo se alguém apontasse cursos essenciais do MIT Course ware (+ assuntos essenciais não presentes no MIT OCW) em uma ordem de estudo recomendada.
Vou listar as postagens pelas quais já passei (e não consegui o que estava procurando lá)
https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major - a resposta principal diz que não vale a pena estudar cse
https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science - aponta para MIT OCW
fonte
Respostas:
Eu já 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 "Azul" em vez de ARGB de 32 bits, e muito menos 4x [0,1] carros alegóricos, esse tipo de coisa. Eu não confiaria em um currículo ou código apenas porque se trata de uma universidade de grande nome.
Meu diploma de CS (de uma universidade entre os 10 melhores no Reino Unido para CS) consistia em:
Primeiro ano:
Segundo ano:
Terceiro ano:
Como você notará, praticamente tudo é "o básico" de algo e quase nada é coberto com profundidade útil.
O material que realmente valia a pena fazer, essencial:
O material que valia a pena fazer, opcionalmente:
Coisas que são essenciais, mas eu não as cobri de qualquer maneira:
O resto foi uma completa perda de tempo. Infelizmente, a maioria desses nove pontos que eu já conhecia ou pegou as partes úteis em outros lugares. Se você ler sobre coisas como o problema do FizzBuzz , rapidamente se torna aparente que você realmente não precisa saber muito para estar no topo da lista - o que é uma sorte, pois meu diploma e muitos dos materiais que eu vi online para outros graus realmente não ensina muito.
fonte
O Open Course ware é apenas uma lista dos cursos que eles disponibilizaram. Se você quiser saber o que um aluno levaria, visite o site do MIT (não OCW) e consulte o programa atual. Eles têm uma lista do que é necessário e o que é considerado um pré-requisito para o que. Aqui está a página deles.
fonte
Tente as recomendações curriculares de Ciência da Computação de 2001 da ACM / IEEE, link aqui: http://www.acm.org/education/curricula-recommendations
juntamente com as atualizações de 2008 do CS.
A página 17 do relatório de 2001 possui um gráfico útil que sublinha todo o conhecimento "básico" e ainda lista as eletivas.
Um programa de graduação não teria tempo para cobrir até os cursos considerados essenciais por essas recomendações; portanto, eles agrupam algumas das categorias e permitem que os alunos escolham entre elas (por exemplo, sistemas operacionais, idiomas de programação e engenharia de software) Software e os alunos escolhem uma faixa).
Você pode encontrar os cursos necessários no site do departamento de CS para praticamente qualquer escola, e eles devem ser uma versão disso.
fonte
Se eu puder, gostaria de sugerir se juntar ao github.com como parte do seu processo de aprendizado.
Em seguida, você pode procurar por código que tenha algum aplicativo do mundo real do seu interesse, cloná-lo por conta própria, trabalhar com ele, codificar nele e conhecê-lo, e eventualmente começar a enviar patches de volta ao projeto de origem , e abaixo da linha, esteja trabalhando em um projeto de código aberto no qual você tenha interesse.
E, é claro, você se familiarizará com o git, que é ainda melhor.
fonte