Ciência da computação para programadores

8

Eu sou um programador autodidata e tenho codificado por 8 anos. Devido a essa experiência, eu já estou muito familiarizado com os princípios de programação (como declarações if, classes, polimorfismo etc.).

No entanto, nunca aprendi "ciência da computação", apenas programação. Quais são alguns bons recursos para alguém na minha posição de auto-estudar ciência da computação - isto é, recursos que se movem rapidamente e assumem conhecimentos básicos de programação?

Shivam Sarodia
fonte
coletado std / popular cs refs
vzn 28/06/2014
Então você veio ao lugar certo.
SDsolar
Então você veio ao lugar certo.
SDsolar

Respostas:

11

A Ciência da Computação é uma disciplina multifacetada - e Algoritmos e Estruturas de Dados são parte importante dela. Você pode experimentar cursos de vídeo gratuitos, como Algoritmos, Parte 1, da Universidade de Princeton - estão em execução no momento.

Outro notável algoritmo gratuito em vídeo-curso : Design and Analysis, Parte 1, de Stanford terminou recentemente - espero que seja repetido no futuro. A parte 2 deste curso começará nesta segunda-feira.

HEKTO
fonte
ESTÁ BEM. Eu fiz algumas pesquisas na internet e parece que uma classe geral de algoritmos é exatamente o que estou procurando.
Shivam Sarodia
9

Bem, esta é minha primeira resposta aqui e, além disso, sou menos experiente que você. Portanto, considere uma resposta de iniciante, que pode ser irrelevante para você ou outras pessoas. Mas, tentarei preservar o valor da pergunta com a minha resposta!

Bem, antes de tudo, vamos discutir (apenas esboçar) o domínio da ciência da computação, ou o ciclo de vida de alguém envolvido na aprendizagem de CS. Provavelmente, posso estar sentindo falta de alguns deles. Além disso, pode haver ambiguidade sobre seu posicionamento. Mas, é assim: -

  1. Fundamentos de informática (trabalho geral em computadores) e introdução a computadores
  2. Linguagem de programação e seu uso para resolver problemas da vida real usando a ajuda de computadores
  3. Variações da linguagem de programação (funcional, orientada a objetos, procedurais) e seus diferentes princípios
  4. Estruturas de dados e algoritmos // uma das partes mais importantes e a espinha dorsal do CS
  5. Fundamentos de sistemas de computador --- Matemática discreta, uma parte da eletrônica digital
  6. Engenharia de software // novamente uma das partes mais importantes e a espinha dorsal do CS
  7. Sistema operacional --- o meu assunto favorito no ramo CS, e também o ramo principal mais importante do CS; todo o CS roda nesse processo, pelo menos.
  8. Arquitetura de computadores - é novamente um dos assuntos importantes para conhecer o funcionamento básico do trabalho de computadores
  9. Os bancos de dados valem cada reconhecimento! Excelente descoberta.
  10. Redes de computadores --- uma seção muito bonita de CS relacionada a redes (conexões da vida real)
  11. Teoria da computação, autômatos, compiladores - meu segundo assunto favorito, tudo em uma seção que descreve mudanças de estado, formação e operação de idiomas.
  12. Data Mining & Machine Learning --- O campo mais progressivo da Ciência da Computação atualmente e de fato um dos mais informativos
  13. Inteligência Artificial e Redes Neurais e Lógica Difusa --- para não dizer nada, a melhor simulação da vida real

Agora, voltando à pergunta. Eu acho que você deve dar a cada seção a chance de se aprofundar e tentar encontrar seu campo de interesse. Uma pessoa leva alguns anos para decidir qual campo é o mais adequado para ela.

Você não deve pular diretamente para qualquer campo que envolva apenas a seção de programação !!! As linguagens de programação não são "que" valem o que são enquadradas, a parte mais importante é a modelagem básica, o funcionamento e a geração de idéias e novas teorias que aprimoram o campo da CS. Então, como eu, você deve tentar cada campo de uma só vez, digamos por uma semana e ver se realmente está mais atraído por eles! Isso primeiro lhe dará o assunto para levar com você!

Agora, chegando aos recursos on-line.Há muito o que olhar.Você encontrará hoje muitos tutoriais, vídeos e palestras disponíveis na internet.Mas os mais procurados, com apresentações brilhantes, são: -

  1. www.coursera.org
  2. www.nptel.ac.in
  3. www.khanacademy.org

e assim por diante.

Tente usá-las com mais frequência para aprender os conceitos básicos de CS. Além disso, você sempre tem um clique de mecanismos de pesquisa para ajudá-lo a fornecer o tópico com o qual está enfrentando dificuldades.

Am_I_Helpful
fonte
2

Como programador, você deveria saber o seguinte, de acordo com a Ciência da Computação básica:

  1. Princípios básicos de programação
  2. Estruturas de dados
  3. Metodologia de Engenharia de Software
  4. Técnicas de programação diferentes (depende do algoritmo)
  5. Conhecimento básico de teste do código

Você pode obter esses cursos através do MOOC .

O Coursera está oferecendo cursos diferentes com bons recursos, se você quiser, pode se inscrever lá.

Ysr Shk
fonte
Você parece ter a pergunta ao contrário. Não está perguntando quais aspectos da ciência da computação são relevantes para os programadores; está perguntando onde um programador pode encontrar recursos para aprender sobre ciência da computação.
David Richerby
-1

Outros cursos que estudei (e acho que são importantes):

  1. Padrões de design (como Singleton, Fachada, Fábrica, etc.)
  2. Estruturas discretas

A complexidade assintótica também é um tópico muito importante na SC. Eu recomendaria "Introdução aos algoritmos" como um bom livro de referência para estrutura de dados e algoritmos. Você pode praticar no Project Euler . Fora isso, o MIT tem cursos no MIT Open CourseWare no YouTube. Acho seus cursos de estrutura de dados muito úteis.

Outra coisa que posso sugerir é também pesquisar no livro de ciências da universidade qualquer universidade para obter os tópicos, ver qual deles é de interesse e estudá-los.

Xaero
fonte