Ciência da Computação é ciência, matemática aplicada, engenharia, arte, filosofia? "De outros"?
Para fornecer informações, aqui está a postagem de Steven Wartik no blog da Scientific American intitulada " Eu não sou um cientista de verdade, e tudo bem ". O artigo aborda alguns bons tópicos para esta pergunta, mas deixa em aberto mais do que responde.
Se você consegue pensar na disciplina, como a ciência da computação se encaixaria em sua definição? A disciplina de Ciência da Computação deve basear-se no que os programadores fazem ou no que os acadêmicos fazem? Que tipo de respostas você recebe de pessoas que parecem pensar profundamente sobre isso? Que razões eles dão?
computer-science
philosophy
Macneil
fonte
fonte
Respostas:
Existem duas disciplinas de TI distintas:
Ciência da Computação - é o estudo da disciplina de computadores e computação usando o método científico.
Engenharia de software - é a disciplina de design e implementação de software, seguindo os princípios de engenharia adequados.
Os dois se sobrepõem um pouco, mas a distinção é realmente sobre os resultados desejados da ciência versus engenharia. O resultado desejado de uma disciplina científica é o conhecimento. O resultado desejado de uma disciplina de engenharia são as coisas que funcionam.
Então, para responder sua pergunta:
Ciência da Computação é Ciência ... quando feito corretamente. No entanto, como outras disciplinas, o CS se sobrepõe a Matemática, Engenharia, Ciências Físicas, Ciências Sociais, Filosofia e assim por diante.
Eu também acrescentaria que o que a maioria dos programadores faz não é Ciência da Computação ou Engenharia de Software. É mais parecido com o que um artesão faz.
E é triste dizer que nem a Ciência da Computação acadêmica nem a profissão de Engenharia de Software são tão rigorosas quanto as disciplinas mais antigas de ciência e engenharia. (Existem campos da Ciência da Computação que são tradicionalmente rigorosos; por exemplo, aqueles com uma forte base matemática. Mas, para muitos campos, é simplesmente muito difícil / caro fazer estudos científicos adequados sobre as questões que realmente importam.)
fonte
Os programadores raramente "fazem ciência da computação". Eles usam principalmente resultados de "engenharia de software", que é uma disciplina de engenharia, obviamente.
Fora isso, Ciência da Computação é Matemática Aplicada. Se você comparar o CS com algo indubitavelmente pertencente à matemática aplicada, notará muita semelhança.
Os cientistas da computação projetam e estudam formas de computação (algoritmos), tirando a maior parte da teoria da matemática (lógica, teoria dos grafos, combinatória etc.) - e contribuindo para isso ao mesmo tempo. Assim como o resto da matemática aplicada.
Eles avaliam propriedades desses modelos e algoritmos teoricamente e realizam experimentos de modelagem (escrevem programas de teste). Assim como os matemáticos aplicados simulam o fluxo de líquido em tubos em aglomerados, os cientistas da computação usam computadores para experimentar implementações de seus algoritmos. Os resultados desses experimentos vão diretamente para a produção: em uma refinaria de petróleo ou em um software para análise de estoque.
Na universidade que terminei, não havia sequer um departamento especial de ciência da computação: entre outros domínios não relacionados à computação, a cátedra de ciência da computação faz parte do Departamento de Matemática Aplicada.
fonte
Ciência da Computação é um termo que hoje cobre muitas e muitas coisas:
Observe como todos os itens acima têm nomes distintos, em vez de apenas "cientistas da computação". A diferença é que a Ciência da Computação é nova demais para que os nomes se estabeleçam.
fonte
Primeiro de tudo, é ciência da computação . Isso lida com a matemática por trás da computação.
Existem outras disciplinas mais orientadas para a engenharia.
A diferença é a mesma que qualquer disciplina relacionada à ciência e engenharia. Um é sobre precisão, outro sobre precisão. A ciência da computação é teórica, outras são as ciências aplicadas aos problemas: ramos da engenharia.
fonte
A ciência da computação é aplicada e matemática experimental .
fonte
A ciência da computação é um ramo da matemática aplicada que lida com o design e a aplicação de autômatos computacionais. A engenharia de software é o subconjunto apropriado da ciência da computação que lida com o design formalizado e a construção de código para a arquitetura von Neumann. A arquitetura von Neumann é apenas uma maneira de implementar uma máquina de computação. Por exemplo, a máquina usada para decifrar mensagens codificadas pelo Enigma não era uma máquina de von Neumann.
A engenharia de software é uma disciplina profissional. A ciência da computação é uma disciplina orientada para a pesquisa. A maioria dos estudantes de graduação em ciência da computação acaba em desenvolvimento de software porque a pesquisa exige que se detenha pelo menos um mestrado, o que reforça a crença de que a ciência da computação é um certificado de programação glorificado.
fonte
A disciplina mais precisamente chamada de "Ciência da Computação" é, na maioria das universidades que verifiquei, uma ciência aplicada, semelhante às disciplinas de engenharia; se você se formar, recebe um "BS" ou "MS". O grau de CS da Texas Tech foi oferecido pela faculdade de Engenharia. A disciplina, como ensinada, é principalmente teórica; você aprende o conceito de máquinas de Turing, DAs / NDAs e outros conceitos fundamentais de que o programador "cotidiano" não precisa realmente ficar mexendo no crânio. Você também recebe um monte de matemática superior; o Texas Tech CS, e aposto que muitos outros também oferecem a você um menor de matemática. Para isso, a maioria das faixas de graduação da universidade adiciona uma pitada de aplicação prática de baixo nível; você aprende uma linguagem assembly, uma linguagem de terceira geração,
No entanto, a maioria das pessoas que codificam para viver não são "cientistas da computação"; eles são, estritamente falando, "desenvolvedores de software" ou (quando você adiciona análise / design) "engenheiros de software"; esse trabalho tem muito menos nível de hardware (embora você precise conhecer o básico), muito mais análise de sistemas, design e codificação direta. Muitas universidades têm uma trilha diferente apenas para isso; na Texas Tech, chamava-se "Gerenciamento de sistemas de informação" e era formado em administração de empresas (BBA / MBA). Essa faixa era mais leve em matemática mais alta (o que você precisava saber sobre álgebra e cálculo diferencial / integral era espremido em dois semestres de "matemática de negócios" e não incluía cálculo de vetor / tensor, álgebra linear etc.), muito mais pesado em matemática financeira (um semestre de estatísticas e finanças, com dois cada um de contabilidade e economia). Mais leve em sistemas operacionais, mais pesada em tecnologias de "pilha", como bancos de dados, servidores web, redes e administração geral de sistemas. Mais leve em idiomas de baixo nível, design de circuitos e IA, mais pesado em idiomas de 3ª e 4ª geração, análise de sistemas e gerenciamento de projetos. Eu me formei na Texas Tech e, quando saí, já tinha pelo menos um semestre de Java, VB, C # e linguagens da web (HTML / CSS / PHP), além de um ano de OOA & D e vários outros cursos no gerenciamento de projetos de TI.
Qual é o melhor no mundo real? Eu adquiri o MIS BBA, meu irmão obteve o CS BS e nós dois trabalhamos com o mesmo nível salarial (ajustando o custo de vida) dos engenheiros de software seniores. Ele teve que aprender muito do OOA & D necessário no trabalho, bem como acelerar muito rapidamente em C # / Java a partir de seu conhecimento básico em C ++. De minha parte, eu gostaria de ter os dois semestres de estudo de algoritmo conceitual que ele obteve enquanto eu estava preso em cursos de gerenciamento de negócios (sim, o MIS é um "Gerenciamento", mas descobri que 99% do meu conhecimento de como gerenciar e não gerenciar outras pessoas foi aprendido por exemplo).
fonte