sábado, 30 de junho de 2012

Quais são os principais artigos que todo cientista da computação deveria ler?

Eu resolvi escrevi este post selecionando os seminais artigos em diversas áreas da computação. Essa idéia não é original, ela  foi copiada do fórum cstheory.stackexchange.com.

Teoria da Computação
ON COMPUTABLE NUMBERS, WITH AN APPLICATION TO THE ENTSCHEIDUNGSPROBLEM
http://www.thocp.net/biographies/papers/turing_oncomputablenumbers_1936.pdf

Neste artigo, Turing apresenta a parte teórica da Máquina de Turing. A máquina de Turing é um dos modelos que captura a noção de computabilidade.


Reducibility Among Combinatorial Problems (1972)
http://www.cs.berkeley.edu/~luca/cs172/karp.pdf
Neste artigo, Richard Karp mostra que 21 problemas são NP-completo.


Inteligência Artificial
A. M. Turing (1950) Computing Machinery and Intelligence. Mind 49: 433-460.

Computing Machinery and Intelligence, escrito por Alan Turing 
e publicado em 1950 é um artigo seminal na área de inteligência 

artificial. Neste paper, ele apresenta o conceito que ficou


conhecido como Teste de Turing. O teste de Turing é um teste 

que mostra se um computador exibe um comportamento inteligente.

A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence
http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html
Proposta da escola de verão elaborada por J. McCarthy, Dartmouth College, M. L. Minsky, Harvard University, N. Rochester, I.B.M. Corporation ,C.E. Shannon, Bell Telephone Laboratoriesque
Essa escola de verão inaugura e define a área de pesquisa chamada inteligência artificial. 


Circuitos Digitais
A Symbolic Analysis of Relay and Switching Circuits (1938)
http://cadathlon.com/2007/refs/p4-system.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/11173/34541425.pdf?sequence=1
Neste trabalho, Shannon mostra que a algebra booleana pode ser utilizada para simplificar o arranjo de relés
eletromecânicos. Este é o principal trabalho na área de circuitos digitais. Possivelmente, esta é a dissertação de mestrado mais importante e famosa do século.


Banco de Dados
A relational model for large shared data banks (1970)
http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
Neste artigo, Edgar Codd apresenta uma nova maneira de representação de dados. O modelo relacional é um modelo de dados baseado em lógica e na teoria de conjuntos.

Sistemas Operacionais 
An experimental timesharing system. (1962)
Fernando J. Corbató, M. Merwin-Daggett, e R.C. Daley
 http://larch-www.lcs.mit.edu:8001/~corbato/sjcc62/
Este artigo discute o compartilhamento de tempo como um método para compartilhamento dos recursos do computador.

Engenharia de Software 
Report of a conference sponsored by the NATO Science Committee (1968)
http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF
O termo Engenharia de Software foi utilizado oficialmente nesta conferência. A criação surgiu na tentativa de contorna a crise do software e dar um tratamento mais sistemático ao desenvolvimento de sistemas de softwares complexos.


Linguagens de Programação
Go To Statement Considered Harmful
http://www.kbs.uni-hannover.de/Lehre/SWTG/goto.pdf
Artigo bastante popular escrito Edsger Dijkstra, publicado em 1968, no qual ele critica o uso excessivo do comando goto nas linguagens de programação de programação da época.  Neste artigo, ele advoga que comando goto deveria ser abolido de todas as linguagens de alto nível.

C A R Hoare, Communicating Sequential Processes
http://goo.gl/xok1M
Neste artigo, Hoare apresenta uma linguagem forma para descrever padrões de interações em sistemas concorrentes. CSP influenciou bastante o desenho da linguagem occam e recentemente a linguagem go.

Recursive functions of symbolic expressions and their computation by machine, part I
http://www-formal.stanford.edu/jmc/recursive.pdf
Neste artigo, Jonh Mc Carthy apresenta a linguagem Lisp. A linguagem Lisp é uma linguagem funcional baseado no cálculo lambda de Church.

The Advent of Recursion in Programming, 1950s-1960s
http://www.illc.uva.nl/Research/Reports/PP-2010-04.text.pdf

The Humble Programmer
http://www.jdl.ac.cn/turing/pdf/p859-dijkstra.pdf
http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html/
https://sites.google.com/a/integra.ufjf.br/professor-joao-carlos/t10.doc?attredirects=0 (Português)
Neste artigo, Djikstra aponta a complexidade do trabalho
do programador.

Outros links:
http://fgsl.eti.br/blog/?p=439
http://akitaonrails.com/2010/04/12/off-topic-o-programador-humilde-por-edsger-w-dijkstra

Motor de Busca (Search Engine) 
The Anatomy of a Large-Scale Hypertextual Web Search Engine
 http://ilpubs.stanford.edu:8090/361/1/1998-8.pdf
Neste artigo, Sergey Brin e Lawrence Page apresenta google, um protótipo de um motor de busca em larga
escala que utiliza maciçamente a estrutura presente nas páginas web.

Teoria da Informação
A Mathematical Theory of Communication
http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf 
Em 1948, Shannon apresentou os resultados básicos da teoria  da informação de maneira tão completa que seu framework e terminologia até hoje ainda é usada.

Programação Matemática
George B. Dantzig, Linear Programming
http://www.cs.duke.edu/courses/cps296.2/spring07/papers/LinearProgramming_article.pdf

Referências:
http://cstheory.stackexchange.com/questions/1168/what-papers-should-everyone-read
http://en.wikipedia.org/wiki/List_of_important_publications_in_computer_science
http://blog.mendeley.com/highlighting-research/the-top-10-research-papers-in-computer-science-by-mendeley-readership/
http://www.mendeley.com/computer-and-information-science/




Nenhum comentário: