̫ɵ³¬¼¶ÂÛ̳'s Archiver

godspeed@UK ·¢±íÓÚ 2005-10-10 19:01

²»Á˽â×Ô¼º·½ÏòµÄÇë½ø£¬Ã¿²ãÂ¥ÓÐÒ»¸öCS·½Ïò¡£

[size=6]Software engineering[/size]*C1E:uL3s%mFx
[url]http://en.wikipedia.org/wiki/Software_engineering[/url]
4[y\7}Y From Wikipedia, the free encyclopedia.,}*C2ew3\Y#@
Software engineering is the profession that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.T~m&?D S1[!W

T rs%Z1JY,Rn Software is the set of directions that enables computer hardware to perform useful work. In the last decades of the twentieth century, cost reductions in computer hardware led to software becoming a ubiquitous component of the devices used by industrialized societies.
"omi$lK4j6a~$_l1\ t,EU.Uaau)V;r
Software engineering, like traditional engineering disciplines, deals with issues of cost and reliability. Some software applications contain millions of lines of code that are expected to perform properly in the face of changing conditions.i!guqP}0ZJ

uj8A(ds}s As of 2002, the U. S. Bureau of Labor Statistics counts 675,000 computer software engineers holding jobs in the U.S., and there are estimated to be about one-and-a-half million practitioners in the E.U., Asia, and elsewhere; these figures are about 60% of the number of practitioners engaged in traditional engineering. SE pioneers include Barry Boehm, Fred Brooks, C. A. R. Hoare, and David Parnas. There is extensive debate about what SE is, who qualifies as an SE, who sets the standards, etc.V b1kT(C3V^ nN

)h;R:P9H`L^Pe&C See also List of software engineering topics (thematic) and List of software engineering topics (alphabetical).
1z8Za^;ko v/H A+C7X&i
[size=6]Contents [/size]
Q)w7yqlF 1 Terminology
_Ec.R,v| IEB 1.1 Origins $]L:c9d[(F}]5SuV
1.2 Meanings
"@2[leX$r 1.3 Debate over who is a software engineer
;Z8a.p;TV!] 1.4 Levels 0b&?Q s!n%|J'o.U
2 Software engineering today /U"Zy#]1O:{C{
2.1 Room for improvement s+QZfx
2.2 Technologies and practices b(yV8{'Mb
3 Education @P Z$R`-o,h N^d
3.1 Graduate {1M)t$B0s#q
3.2 Undergraduate
[\r\7iT 3.3 Secondary "K~y(x c&{v
4 Employment
N3Y1_3a)Ex f 4.1 Roles in industry
;t2t@_I M'q 4.2 Employers x]L.x(f I B*C Tl
4.3 Certification LzWt*l1J9F
5 Process and methodology +z;AUI)b,O0F!~z`)p0]q
6 Comparing related fields
XsM,l|y 6.1 What is the nature of SE?
%L\{3n[%M 6.2 Branch of which field? I#L%l o pq){
7 History 2}6{.g){7f"x
7.1 60 year time line 6m1~3rw:P
7.2 Future directions for software engineering bb%|;a2m
8 Conferences, organizations and publications
4Ihg yHR5q{;G:[ 8.1 Conferences
)Qr#D8b&{.K 8.2 Organizations /])ni;Z C5[/P
8.3 Publications
g {+o5r la-} 8.4 External Links
5E3bb!_1H~)Vf-j 9 Quotes N)c"HN~0W
xltN B._/A"?.a-g
7?&? THH)o/a
/H(]~2w(mB)o8X
[edit]
1W0V.Z1M{;i9|/b#l [size=3]Terminology[/size]*z'H4P}$X&~S
[edit]#fr^3}}u-p1hgn:s
Origins?4b%um,M)Rto
The term software engineering was used occasionally in the late 1950s and early 1960s. The term software engineering was coined by F.L. Bauer, chairman of the 1968 NATO Software Engineering Conference held in Garmisch, Germany, and has been in widespread use since.-_#N5i{E8e

^2_J+m,XK jVe [edit]NOwJ&n#r
[size=3]Meanings[/size]
c&IT5qW7Kw `^(F The term software engineering is commonly used with a variety of distinct meanings:Ca0q*y*l h{4H

N,nwa}J o(i As the usual contemporary term for the broad range of activities that was formerly called programming and systems analysis;
K2Vko,q Hh As the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science;
$S)e8O O2`'AwG As the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering profession rather than an art or a craft, and advocates the codification of recommended practices in the form of software engineering methodologies.
9ORrF#Z \P Software engineering is "(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software," and "(2) the study of approaches as in (1)." ?IEEE Standard 610.12
0g-]2[)Jl[ Software engineering is practiced by software engineers.
D;R#J~ }Q;]G t \U%u ZZ*_#ys0lG
[edit]'`/O)Bv_
[size=3]Debate over who is a software engineer[/size]5ym{R4K'SZ$J.M3h
Some people believe that software development is a more appropriate term than software engineering for the process of creating software. People like Pete McBreen (author of "Software Craftsmanship: The New Imperative" (ISBN: 0-201-73386-2)) believe that the term Software Engineering implies levels of rigor and proven processes that are not appropriate for all types of software development. Breen goes on to make a strong case for craftsmanship as a more appropriate metaphor because it focusses on the skills of the developer as the key to success instead of the "manufacturing" process. ]+qq;H,?-Gd$E
p-P)P9U.L1~,e-v5N
Some people dispute the notion that the field is mature enough to warrant the title "engineering". In each of the last few decades, at least one radical new approach has entered the mainstream of software development (e.g. Structured Programming, Object Orientation, Agile Development), implying that the field is still changing too rapidly to be considered an engineering discipline. Other people would argue that the supposedly radical new approaches are actually evolutionary rather than revolutionary, the mere introduction of new tools rather than fundamental changes. Ts'CdE7m9N ?

G4^q|a~] There are currently no widely accepted criteria for distinguishing someone who is a software engineer from someone who is not a software engineer. In addition, the industry is in the midst of a complex debate on the licensing of practicing software engineers./S fo+w T1V
Ng2]pZxw
[edit]
t1T%j [K [size=3]Levels[/size]
F,\,s(QQ For the localities that do not license software engineers, some hiring classifications are made based on education and experience. Classification levels may include: entry-level, mid-level, and senior.
1f%{4q/Wf5S G^ icCv{
Typical entry-level software engineers have a bachelor's degree and zero to five years of experience. Typical mid-level software engineers have a bachelor's or master's degree and have five to ten years of experience. Typical senior-level software engineers have an advanced degree and have ten or more years of experience. Note that these are only guidelines that are trends seen in hiring practices and that many exceptions exist.)z3?#}8P~3A+F

m1Et JHc B,?oUK [edit]
,t#a/P&^)T$k"XV [size=3]Software engineering today[/size]3C%qQLh8c
Software engineering affects economies and societies in many ways.z/~$C(J4EMi~!jZ

b Vn`r!G [size=3]Economic [/size]
?ww/eR AO;m In the U.S., software drove about 1/4 of all increase in GDP during the 1990s (about $90 billion per year), and 1/6 of all productivity growth (efficiency within GDP) during the late 1990s (about $33 billion per year). Software engineering drove $1 trillion of economic and productivity growth over the last decade. Around the world, software drives economic growth in similar ways, though reliable statistics are hard to find.
c,h&t*JBr"~ [size=3]Social [/size]k)wQ1N0{#E'Tj{/E {
Software engineering changes world culture, wherever people use computers. Email, the world-wide web, and instant messaging enable people to interact in new ways. Software lowers the cost and improves the quality of health-care, fire departments, and other important social services.
?{f4T.D5z [ Successful projects where software engineering methods have been applied include Linux, the space shuttle software, and automated teller machines.
X&g:luw"l.Mp \x+P)O:Q]bb
See also software engineering economics.
W"M LaTpDE
F1LLitRJ4EB'MH#B [edit]
8T r$hk(o"F/x d#i [size=3]Room for improvement[/size]
6t/B5e]Pl In spite of the enormous economic growth and productivity gains enabled by software, persistent complaints about the quality remain.
?kLie qp
;UP3bo;u!{ I0dL;D Deficient software engineering is often blamed for project failures when the blame might more properly be placed with business managers who ignore lessons already learned by Software Engineers.]i KR!zfv"~ {m
4y,r.CZ~~8UF
See also Debates within software engineering and Criticism of software engineering#_ \2N7bt kXiU_7X

mk&w\-{*Hhe0K P [edit]
|*Fe#y$`)g#| mP d I"l [size=3]Technologies and practices[/size]
"q6D!W-hhs m$y What is the best way to make more and better software? SEs advocate many different technologies and practices, with much disagreement. This debate has gone on for 60 years and may continue forever. Software engineers use a wide variety of technologies and practices.
'Yy}8b)ET;R.@
e$^*l(rKs Xz5n3D Practitioners use a wide variety of technologies: compilers, code repositories, to word processors.
*Ta[:v3b#|s9m
vR-Z-W1\"f Practitioners use a wide variety of practices to carry out and coordinate their efforts: pair programming, code reviews, daily stand up meetings.3F,NuZop`L
,l u2t5DUB?|
[edit]
{qD{#zg5P,G6BMqY [size=3]Education[/size]4_TP\Tgvxh
People from many different educational backgrounds make important contributions to SE. The fraction of practitioners who earn computer science or software engineering degrees has been slowly rising. Today, about 1/2 of all software engineers earn computer science or software engineering degrees. For comparison, about 3/4 of all traditional engineers earn engineering degrees.&\mEkHO%f

v"YW{u [size=3]Software degrees [/size]R z8a1[:QTw"h
About half of all practitioners today have computer science degrees, which are the most relevant degrees that are widely available. A small, but growing, number of practitioners have software engineering degrees. As of 2004, in the U.S., about 2,000 universities offer computer science degrees and about 50 universities offer software engineering degrees. Most SE practitioners will earn computer science degrees for decades to come, though someday this may change. QLuviL,D
[size=3]Domain degrees [/size]
:Wh,i5q&U rq)A Some practitioners have degrees in application domains, bringing important domain knowledge and experience to projects. In MIS, some practitioners have business degrees. In embedded systems, some practitioners have electrical or computer engineering degrees, because embedded software often requires a detailed understanding of hardware. In medical software, some practitioners have medical informatics, general medical, or biology degrees. w\'W:W7N1N)zu{
[size=3]Other degrees [/size]
M0A].@:ZxN Some practitioners have mathematics, science, engineering, or other technical degrees. Some have philosophy, or other non-technical degrees. And, some have no degrees. Note that Barry Boehm earned degrees in mathematics and Edsger Dijkstra earned degrees in physics.
NUv0P#R UD%G2hc [edit]
0Bnr*iw)J1l [size=3]Graduate[/size]
JSq)jV{8k9Z4Q Graduate computer science degrees have been available from hundreds of universities for several decades.F7G,ag!WR2T
$_FT svfa x0h `?.V
Graduate software engineering degrees have been available from dozens of universities for a decade or so.tC K o ^+[%\

6q:h7|-R1{(I$Q+s T Pk [edit]*Tu9FV*P$~l&M
[size=3]Undergraduate[/size]-q8e+lw&I%_+~ P
Undergraduate computer science degrees are available from most universities. u;k/|5?m"pl7U+?0T|

`/]{8I*r In 1996, Rochester Institute of Technology established the first BSSE degree program in the United States but was beaten to ABET accreditation by Milwaukee School of Engineering. Both programs received ABET accreditation in 2003. Since then, software engineering undergraduate degrees have been established at many universities. A standard international curriculum for undergraduate software engineering degrees was recently defined by the CCSE.
`0CS6~ Ot Olo2u6mQbnr
[edit]
~,}"?,? g1Ahf-] [size=3]Secondary[/size]
@ ];FS:[7XcH ]3a{ ~D6^ Programming and coding are being taught to students at an increasingly earlier stage in secondary schools. However, software engineering is not always included in the curriculum. Many have the impression that students are adequately capable of managing projects. Development techniques beyond learning a programming syntax is required.*v2O8I9NN]

+x7A-h y _{ [edit]
/ge-v4ZRNp [size=3]Employment[/size]
,|5e?9`r]R-r See also software engineering demographics.
"JgP(j C5`nz{n(Om e$do,xu
[edit] }NdeCk8U
[size=3]Roles in industry[/size]
s4x'w8V(si ^%f#k Some organizations have specialists to perform each of these tasks. Other organizations required software engineers to do many or all of them. In large projects, people may specialize in only one role. In small projects, people may fill several or all roles at the same time.
E8D9j:N1H!c
4iQ*q%V"cN(F3r9j${ Specializations include: in industry (analysts, architects, developers, testers, technical support, managers) and in academia (educators, researchers).8NjeA,h%Nt#X"w

-[*`Ic:vNd)D There is considerable debate over the future employment prospects for Software Engineers and other IT Professionals. For example, an online futures market called the Future of IT Jobs in America attempts to answer whether there will be more IT jobs, including software engineers, in 2012 than there were in 2002.'^@j6b%n%Y[

L ZL*f[:mwl [edit]
3B(@8H-{KY_%w(z [size=3]Employers[/size]/nbO \Q1T
Most software engineers work as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as free agents.
9c)K6O)Js w9} khd
[edit],PW%M%`;_@Y;f D
[size=3]Certification[/size]/Jgx NRki,v
Certification is a contentious issue. Some see it as a tool to improve professional practice. Others point out that very few traditional engineers bother with any form of certification.
M7h4o&P,JK
o CDS:LYkd"B8y The most successful certification programs are oriented toward specific technologies, and are managed by the vendors of these technologies. These certification programs are tailored to the institutions that would employ people who use these technologies.
i Ub EJ S W4zd hCf.Y+q;f"{
General certification of software practitioners has struggled. The ACM had a professional certification program in the early 1980s, which was discontinued due to lack of interest. Today, the IEEE is certifying software professionals, but only about 500 people have passed the exam by March 2005.
.p YgS!F Cd)Q&v l qL;Hjz [NB]Q
See Certification (software engineering)
!o'B&hj'\&QR_W[
A(H9y-V F"mu%G I [edit]
FI0D)lC9nGSuA [size=3]Process and methodology[/size]
&R(g ?w'_tp7@0{C See also Software development process.D/W/T@]+a:F
.sZFoG{
[edit]
+K[y2EV#miC [size=3]Comparing related fields[/size]0r.Q*t7|{}Y y#`
Many fields are closely related to software engineering; here are some key similarities and distinctions. Comparing SE with other fields helps explain what SE is and helps define what SE might or should become. There is considerable debate over which fields SE most resembles (or should most resemble). These complex and inexact comparisons explain why some see software engineering as its own field.
_H |6@g R0J
T!d(or#v5t)n A)~!o [edit]
+~}j&j#UhQh9Y*E [size=3]What is the nature of SE?[/size]
Noif+L9T Software engineering resembles many different fields in many different ways. The following paragraphs make some simple comparisons.(L;rb;_,R `o

P_H/hT%G [size=3]Mathematics [/size]#\v#v-S| O xz H ]2{
Programs have many mathematical properties. For example the correctness and complexity of many algorithms are mathematical concepts that can be rigorously proven. Programs are finite, so in principle, developers could know many things about a program in a rigorous mathematical way. The use of mathematics within software engineering is often called formal methods. However, computability theory shows that not everything useful about a program can be proven. Mathematics works best for small pieces of code and has difficulty scaling up. Edsger Dijkstra has argued that software engineering is a branch of mathematics. ka B,}]9k"l)z)g3D
[size=3]Science [/size]
l1}L|4x@ Programs have many scientific properties that can be measured. For example, the performance and scalability of programs under various workloads can be measured. The effectiveness of caches, bigger processors, faster networks, newer databases are scientific issues. Mathematical equations can sometimes be deduced from the measurements. Scientific approaches work best for system-wide analysis, but often are meaningless when comparing different small fragments of code. e%w!vs/VDH(TE
[size=3]Engineering [/size]
+g?!aEP Software Engineering is considered by many to be an engineering discipline because there are pragmatic approaches and expected characteristics of engineers. Proper analysis, documentation, and commented code are signs of an engineer. David Parnas has argued that software engineering is engineering. 3wTZ"@ B4W
[size=3]Manufacturing [/size]
kz[(A(_'af3@ gs_0d5` Programs are built in as a sequence of steps. By properly defining and carrying out those steps, much like a manufacturing assembly line, advocates hope to improve the productivity of developers and the quality of final programs. This approach inspires the many different processes and methodologies. NI/jk b!S#{8y Z-g'W
Project management
?:r g_[8UEj,r2] Commercial (and many non-commercial) software projects require management. There are budgets and schedules to set. People to hire and lead. Resources (office space, computers) to acquire. All of this fits more appropriately within the purview of management.
w!N.f`GU [size=3]Art [/size]
*f)vc IE!^U'a0kV4wm Programs contain many artistic elements, akin to writing or painting. User interfaces should be aesthetically pleasing to users. Code should be aesthetically pleasing to programmers. Many goals of good design are NP-complete or worse (such as minimizing the number of lines of code, minimizing number of variables, etc.), meaning they are not decided objectively by either man or computer, so they must be decided by one's own sense of aesthetics. Even the decision of whether a variable name or class name is clear and simple is an artistic question. Donald Knuth famously argued that programming is an art. &JWUbSf9{2GH
[size=3]Performance [/size]
T1g"ru8Fq_6}SU The act of writing software requires that developers summon the energy to find the answers they need while they are at the keyboard. Creating software is a performance that resembles what athletes do on the field, and actors and musicians do on stage. Some argue that SEs need inspiration to spark the creation of code. Sometimes a creative spark is needed to create the architecture or develop a piece of code. Others argue that discipline is the key attribute. Pair programming emphasizes this point of view. Both Kent Beck and Watts Humphrey have argued this emphasis.
4jVYf1?@ v)[ s [edit]~@9MFFa
[size=3]Branch of which field?[/size]par A"sB,}L
Is SE (or should SE be) a branch of programming, a branch of computer science, a branch of traditional engineering, or a field that stands on its own? There is considerable debate over this. This has important implications for professionalism, licensing, and ethics. Licensing is a polarizing issue: some fiercely advocate it while others staunchly oppose it.w}|@v s
CFS J5iP6O4Ab!d
[size=3]Branch of programming [/size]bWK#w-`(A
Programming emphasizes writing code, independent of projects and customers. Software engineering emphasizes writing code in the context of projects and customers by making plans and delivering applications. As a branch of programming, SE would probably have no significant licensing or professionalism issues. ;Z)DB?!C
[size=3]Branch of computer science [/size]vF9DC6H[LT
Many believe that software engineering is a part of computer science, because of their close historical connections and their relationship to mathematics. They advocate keeping SE a part of computer science. Both computer science and software engineering care about programs. Computer science emphasizes the theoretical, eternal truths while software engineering emphasizes practical, everyday usefulness. Some argue that computer science is to software engineering as physics and chemistry are to traditional engineering. As a branch of computer science, SE would probably have few licensing or professionalism concerns.
/X8m&uM a?8be [size=3]Branch of engineering [/size]
e!gjy*MXu&l Others advocate making SE a part of traditional engineering. This is especially true for people who want to emulate other elements of engineering, such as licensing. Both engineering and software engineering share many project management problems and solutions. But, they apply different technologies, they use different kinds of processes, and are driven by different economics. As a branch of engineering, SE would probably adopt the engineering model of licensing and professionalism.
.M$u7ev9x'?5_ [size=3]Freestanding field [/size]3l2@$eN3rT
Recently, software engineering has been finding its own identity and emerging as an important freestanding field. Practitioners are slowly realizing that they form a huge community in their own right. Software engineering may need to create a form of regulation/licensing appropriate to its own circumstances. It is arguable that licensing (in the United States) is inappropriate because the creation of software represents a form of writing, and requiring people to be licensed in order to write computer programs may be a violation of the First Amendment. Requiring software engineers to be licensed would make persons who create software without a license into criminals, even if they give their software away, same as practicing medicine or law without a license, even for free, is a criminal offense. It could also be argued the requirement of licensing of programmers could be "prostituted" into an orthodoxy where those who create software in ways or using methods which are not approved by the licensing authorities may be subject to sanctions up to and including loss of license. Thus the licensing authorities could conceivably hold people to whatever "flavor of the month" of software engineering standards are considered a good idea at that time, under threat of loss of livelihood.
&OMm4H%A The U.S. Bureau of Labor Statistics treats Computer software engineers as a freestanding field. The general category of "engineers" includes computer hardware engineers, but not computer software engineers
?e3T;d K;G V
s+YIU8D#O:o See also Comparing software engineering and related fields.
+o"R%V`#ap8q5@
0pby8c5Sr}/ZkJ [edit]
O'`$C NhyT [size=3]History[/size]N;RB#?H*r
Software engineering has a long evolving history. Both the tools that are used and the applications that are written have evolved over time. It seems likely that software engineering will continue evolving for many decades to come.6m}$]-SZ
R.q _%l+\c#b4a%o4~v?
See also History of software engineering.
i v C$XSk,o{ "soPlO/g jD8z
[edit]
l(sF3J%y.\8nG [size=3]60 year time line[/size]
%f;c#W;IRI 1940s: First computer users wrote machine code by hand. }wt0af#{'L4c.C
1950s: Early tools, such as macro assemblers and interpreters were created and widely used to improve productivity and quality. First generation optimizing compilers. 3\/K Ad+eB.DUp
1960s: Second generation tools like optimizing compilers and inspections were being used to improve productivity and quality. The concept of software engineering was widely discussed. First really big (1000 programmer) projects. Commercial mainframes and custom software for big business.
-[#Z1eXE8[Z'N 1970s: Collaborative software tools, such as UNIX, code repositories, make, and so on. Minicomputers and the rise of small business software. @h2wn$~,l4`9~
1980s: Personal computers and workstations and an emphasis on process like the CMM. The rise of consumer software.
a8c(_8C*Vo 1990s: Object-oriented programming and agile processes like Extreme programming gain mainstream acceptance. !?#?PY$v2XvqX2i.`
1990s: The WWW and hand-held computers make software even more widely available. Vc$b e8t)]4jn%Q
2000s: Managed and interpreted platforms such as .Net, PHP, and Java make writing software easier than ever before. xgT7@ y2i
[edit]4opI2m+t_,o4g
[size=3]Future directions for software engineering[/size]
*U[GA"yi d d Aspect-oriented programming and agile methods are important emerging SE technologies and practices. The 2005 ICSE had tracks on both of these topics.*c5m IHC8TRu"A

;M#Qwrm+S n_l8Z [size=3]Aspects [/size]
$Es ~%Q1wn$U Aspects help programmers deal with ilities by providing tools to add or remove boilerplate code from many areas in the source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. Researchers are currently working to understand how to use aspects to design general-purpose code. Related concepts include generative programming and templates. 1D&j\M&V#I\1Vrf
[size=3]Agile [/size]
/@D3@5H \#PrEB:H$F Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets. The heavy, document-driven processes (like TickIT, CMM and ISO 9000) are fading in importance. Some people believe that companies and agencies export many of the jobs that can be guided by heavy-weight processes. Related concepts include extreme programming and lean software development. #q8Q wyK
The Future of Software Engineering conference (FOSE), held at ICSE 2000, documented the state of the art of SE in 2000 and listed many problems to be solved over the next decade. The Feyerabend project attempts to discover the future of software engineering by seeking and publishing innovative ideas.yd I9F Fq ZHj
E!M3Y^#Bo
[edit] Td li_MQ-Q~!J!n
[size=3]Conferences, organizations and publications[/size]6H9UNY1?,nK1b
[edit]
2d OwrC Conferences
+F9q$no4P-E h;T'K Several academic conferences devoted to software engineering are held every year. There are also many other academic conferences every year devoted to special topics within SE, such as programming languages, requirements, testing, and so on.jj0y7te

,g FZ*BhY [size=3]ICSE[/size]
q pa/lPZlv!Bh The biggest and oldest conference devoted to software engineering is the International Conference on Software Engineering. This conference meets every year to discuss improvements in research, education, and practice.
&E E"cub+QKD [size=3]ESEC [/size]
}$X,g yt.R0O&Q7~`3e)v The European Software Engineering Conference.
N{*~/i,`L [size=3]FSE [/size]
fW"N4gX)uK S The Foundations of Software Engineering conference is held every year, alternating between Europe and North America. It emphasizes theoretical and foundational issues. ? |\4i"`(`
[size=3]CUSEC [/size]
%Q8AC?z8]J d Conferences dedicated to inform undergraduate students like the annual Canadian University Software Engineering Conference are also very promising for the future generation. It is completely organized by undergraduate students and lets different Canadian universities interested in Software Engineering host the conference each year. Past guests include Kent Beck, Joel Spolsky, Philippe Kruchten, Hal Helms, Craig Larman, as well as university professors and students.
.f,f{7S-x}4F'Rw [edit]
LQ`W/T j o [size=3]Organizations[/size];LoQ1yV?fs1n9G;d
Association for Computing Machinery (ACM) )v9~/FN#~pl4x
British Computer Society (BCS)
qw @/l1}9z IEEE Computer Society +\ D+fB(dy,G!s
RUSSOFT Association
av/FPlYi;i*NX&d Software Engineering Institute (SEI)
vi&@.g7c Society of Software Engineers
c Wd5k vkW [edit]
Ushj&hIAw [size=3]Publications[/size]
._#yk*]Y;H Important publications in software engineering !?R@yCf(E},F
[edit]5T?P,xEX$r
[size=3]External Links[/size]*q|qMg B6|
Belief that title "engineering" is inappropriate
;E#M%FQo5S/u0Y Quotation from IEEE Std 610-1990 -A!@Dj['e`/|
Is software engineering actually engineering?: The "yes" point of view
AV{&A Mx,Er Top Ten Myths about Software Engineering #k*M'S&m9r$t9s v.]
[edit]:U L~bZssR `
[size=3]Quotes[/size]
X"C6DZ*Zd1@k The whole trouble comes from the fact that there is so much tinkering with software. It is not made in a clean fabrication process, which it should be. What we need, is software engineering. ?F.L. Bauer, 1968 5N \2u\8H9e
[...] software engineering has accepted as its charter "How to program if you cannot." ?Edsger Dijkstra, The Cruelty of Really Teaching Computer Science ~4{)h-Dy'D J8No*@
The first step toward the management of disease was replacement of demon theories and humours theories by the germ theory. That very step, the beginning of hope, in itself dashed all hopes of magical solutions. It told workers that progress would be made stepwise, at great effort, and that a persistent, unremitting care would have to be paid to a discipline of cleanliness. So it is with software engineering today. ?Fred Brooks, No Silver Bullet
H|+EWH&`V{r7} [SE advocates] have climbed a social ladder for a few decades and are now fighting against a tide of open source software that seems to be bringing bazaar anarchy and taking the well-deserved control out of their hands. Part of this is their utopia of "software engineering" by some magic cathedral approach which has never worked and whose failure the authors of these utopias tend to blame on the lack of control that copyright offers them over their projects. The strange thing here is that they have had the chance to put all these things into practice in their university haven. But, strangely enough, the more successful university projects are carried out in a bazaar-like open-source manner. ?Hartmut Pilch
ls+{ h#in Retrieved from "http://en.wikipedia.org/wiki/Software_engineering"
8ds7k,g:T3J%W
1]nKca!?w [[i] ±¾Ìû×îºóÓÉ godspeed@UK ÓÚ 2005-10-10 19:43 ±à¼­ [/i]]

godspeed@UK ·¢±íÓÚ 2005-10-10 19:17

Computer science

[size=6]Computer science[/size]
f8fj}/^b [url]http://en.wikipedia.org/wiki/Computer_science[/url]2GMb&W^e8^!Y
From Wikipedia, the free encyclopedia.
1T%y1a7K*H L3W"e-\8e0\5^
Computer science (abbreviated CS or compsci) encompasses a variety of topics that relates to computation, like abstract analysis of algorithms, formal grammars, and subjects such as programming languages, program design, software, computer hardware, artificial intelligence, and numerical analysis.
x Fl0Y0zdB CeX{)N2P2x2D)x,G
Computer scientists study what programs can and cannot do (see computability), how programs can efficiently perform specific tasks (see algorithms and complexity), how programs should store and retrieve specific kinds of information (see data structures and databases), how programs might behave intelligently (see artificial intelligence), and how programs and people should communicate with each other (see human-computer interaction and user interfaces).
G Gc7[bx`T/a$F
W3i*YF8kP4tY t Most research in computer science has focused on von Neumann computers or Turing machines (computation models that perform one small, deterministic step at a time). These models resemble, at a basic level, most real computers in use today. Computer scientists also study other models of computation, which includes parallel machines and theoretical models such as probabilistic, oracle, and quantum computers.
2o@z1p1z H;E!O
%AeY d+U"Lj Edsger Dijkstra said:
?9[2zA(V q9?? "D b-BSAC l
Computer science is no more about computers than astronomy is about telescopes.#u4EeQ a(hEG

4z6@ r6AS6y%` The renowned physicist Richard Feynman said:
VXS8^d P\q6r-|-e 6{H*H\ ]9t8JjA+{
Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate than on the physicist's: younger it may be, but it has had a far more intense upbringing!
z7r!n#N,DT
3J&G:W%l4R*Gq(mNuf Computer science has roots in electrical engineering, logic, mathematics, and linguistics. In the last third of the 20th century computer science emerged as a distinct discipline and developed its own methods and terminology. Originally, CS was taught as part of mathematics or engineering departments, for instance at the University of Cambridge in England and at the Gdansk University of Technology in Poland, respectively. Cambridge claims to have the world's oldest taught qualification in computing. The first computer science department in the United States was founded at Purdue University in 1962, while the first college entirely devoted to computer science was founded at Northeastern University in 1982. Most universities today have specific departments devoted to computer science, while some conjoin it with engineering, with applied mathematics, or other disciplines.
P#`8Xa_[5~O-ju S&x}*R x#wG
Contents [hide]
[Y7NLrx 1 Related fields pt`'U1h8J
2 The name of the field {:Y;v~@5}d @
3 Major fields of importance for computer science o9u%{9\6]P$bF
3.1 Mathematical foundations 9`+io%S+Fc f4g
3.2 Theoretical computer science
Dgej,c?b 3.3 Hardware s\inG Fx.RG]
3.4 Computer systems organization ({+X0s/p+ei
3.5 Software
@FI A]u%[MR 3.6 Data and information systems
]#LtuU3rX a 3.7 Computing methodologies
fA6]7j)Ebmm&L 3.8 Computer applications ? c$\R&b,s~ z
3.9 Computing milieux Tl*B0qK(o!v9a:UZ
4 History ;K~.gr%W*t j
5 Prominent pioneers in computer science |-F s B[ Vm
6 See also
k0Di | {&D$A/s r 7 External links
#i5~n9R"@r
P {,i6K+a$jF9d
k.\6]X8G$d9h ]`)X7C.k(f@(v
[edit];`x @,{S
Related fieldsu5\_^zxX&v*un
Computer science is closely related to a number of fields. These fields overlap considerably, though important differences exist:
o-T? QO-f 6jq7CJ\2OO
Artificial intelligence (AI) is the implementation and study of systems that exhibit (either behaviourally or seemingly) an autonomous intelligence or behaviour of their own, sometimes inspired by the characteristics of living beings. Computer science is closely tied with AI, as software and computers are primary tools for the development and progression of artificial intelligence.
C.E8ZRoJ+l Bioinformatics Bioinformatics or computational biology is the use of techniques from applied mathematics, informatics, statistics, and computer science to solve biological problems.
V(zV3h/y@6?NH:a~ Computer engineering is the analysis, design, and construction of computer systems (including computer hardware, software, and computer networks).
9{8O!AryA@ Computer graphics is the field of visual computing, where one uses computers both to generate visual images synthetically and to integrate or alter visual and spatial information sampled from the real world. 'bN6K"?wB
Computer programming is the act of writing program code.
J\ zS#|W F6v Computing is an overarching term for all of these related fields with CS. ]W Z3F7N_ a
Information science or Informatics is the study of data and information, which includes how to create, interpret, analyze, store, retrieve, transfer, and manage it. Information science started as the scientific foundation for communication and databases. It also concerns about the ways people generate, use and find information (see cognitive science). *Y\&@qV L;m8c/[ \ N|
Information security is the analysis and implementation of information system security, like cryptography.
xk4_:ni_X Information retrieval (IR) is the art and science of searching for information in documents, searching for documents themselves, searching for metadata which describes documents, or searching within databases, whether relational stand alone databases or hypertext networked databases such as the Internet or intranets, for text, sound, images or data.
p;}4x-} psc3['Rt+S.Y Information systems (IS) is the application of computing to support the operations of an organization: operating, installing, and maintaining the computers, software, and data. X3|?]2Wq B IM(`
Information technology (IT) is an overarching term for all of these related fields with CS.
Q(`U:r7~ Lexicography focus on the study of lexicographic reference works and include the study of electronic and Internet-based dictionaries. S9c"C+E$gG8f
Linguistics is the study of languages; it converges with computer science in such areas as programming language design and natural language processing. `$z@ E2{a:Kt
Logic is a formal system of reasoning, and studies principles that lay at the basis of computing machines, whether it be the hardware (digital logic) or software (verification, AI etc.) levels. vR7v~0d6OZ]E
Management information systems (MIS) is a subfield of information systems, that emphasizes financial and personnel management. #s^};thw5z!T
Mathematics shares many techniques and topics with computer science, but is more general. Theoretical computer science is the mathematics of computing.
\Kthc Software engineering emphasizes analysis, design, construction, and testing of useful software applications. Software engineering includes development methodologies (such as the waterfall model and extreme programming) and project management. x$w!N qPkL
[edit]
]!|)~%D(Z"FE#q The name of the field
^1x!c,uAb The name computer science immediately gives the impression that the field is the study of computers, the everyday machines that run programs and perform computations. Nonetheless, the field (as noted above) is both wider and more abstract than this name would suggest. Alternate names such as computation science have been proposed, but the traditional name remains the most common. J7f(Z7iH [ ?f|
q;L@5pv9nC)?B
Danish scientist Peter Naur thus suggested the term datalogy, to reflect the fact that the scientific discipline revolves around data and data treatment, while not necessarily involving computers. The first scientific institution applying the datalogy term was DIKU, the Department of Datalogy at the University of Copenhagen, founded in 1969, with Peter Naur being the first professor in datalogy. The term is used mainly in the Nordic countries. u0g^;LeHF/J5Q`
;CW { S9tZ
In French, the discipline is named informatique, in German Informatik, in Spanish informática, in Dutch and Italian informatica, in Polish informatyka, in Russian информатика and in Greek Πληροφορική. However, informatics in English is not directly synonymous with computer science; it is actually more equivalent with information science.
,D,WD3f@r
-S7y_*L&N [edit]i|;Uxch
Major fields of importance for computer science^+p5dY]K"R3K7^6M8D
[edit]
Zb D*K9ed7b]a Mathematical foundations:[3i&Pf0e$F+eRW+H2_ @
Boolean algebra
&mB]7C!bH ZF Discrete mathematics
qo'y%~#BHG*q+V H Graph theory :n,AX:N\f$m"kO
Mathematical logic
D3]7VZ6L,?K:`\1u Probability and Statistics a_V+YC?[ M mr
Information theory
-T,WI`Gy0f-F2^ Domain theory af(N8L7QoZ
Category theory
l0a-z1s'q5l Set theory 5Yiu(am WO6K
[edit]-P*qN!^j]kJ,Q8V
Theoretical computer science
z.~%Ex6Z*~ Algorithmic information theory /if U b1I
Computability theory |Kc [E^&bU b0c
Cryptography +sA8Sn/Vj
Formal semantics of programming languages
v e"m4q oP Theory of computation (or theoretical computer science)
G["`:]#Q ?C+DS Analysis of algorithms and problem complexity
I f L*sy*g!QLq{ Logics and meanings of programs Ey5OV ~
Mathematical logic and Formal languages
-o sT z F(w Type theory
}M~!v K Ek.Yp Quantum computing +j'^ZVK v res
Quantum information theory Y/FHPz+P%r:j xb
[edit]
QE?-g$D3z"e Hardwareor]p(no;H3lFk
(see also electrical engineering and computer engineering)
jAgRL0H0r!W (|#w6k\/m YQ
Control structures and Microprogramming ,Mi8}MVz|j9g
Arithmetic and Logic structures :R/[3Tl@LV-M-\EE
Memory structures &@#Nod'f X\1~9NE
Input/output and Data communications
5[(j7r&hY}q5^7u+u%A Logic Design $~|p,P3h.d#wp-S$D/K
Integrated circuits ~-a*y"i aamPf
VLSI design
9\h@G)MC Performance and reliability
!^ V.r!^-](t/gh$? [edit]
*~JY ]Vlg2A4\ Computer systems organization
o6|D6w2ywd (see also electrical engineering and computer engineering)
"M%? F~e)Y d5@uR znhH
Computer architecture
Q$`7H(QRY~ Computer networks ^k*\t,s ]1C
Distributed computing
gW*R6Y^K Performance of systems
@a9L&UD}#aZqqT Computer system implementation
6tYR6T,e/m D [edit]6rA']K WL$ij)L?D
Software
!u3k0^*M2C'CN/H Computer program and Computer programming &yec't |,h-h.C
Concurrent Programming
v$EU%v)YeFK0s Parallel Programming
}7bwt%^l Program specification
dOU mEmw Program verification |1Q'i/ivU |
Programming techniques
9r t qJO Software engineering M!uRp$qR/B?
Configuration management and Software Configuration Management (SCM) (j/jiroX
Design patterns
:L:zr0Cmvc$b)?-T(d Formal methods
1T@Ol8{'i5K3^C2i Object orientation ;vJVk'c"_&?
Aspect orientation 5VZ oM3`X_#Y
Documentation
q4OKL7V Optimization ZE&u uW
Software metrics 6\3SZ*cZj
Structured programming
_ mHx.j` Programming languages xR@o(I5V
Imperative programming Languages such as C ;JYE j$U c
Functional programming Languages such as LISP
pQ5F+R5IV+m Logic programming Languages such as Prolog Qz d,w^
Operating Systems eG4irUt0Nb
Compilers
*A OB9CnUv4Y \ Lexical analysis
/s!A1K `"W(@/b'L Parsing F^:bK*o|6}3?
Compiler optimization
(d k{-\8~1P? [edit]
W&_4n*UY {Z Data and information systems
@W!n;n0P9X_ Data structures
F%x;R%?#SW#AV Data storage representations )~K$q9A4W3KFN
Data encryption N1~[!~6AS/f?/y-Q3?
Data compression
~(e d o#~e P Data recovery
yU@G'~A M b Coding and Information theory -qjj|6ur"TD#qF
Files
.`)W'sl'os f(K File formats 4YV G&gt
Information systems
(~tBb,B V6XP Databases
3O/n/ZZ5G/]v m Information Storage and retrieval w/? G|c
Information Interfaces and Presentation o2B;H ?0amN0o
[edit]
4H:wK |2g*gJ y Computing methodologies^5Kf:Q(i.S'B q^
Symbolic and Algebraic manipulation O)[|TfB~ M([6^
Artificial intelligence
9oD t*La ZB{ Computer graphics }!~;]t0lA3M%|{X
Image processing and computer vision
N'^9K{tsa Q,H0V2G Pattern recognition
srj'DI#^ae Speech recognition .N3`D;u \9y
Simulation and Modeling ?"i'f B Tf
Document and text processing
1O;o0F _)I@f Digital signal processing
3I3vKm%J [edit]
KA8~ a,v Computer applications)wW4X)n"Z\
Administrative data processing
5U&q6o!P6Z+BJ Enterprise resource planning
ZQ&x^ x Customer relationship management
U I OT} Human Resource Management Systems
"Kj.LBz:D.PL Mathematical software
:Q#UC { H|8uW3t bi-\ Numerical analysis
1Q a GZ.\`7k(_g? Automated theorem proving
I2CT6~Yb$Y\I Computer algebra systems
KV5oI6`-\5x Physical science and Engineering C)E$~:{O\4U-l Ao
Computational chemistry
"P:G5m B,y(E ` Computational physics z!Za.~] J R t
Life and medical sciences mHnugh(tAv
Bioinformatics N*B'o%l&P'Q{,G!['BPZ
Computational biology
Pw-p;M"T5@ Medical informatics
2Vq3?!g{!sw5L%K,f Social and behavioral sciences LwEK yPWI
Computer-aided engineering ko;B,Y.|"?*f
Robotics cW UH{Ec\@
Human-computer interaction
0u[_1[JCr Speech synthesis
Y O(uHb`4Z$o Usability engineering
!@:N$o]!tlH.wN i Telecommunications
P+f6fmo8e @Cw Queueing theory _R'mf|O;TA
[edit]$_ t5u,c m
Computing milieux q:c4VS$J,~\
Computer industry
c)~\Qj4N History of computing hardware
ML]x }0Af7{8@:[ t Unsolved problems in computer science
Yw9bSELf Computers and education
g(\*`%]V] Computers and society 3vy(g@:H^z
Computer supported cooperative work 8g2y:P1?ANVD
Legal aspects of computing m5I)}NE*~
Free software and Open Source
.g;?*q5UE8Gs/U Management of computing and Information systems e&dw` ~+K2@
Personal computing
ga2k,U-AK:n Computer and information security ru"f;So1A2q!V
[edit]
5W.Mlc@fK History$lk nvCCexY
History of computing
3Q1GG/W+b T6T Origins of computer terms &\ M2s*u] ^2\"m|
Early programming projects
|)e%t v |{w0?KZ Computer science departments aD]Bp-S1K`q%N
Timeline of algorithms
'Y1C8^~ Q$v5w A [edit]? c7[LL
Prominent pioneers in computer science5}(W ?6CF"`6I
Person Achievement
XXWji0B R John Vincent Atanasoff Built an electronic digital computer: the ABC Computer. Unlike ENIAC, the first all-electronic computer designed to be Turing-complete, the ABC Computer was not programmable.
&A*VY7gMw Charles Babbage Designed and built a prototype for a mechanical calculator and designed the more powerful Analytical Engine.
p;edg K#^Fz-iW John Backus Invented FORTRAN (Formula Translation), the first practical high-level programming language, and he formulated the Backus-Naur form that described the formal language syntax. z Yg jJN
George Boole Formalized boolean algebra, the basis for digital logic and computer science.
*C#[|6D.\un9Q(|T Alonzo Church Founded contributions to theoretical computer science, specifically for the development of the lambda calculus and the discovery of the undecidable problem within it.
(U`ady4T9rp,p)F:T James W. Cooley and John W. Tukey The Fast Fourier Transform and its impact on scientific research. ![P%Z-AZN['x~M
Ole-Johan Dahl and Kristen Nygaard Invented the proto-object oriented language SIMULA. ? ?R0EX5f
Edsger Dijkstra For algorithms, Goto considered harmful, the semaphore (programming), rigor, and pedagogy. 7GP2s:P ]?'B5Y
Gottlob Frege Whose development of first-order predicate calculus was a crucial precursor requirement to develop computation theory.
|f F1~&\ C.A.R. Hoare For the development of the formal language Communicating Sequential Processes (CSP) and Quicksort.
-J2j){3eQ Kurt Gödel For his 1931 proof that demonstrated that Peano axiomatized arithmetic could not be both logically consistent and complete in first-order predicate calculus. Church, Kleene, and Turing developed the foundations of computation theory based on corollaries to Gödel's work in 1931. &b9n*M\.pp
Admiral Grace Murray Hopper Pioneered work on the necessity for high-level programming languages, which she termed automatic programming, and wrote the A-O compiler, which heavily influenced the COBOL language.
Cy*WV"c;KVz4T~ Kenneth Iverson Invented the APL and for his contribution to interactive computing.
TGQR:u Jacek Karpinski Developed the first differential analyzer that used transistors, and he developed one of the first machine learning algorithms for character and image recognition. Also the inventor of one of the first minicomputers, the K-202. Ko r#b Cq`
Stephen Cole Kleene Pioneered work with Alonzo Church in Lambda Calculus that first laid down the foundations of computation theory. ;ykHfY0X Y
Donald Knuth For The Art of Computer Programming and TeX. !If_w)w6Pn
Gottfried Leibniz Whose huge advances in symbolic logic, such as the Calculus ratiocinator, were heavily influential on Gottlob Frege, who development of first-order predicate calculus was crucial for the theoretical foundations of computer science.
@$Vf*?-Qm\$R Ramon Llull For his multiple symbolic representations machines, his "Ars Combinatoria", and his pioneered notions of symbolic representation and manipulation to produce knowledge. He was a huge influence on Leibniz.
4{7VvB`#\){*C{Up Ada Lovelace Began the study of scientific computation, specifically for her "Sketch of the Analytical Engine", an analysis of Babbage's work and for the namesake for the modern computer language, Ada.
8j5A&{6o[ HN John Mauchly and J. Presper Eckert Designed and built the ENIAC, the first all electronic Turing-complete computer, and the UNIVAC I, the first commercially available computer in the United States. John von Neumann of the Institute for Advanced Study admitted to being greatly influenced by their work when he did pioneering work in computer architecture. +QE s7X*h"OM
John McCarthy Invented LISP, a functional programming language. { d8}1W8Q%h
John von Neumann Devised the von Neumann architecture upon which most modern computers are based. (Vn H M:|3C4H
Claude E. Shannon Founded information theory. .rj%B~2Sr?d3Tg
Emil L. Post Developed the Post machine as a model of computation, independently of Turing. Known also for developing truth tables, the Post correspondence problem used in recursion theory as well as proving what is knows as Post's theorem.
y/cM(iJ^v Herbert Simon A psychologist and economist who pioneered artificial intelligence.
Z ?kjp-K Alan Turing For founding contributions to computer science, for the formulation of the Turing machine computational model, and for the design of the Pilot ACE. DV^'` V9M}
Maurice Wilkes Built the first practical stored program computer (EDSAC) to be completed and for being credited with the ideas of several high-level programming language constructs.
4`!G7b]){W"b0i c Niklaus Wirth Programming language designer, including Pascal, Modula-2 and Oberon. -i9E6g.h,K#x uj%n
Konrad Zuse Built a binary computer, for which he allegedly devised a theoretical high level programming language, Plankalkül.

godspeed@UK ·¢±íÓÚ 2005-10-10 19:19

[size=6]Artificial intelligence[/size]s/|&S.c]0aQ~X
From Wikipedia, the free encyclopedia.!b7M9eZ%|)q_lx
Artificial intelligence (AI) is intelligence exhibited by any manufactured (i.e. artificial) system. Such a system is generally assumed to be a computer, and AI is therefore considered as a branch of computer science.];L\$d*@o8X
*\,g,n%u+M{
See Portal:Artificial intelligence for an index to sub-topic such as AI (computer science), AI in sci-fy, AI history, AI philosophy.5f{O6[u4Vf_;X({
:v)Hs2o3VsP6c3C2I
It has been suggested that this article be split into multiple articles accessible from a disambiguation page. (Discuss) NSfAWQ z,w*x~
9a"^E'XV{ \3?TH
--------------------------------------------------------------------------------x9bB\3|,OC3] u
i/[xS h0s3m
The term is often applied to general purpose computers and also in the field of scientific investigation into the theory and practical application of AI. "AI" the term is often used in works of science fiction to refer to that which exhibits artificial intelligence as well, as in "the AI" referring to a singular discrete or distributed mechanism.B8J8q Ay0hHZ
$Xqb"m+AF,[ a@c7M
Modern AI research is concerned with producing useful machines to automate human tasks requiring intelligent behavior. Examples include: scheduling resources such as military units, answering questions about products for customers, understanding and transcribing speech, and recognizing faces in CCTV cameras. As such, it has become an engineering discipline, focused on providing solutions to practical problems. AI methods were used to schedule units in the first Gulf War, and the costs saved by this efficiency have repaid the US government's entire investment in AI research since the 1950s. AI systems are now in routine use in many businesses, hospitals and military units around the world, as well as being built into many common home computer software applications and video games. (See Raj Reddy's AAAI paper for a comprehensive review of real-world AI systems in deployment today.)~2BvpY^:F jP

.N*Q+m$Z0RC6m AI methods are often employed in cognitive science research, which tries to model subsystems of human cognition. Historically, AI researchers aimed for the loftier goal of so-called strong AI—of simulating complete, human-like intelligence. This goal is epitomised by the fictional strong AI computer HAL 9000 in the film 2001: A Space Odyssey. This goal is unlikely to be met in the near future and is no longer the subject of most serious AI research. The label "AI" has something of a bad name due to the failure of these early expectations, and aggravation by various popular science writers and media personalities such as Professor Kevin Warwick whose work has raised the expectations of AI research far beyond its current capabilities. For this reason, many AI researchers say they work in cognitive science, informatics, statistical inference or information engineering. AI has seen many research paradigms, including symbolic, connectionist and Bayesian approaches. There is still no consensus as to the best way to proceed. Recent research areas include Bayesian networks and artificial life.
,r ]+WyOx r9Qn j4f,y/kH~eX f
Contents [hide]'?$P:fyD0z\ n
1 History
6Ze a4g3z 1.1 Prehistory of AI
i+h1k2d+s/D 1.2 Development of AI theory 'Bh \(k.LKH-\
1.3 Experimental AI research ;{+[6G+W6C;|2|P
2 Modern AI 2sW1r0Y]
3 Micro-World AI
[!YH8H:F0p 4 Languages, Programming Style and Software Culture
[O!c9E4MK4h[cnWM 5 AI research in various countries
;J` UQzlV 5.1 United Kingdom
#Yw2YP Rce 6 AI in Business
5|+z GR_^ 7 Machines displaying some degree of intelligence
.f0{ v%s9{h 8 AI Researchers
;Kq$m7j zs)d 9 Further reading {3h S#u?5Q
9.1 Non-fiction
E+w2E8Vxi6b ]l*K+l 9.2 Sources
KL\+x:z~N8q 10 See also EZz1eKGv C
10.1 Philosophy
9Y:F7mH{Y4o 10.2 Logic E\e5|!r!c q
10.3 Science d2qX vW!r+J:E1^
10.4 Applications q4t{^$f r k
10.5 Uncategorised +X@2B LN
11 External links
'^5G!H$J(BT:Uu 11.1 General !V+s;\Hl `%?*[
11.2 AI related organizations C)A!ma#~9w:] gG%e
1]-fJ F},Eno&P Z6E

:tmlb W
!BuU~? T'q#eR9A O [edit]
a Z/Oj5Mn,fE History9M v8{ n7bK5z
[edit]
*V yJr*P{ Prehistory of AI
)q$| v.q)b3o8x%Pd$}I(W Humans have always speculated about the nature of mind, thought, and language, and searched for discrete representations of their knowledge. Aristotle tried to formalize this speculation by means of syllogistic logic, which remains one of the key strategies of AI. The first is-a hierarchy was created in 260 by Porphyry of Tyros. Classical and medieval grammarians explored more subtle features of language that Aristotle shortchanged, and mathematician Bernard Bolzano made the first modern attempt to formalize semantics in 1837.q3s5K$f'l

joEu]:d Early computer design was driven mainly by the complex mathematics needed to target weapons accurately, with analog feedback devices inspiring an ideal of cybernetics. The expression "artificial intelligence" was introduced as a 'digital' replacement for the analog 'cybernetics'.
LwmaQ[ V2Rkz[b
[edit]
p)L(IDg)A Development of AI theory
L S'VH~"W!GY Much of the (original) focus of artificial intelligence research draws from an experimental approach to psychology, and emphasizes what may be called linguistic intelligence (best exemplified in the Turing test).
g5i;^c r"H 1x0j p5~ vX
Approaches to artificial intelligence that do not focus on linguistic intelligence include robotics and collective intelligence approaches, which focus on active manipulation of an environment, or consensus decision making, and draw from biology and political science when seeking models of how "intelligent" behavior is organized.
LC2\.F0^ ?Iv"l7Z f Y e~&p'ka
AI also draws from animal studies, in particular with insects, which are easier to emulate as robots (see artificial life), as well as animals with more complex cognition, including apes, who resemble humans in many ways but have less developed capacities for planning and cognition. Some researchers argue that animals, which are apparently simpler than humans, ought to be considerably easier to mimic. But satisfactory computational models for animal intelligence are not available.c'?fbVyAC u
"[7FQB3nWt)\
Seminal papers advancing AI include A Logical Calculus of the Ideas Immanent in Nervous Activity (1943), by Warren McCulloch and Walter Pitts, and On Computing Machinery and Intelligence (1950), by Alan Turing, and Man-Computer Symbiosis by J.C.R. Licklider. See cybernetics and Turing test for further discussion.
!ROt R"{5s
%A5jM `e/Owua9N There were also early papers which denied the possibility of machine intelligence on logical or philosophical grounds such as Minds, Machines and Gödel (1961) by John Lucas [1].9\!cG e/e9KeK3T#{
M:]$Q%R!s w
With the development of practical techniques based on AI research, advocates of AI have argued that opponents of AI have repeatedly changed their position on tasks such as computer chess or speech recognition that were previously regarded as "intelligent" in order to deny the accomplishments of AI. Douglas Hofstadter, in Gödel, Escher, Bach, pointed out that this moving of the goalposts effectively defines "intelligence" as "whatever humans can do that machines cannot".
J+N]{q&\
a*\#B\5E John von Neumann (quoted by E.T. Jaynes) anticipated this in 1948 by saying, in response to a comment at a lecture that it was impossible for a machine to think: "You insist that there is something a machine cannot do. If you will tell me precisely what it is that a machine cannot do, then I can always make a machine which will do just that!". Von Neumann was presumably alluding to the Church-Turing thesis which states that any effective procedure can be simulated by a (generalized) computer.k2xYD:Q)k
4w z%b@YFQ$R;E Z
In 1969 McCarthy and Hayes started the discussion about the frame problem with their essay, "Some Philosophical Problems from the Standpoint of Artificial Intelligence".
'Mi'La2Zk
Ev3X;uzw ` [edit]#DH2Q:@j(l
Experimental AI researchh(c@e yF~3Z |
Artificial intelligence began as an experimental field in the 1950s with such pioneers as Allen Newell and Herbert Simon, who founded the first artificial intelligence laboratory at Carnegie Mellon University, and John McCarthy and Marvin Minsky, who founded the MIT AI Lab in 1959. They all attended the aforementioned Dartmouth College summer AI conference in 1956, which was organized by McCarthy, Minsky, Nathan Rochester of IBM and Claude Shannon.S6c;L;R#W(L

9UBy+~,?bs y*p Historically, there are two broad styles of AI research - the "neats" and "scruffies". "Neat", classical or symbolic AI research, in general, involves symbolic manipulation of abstract concepts, and is the methodology used in most expert systems. Parallel to this are the "scruffy", or "connectionist", approaches, of which artificial neural networks are the best-known example, which try to "evolve" intelligence through building systems and then improving them through some automatic process rather than systematically designing something to complete the task. Both approaches appeared very early in AI history. Throughout the 1960s and 1970s scruffy approaches were pushed to the background, but interest was regained in the 1980s when the limitations of the "neat" approaches of the time became clearer. However, it has become clear that contemporary methods using both broad approaches have severe limitations.Q*u [cDaM
QU$Bm8B2Ml*^
Artificial intelligence research was very heavily funded in the 1980s by the Defense Advanced Research Projects Agency in the United States and by the fifth generation computer systems project in Japan. The failure of the work funded at the time to produce immediate results, despite the grandiose promises of some AI practitioners, led to correspondingly large cutbacks in funding by government agencies in the late 1980s, leading to a general downturn in activity in the field known as AI winter. Over the following decade, many AI researchers moved into related areas with more modest goals such as machine learning, robotics, and computer vision, though research in pure AI continued at reduced levels.6cKb:m|\ w ?
!nj[.^b vl-L
[edit]SE-vY$K9p)D
Modern AIn Cke4V(T+b @
Modern AI research focuses on practical engineering tasks. (Supporters of Strong AI may call this approach 'weak AI'.)
"h5w2u,A9pVa2A*K
x%N|o4z r @$[/z'E There are several fields of AI, one of which is natural language. Many weak AI fields have specialised software or programming languages created for them. For example, one of the 'most-human' natural language chatterbots, A.L.I.C.E., uses a programming language AIML that is specific to its program, and the various clones, named Alicebots. Nevertheless, A.L.I.C.E. is still based on pattern matching without any reasoning. This is the same technique Eliza, the first chatterbot, was using back in 1966. Jabberwacky is a little closer to strong AI, since it learns how to converse from the ground up based solely on user interactions. In spite of that, the result is still very poor, and it is reasonable to state that there is actually no general purpose conversational artificial intelligence.
%ul2HcMO A]zx *gxc/T*M+oa#N
When viewed with a moderate dose of cynicism, AI can be viewed as ‘the set of computer science problems without good solutions at this point’. Once a sub-discipline results in useful work, it is carved out of artificial intelligence and given its own name. Examples of this are pattern recognition, image processing, neural networks, natural language processing, robotics and game theory. While the roots of each of these disciplines is firmly established as having been part of artificial intelligence, they are now thought of as somewhat separate.
|'|*z\6d +i!iIcP!\TO
Whilst progress towards the ultimate goal of human-like intelligence has been slow, many spinoffs have come in the process. Notable examples include the languages LISP and Prolog, which were invented for AI research but are now used for non-AI tasks. Hacker culture first sprang from AI laboratories, in particular the MIT AI Lab, home at various times to such luminaries as McCarthy, Minsky, Seymour Papert (who developed Logo there), Terry Winograd (who abandoned AI after developing SHRDLU).
x,g1PU(e\`
:mK9d2`Af Many other useful systems have been built using technologies that at least once were active areas of AI research. Some examples include:
io"u8Ml@']3d '`eSu_tT
Chinook was declared the Man-Machine World Champion in checkers (draughts) in 1994. Fp-m7E\qP+v:y!p
Deep Blue, a chess-playing computer, beat Garry Kasparov in a famous match in 1997. V ^Dm iM
InfoTame, a text analysis search engine developed by the KGB for automatically sorting millions of pages of communications intercepts.
2Sx2y[7Qk@ Fuzzy logic, a technique for reasoning under uncertainty, has been widely used in industrial control systems. awKu'N*|I'Y
Expert systems are being used to some extent industrially. zi#~b*vV/YiG
Machine translation systems such as SYSTRAN are widely used, although results are not yet comparable with human translators.
8q.v9`G'?;d M[^,[ Natural language processing 9~@j[ |D,l/`
Neural networks have been used for a wide variety of tasks, from intrusion detection systems to computer games. d1G\cJ$P)S7K
Optical character recognition systems can translate arbitrary typewritten European script into text.
DcxXF5E u)}hc'J Handwriting recognition is used in millions of personal digital assistants.
1ue _]h{ Speech recognition is commercially available and is widely deployed. ,qkZ _)]
Computer algebra systems, such as Mathematica and Macsyma, are commonplace.
p&u8]}9|u vr#F Computer vision systems are used in many industrial applications ranging from hardware verification to security systems.
sZ z gNh&Qk7HO Program synthesis &g)y+g]#?C4gI5?
Robotics ds;D \ O"s6x b
AI planning methods were used to automatically plan the deployment of US forces during Gulf War I. This task would have cost months of time and millions of dollars to perform manually, and DARPA stated that the money saved on this single application was more than their total expenditure on AI research over the last 30 years.
%D5Y9WD4TFS The vision of artificial intelligence replacing human professional judgment has arisen many times in the history of the field, and today in some specialized areas where "expert systems" are routinely used to augment or to replace professional judgment in some areas of engineering and of medicine. An example of an expert system is Clippy the paperclip in Microsoft Office which tried to predict what advice the user would like. DF#KmdJ2M

aF&Y/U Eal#u [edit]
,z8G.{Q*N/Gv,L K };MH Micro-World AI
"c Mz/z,^ V+\)Y(W O The real world is full of distracting and obscuring detail: generally science progresses by focusing on artificially simple models of reality (in physics, frictionless planes and perfectly rigid bodies, for example). In 1970 Marvin Minsky and Seymour Papert, of the MIT AI Laboratory, proposed that AI research should likewise focus on developing programs capable of intelligent behaviour in artificially simple situations known as micro-worlds. Much research has focused on the so-called blocks world, which consists of coloured blocks of various shapes and sizes arrayed on a flat surface. Micro-World AI;b0un\ s9t1w,I4Go
asC6c/`a|T:Z/t
[edit]
6r5l-c|3k2[B Languages, Programming Style and Software Culture
w0`2|nP8F#y])K9b GOFAI research is often done in Lisp or Prolog. Bayesian work often uses Matlab or Lush Programming Language (a numerical dialect of Lisp). These languages include many specialist probabilistic libraries. Real-life and especially real-time systems are likely to use C++. AI programmers are often academics and emphasise rapid development and prototyping rather than bulletproof software engineering practices. Hence the use of interpreted languages to empower rapid command-line testing and experimentation. AI culture is historically tied to Unix and hacker cultures.
a-Y'C@ P$C)E 6@a5Ek1E{9k;eau
The most basic AI program is a single If-Then statement, such as "If A, then B." If you type an 'A' letter, the computer will show you a 'B' letter. Basically, you are teaching a computer to do a task. You input one thing, and the computer responds with something you told it to do or say. All programs have If-Then logic. A more complex example is if you type in "Hello.", and the computer responds "How are you today?" This response is not the computer's own thought, but rather a line you wrote into the program before. Whenever you type in "Hello.", the computer always responds "How are you today?". It seems as if the computer is alive and thinking to the casual observer, but actually it is an automated response. AI is often a long series of If-Then (or Cause and Effect) statements.
#Q`J;KNL |&J w K?_*u"\)Rf
A randomizer can be added to this. The randomizer creates two or more response paths. For example, if you type "Hello", the computer may respond with "How are you today?" or "Nice weather" or "Would you like to play a game?" Three responses (or 'thens') are now possible instead of one. There is an equal chance that any one of the three responses will show. This is similar to a pull-cord talking doll that can respond with a number of sayings. A computer AI program can have 1,000s of responses to the same input. This makes it less predictable and closer to how a real person would respond, because a living person would respond unpredictably. When 1,000s of input (Ifs) are written in (not just "Hello.") and 1,000s of responses (Thens) written into the AI program, then the computer can talk (or type) with most people, if those people know the If statement input lines to type. H3u'cqbod.z
&Ywi!?l.E$I h
Many games, like chess and strategy games, use action responses instead of typed responses, so that players can play against the computer. Robots with AI brains would use If-Then statements and randomizers to make decisions and speak. However, the input may be a sensed object in front of the robot instead of a "Hello." line, and the response may be to pick up the object instead of a response line.4F5Y5f4f1S;U

!Y2E ho+K+T?G [edit]$XJ(?i\
AI research in various countries-@h*D)o0ps4l
AI research is carried out all over the world, often in national universities and laboratories.r ?q~$t#?'x

,@MgF+Q!_d@!e&{$u [edit]
\/S9?2SFe&lR)v United Kingdom5JbH D&R4F2\"x
In the United Kingdom, the most noted universities for AI research are Edinburgh and Sussex, although AI-related research activities can be found in most universities in the country. Since the publication of the Lighthill report, UK funding for AI has dried up, although research continues under more politically-acceptable headings such as "Informatics", "Information Engineering" and "Inference". Microsoft runs a large AI research group in Cambridge, which works closely with Cambridge University. HP Labs in Bristol, BT in Ipswich, and various government defence agencies also research AI applications.
!W4s(Wqy I3O(L+h&_
1Pq2f']X&b8[1| [edit]
A@(yVqsE&} AI in Business Ha6r%m)U$Ui
According to Haag, Cummings, etc.(2004) there are four common techniques of Artificial Intelligence used in businesses:0_ r5vx}3zT3R {
MdW:|n3p6]
Expert Systems
Ov*u8@Pg5pw(O Neural Networks d4jwy,p^
Genetic Algorithms &P0t5t(H1I"d"yT
Intelligent Agents
h#f[*Eu-cd4x m Expert Systems apply reasoning capabilities to reach a conclusion. An expert system can process large amounts of known information and provide conclusions based on them. @r?4|7hj6q2Z

Lt&R q'y K9T E Neural Networks are AI that are capable of finding and differentiating between patterns. Police Departments use neural networks to identify corruption.g^"P c%qv(w
N@k8DZ/e,W ^
Genetic Algorithms are designed to apply the survival of the fittest process to generate increasingly better solutions to the problem. Investment brokers use Genetic Algorithms to create the best possible combination of investment opportunities for their clients.
/{s(Q)XE G?;jEn oI:b jn/de Mh
An Intelligence Agent is software that assists you, or acts on your behalf, in performing repetitive computer-related tasks. Examples of its uses are data mining programs and monitoring and surveillance agents.1J8Mm{6mhG
|0{ UYL&Q

c-C!~v+x(p(p#\(? Logic programming was sometimes considered a field of artificial intelligence, but this is no longer the case.
O"e0r3VN
0A \'Y mj7Q{0i V? [edit]
)@:DHVL8z Machines displaying some degree of intelligence
2C%b!Ti:_V,U There are many examples of programs displaying some degree of intelligence. Some of these are:
7sqAB8\/HL+y _Z5}qgi
Twenty Questions - A neural-net based game of 20 questions
xm&Z_p8?.`Q`l.`~a The Start Project - a web-based system which answers questions in English. $f ]s QZ
Brainboost - another question-answering system 9C9yV'uG4P
askEd! - a multi-lingual question answering system ;x'X @BN&v
Cyc, a knowledge base with vast collection of facts about the real world and logical reasoning ability.
#M"ji.B0D!uDU Jabberwacky, a learning chatterbot
y ~2JlO"y ALICE, a chatterbot
kF4qs9r!y!a Alan, another chatterbot
,x6\l~u{yS$m@ Albert One, multi-faceted chatterbot
4F6i2[-{F ELIZA, a program which pretends to be a psychotherapist, developed in 1966
!Sy.I Fk PAM (Plan Applier Mechanism) - a story understanding system developed by John Wilensky in 1978.
+};XW,n2C,I SAM (Script applier mechanism) - a story understanding system, developed in 1975.
5d2jP(t/u9i1q D2E-Ny SHRDLU - an early natural language understanding computer program developed in 1968-1970. ?"o;@t(Sb6Cb
Creatures, a computer game with breeding, evolving creatures coded from the genetic level upwards using a sophisticated biochemistry and neural network brains.
Z({ a8NGbh BBC news story on the creator of Creatures latest creation. Steve Grand's Lucy. ~ o+k.d'V-D7t
AARON - artificial intelligence, which creates its own original paintings, developed by Harold Cohen. 5n$_1z+]SHI
Eurisko - a language for solving problems which consists of heuristics, including heuristics for how to use and change its heuristics. Developed in 1978 by Douglas Lenat. u d i+WvZzW%T,kD
X-Ray Vision for Surgeons - a group in MIT which researches medical vision. loKVH_;US!h
Neural networks-based programs for backgammon and go.
4W,~T"LQ*g*l Talk to William Shakespeare - William Shakespeare chatbot
1^1luI.OMTSM Chesperito - A chat/info bot on #windows95 channel on the DALnet IRC network.
eG@2UJ P#u!B Ultra Hal, multimedia chatterbot with learning capabilities. HF3^ J'mA*w qgJ
ALI (Artificial Language Intelligence), chatterbot and chatterbot builder with advance artificial intelligence, easy scripting, and machine learning capabilities. ~pXPL
djuzeppe Online AI-bot and online Editor for its knowledge base.
!R5\z&i/T ~'ij a [edit]
L:?4]m` AI Researchers
.Uj*k5s5o9q@!k} There are many thousands of AI researchers (see Category:Artificial intelligence researchers) around the world at hundreds of research institutions and companies. Among the many who have made significant contributions are:v3\|)F{
0B[ Px3^2A,}3x+MCa_
Alan Turing
&Sbd0R/S;n#[ Boris Katz ;z$v-M[+PeL
Doug Lenat
e7T3H E2x&f0J*G)B_.e Douglas Hofstadter o!A.C*^h3{
Geoffrey Hinton }|:u9f)L+Q?
John McCarthy
z0T5m|5s)a'P_9c*U Karl Sims R-z+^eldd6_
Kevin Warwick
[?(Ekf Igor Aleksander
)z1}-l"z jelm Marvin Minsky
O Qnz#fz9pyo Seymour Papert
qdv7l4G&|S Maggie Boden
Xg.lwd"r n%CQ Mike Brady
,@+H_!\ R+^'e5?lDt Oliver Selfridge HN iO a gd
Raj Reddy EP/_ L6^
Judea Pearl
eB!n'U+y-_5PS1V w Rodney Brooks
v*B0_+Y"q7s Roger Schank b&[-{S'U(p [(f{
Terry Winograd F(_{4i0@Y&y.D
Rolf Pfeifer
uu _Y uY,IV&n James Hendler 3|g2V+N0u
Ali Sohani
Y&x f^H:G,i d0U Sankar K Pal
.n+n+X$L lAX,d [edit]
'_(}*OLn2]$cGD Further reading
|~2^g T9Q,jFw [edit]
#kC fs/{(vB Non-fiction
7SC~/T o?/hgT1b The following are considered seminal works in the field. A longer list is at Important publications in artificial intelligence.
1h'f] F3V)KU
9z-vAn7nQ K5d'Z Artificial Intelligence: A Modern Approach by Stuart J. Russell and Peter Norvig ISBN 0130803022 +XS7Dx#Y,dM.y}
Gödel, Escher, Bach : An Eternal Golden Braid by Douglas R. Hofstadter Aw"Q9sM'J`!G)B
Understanding Understanding: Essays on Cybernetics and Cognition by Heinz von Foerster
m EP5KRv-I2s"{d In the Image of the Brain: Breaking the Barrier Between Human Mind and Intelligent Machines by Jim Jubak
|bsU%vCeP Today's Computers, Intelligent Machines and Our Future by Hans Moravec, Stanford University
1S&f6Q iB.^t Y-I-t$H The Society of Mind by Marvin Minsky, ISBN 0671657135 15 March 1998
m#\q.R NR4I6U1X0`G(s Perceptrons: An Introduction to Computational Geometry by Marvin Minsky and Seymour Papert ISBN 0262631113 28 December 1987
8urbP%B[e i&N The Brain Makers: Genius, Ego and Greed In The Quest For Machines That Think by HP Newquist ISBN 0672304120.
r3{#x \2DO*M4j [edit]&@L)lL"A`
Sources
:] `2{)T7G)hB John McCarthy: Proposal for the Dartmouth Summer Research Project On Artificial Intelligence. [2]
;c A8R&@@D John Searle: Minds, Brains and Programs Behavioral and Brain Sciences 3 (3): 417-457 1980. [[3]]
%C7}Y7r8Z5B u7@0|-OB [edit]s]*j,VSI#\?U
See also @6u[$],lD
List of fictional computers
OW.p s7bi:eZ6_e List of fictional robots and androids
$NJQqZX.m6tL [edit]"r7h1XA"On
PhilosophyK Ei_/g,p
Functionalism
"n-LA_?tV r Searle's Chinese room V&?h s2G%oT'Q
Consciousness
;q1i7i!YPXu [edit] XU)y!T+v o+j
LogicT L+M8c!s\
Semantics Qr0RU`v[ nO!TR
[edit]
ghu&L/Ms Science&Jv-c` K
Cognitive science h.H5x NZ6N
Computer science lB_U {Rfc\
Cybernetics
PB2Oi,f8E(Rye Psychology ^U"s#[7fU
Biosynthetic phylogeny 9vo)v;I-PvT\:k%w
Scientific Community Metaphor
C%ag o*q [edit]m/Ut.xW*j
Applications
z3d)w!W?4r5W Artificial intelligence agent t+r3uI }mJ |?.n
Bio-inspired computing
e-J:_-K9X7~ | Clinical decision support system q6FU\"H,q\(UO'J
Computer game bot L4AnAl OL)?
Game AI
5K4]Eint"sbNx List of Artificial Intelligence projects
z j9Q#[ck-Z [edit]OM$C _+oo
Uncategorised
Zy)Hn6WM} Collective intelligence — The idea that a relatively large number of people co-operating in one process can lead to reliable action, in time for the emergence of smarter-than-human intelligence. 9dt'qKjWc [vj I9I9O
Friendly AI — A model for creating artificial intelligence which is moral and "safe".
-W8A8z!qx s IC'C Game programming AI
7G}\#Adf(L:E-LN K-line (artificial intelligence) f&A1~wP y
Mindpixel — A project to collect simple true / false assertions and collaboratively validate them with the aim of using them as a body of human common sense knowledge that can be utilised by a machine. v V:S"e9r|'d$T
Truth maintenance systems — by Gerald Jay Sussman and Richard Stallman

godspeed@UK ·¢±íÓÚ 2005-10-10 19:19

[size=6]Bioinformatics[/size]
A Pe%@.JKCN From Wikipedia, the free encyclopedia.'W*Lb g#H J1t
Bioinformatics or computational biology is the use of techniques from applied mathematics, informatics, statistics, and computer science to solve biological problems. Research in computational biology often overlaps with systems biology. Major research efforts in the field include sequence alignment, gene finding, genome assembly, protein structure alignment, protein structure prediction, prediction of gene expression and protein-protein interactions, and the modeling of evolution. The terms bioinformatics and computational biology are often used interchangeably, although the latter typically focuses on algorithm development and specific computational methods. A common thread in projects in bioinformatics and computational biology is the use of mathematical tools to extract useful information from noisy data produced by high-throughput biological techniques. (The field of data mining overlaps with computational biology in this regard.) Representative problems in computational biology include the assembly of high-quality DNA sequences from fragmentary "shotgun" DNA sequencing, and the prediction of gene regulation with data from mRNA microarrays or mass spectrometry. vcm+El.R8`KI6s

qO&jA!b{'De;oAn 2uK.c h1nQ'Q3U
Making sense of the huge amounts of DNA data (pictured) produced by gene sequencing projects is just one of the tasks faced by bioinformatics.Contents [hide]
{dJ8TJq1k 1 Major research areas
0h+Qgo8Lv 1.1 Sequence analysis
2aT'wlh1N Jb b 1.1.1 Genome annotation uB?-\zUzt2L"B7z\
1.2 Computational evolutionary biology
jC F&I+c4Qy 1.3 Gene expression analysis ,u6EFU N#R`r?
1.4 Protein expression analysis .c v1u!Dvb n
1.5 Analysis of mutations in cancer 1EO`x~ Gzv2v
1.6 Structure prediction
`g+K|1| Wu:x)L 1.7 Preserving biodiversity
9u:wP_T9Jk.E1@ 1.8 Modeling biological systems
%j{REfhQ-zb 1.9 Other applications 6T)N){Yq ^o
2 Software tools
G"b0~x8E)W(p:] 3 See also
WG c#kNI` {P;wK 3.1 Related fields B5dE_ M#f8W
4 External links X#P5Cg$J/f
5 Notes & references
(\"Pla^A$t#q 6 Bibliography `K)U%J-x,`
1s5~s5C0v5ZCEW w
.iY Fz)m
2Np0{ gAm
[edit]^0N*q5N/v3LYK9^ c
Major research areas M&P4R"\ fs
[edit]
S#g3P*H7K~]^:@s Sequence analysis
1p,n2C |^O Main articles: Sequence alignment, Sequence database6U)[ m)b6clkT
1C y6XuC V%V1t
Since the Phage Φ-X174; was sequenced in 1977, the DNA sequences of more and more organisms have been decoded and stored in electronic databases. This data is analyzed to determine genes that code for proteins, as well as regulatory sequences. A comparison of genes within a species or between different species can show similarities between protein functions, or relations between species (the use of molecular systematics to construct phylogenetic trees). With the growing amount of data, it long ago became impractical to analyze DNA sequences manually. Today, computer programs are used to search the genome of thousands of organisms, containing billions of nucleotides. These programs can compensate for mutations (exchanged, deleted or inserted bases) in the DNA sequence, in order to identify sequences that are related, but not identical. A variant of this sequence alignment is used in the sequencing process itself. The so-called shotgun sequencing technique (which was used, for example, by The Institute for Genomic Research to sequence the first bacterial genome, Haemophilus influenza) does not give a sequential list of nucleotides, but instead the sequences of thousands of small DNA fragments (each about 600-800 nucleotides long). The ends of these fragments overlap and, when aligned in the right way, make up the complete genome. Shotgun sequencing yields sequence data quickly, but the task of assembling the fragments can be quite complicated for larger genomes. In the case of the Human Genome Project, it took several months of CPU time (on a circa-2000 vintage DEC Alpha computer) to assemble the fragments. Shotgun sequencing is the method of choice for virtually all genomes sequenced today, and genome assembly algorithms are a critical area of bioinformatics research.M[(V)fNa

Zcp_R7uM$u4bd Another aspect of bioinformatics in sequence analysis is the automatic search for genes and regulatory sequences within a genome. Not all of the nucleotides within a genome are genes. Within the genome of higher organisms, large parts of the DNA do not serve any obvious purpose. This so-called junk DNA may, however, contain unrecognized functional elements. Bioinformatics helps to bridge the gap between genome and proteome projects, for example in the use of DNA sequence for protein identification.
4sqGD)I1W4s[
T%xuV eDT See also: sequence analysis, sequence profiling tool, sequence motif.
"HW?p|$u{v\
e(|2B O@\ otgh [edit]
7?$GS6ux!M+O'\$Yf|{ Genome annotationu#v iu Lsl
Main articles: Gene finding_Tn-?} gF3J-I+m N/]
^i1D$[S)g!o!]
In the context of genomics, annotation is the process of marking the genes and other biological features in a DNA sequence. The first genome annotation software system was designed in 1995 by Owen White, who was part of the team that sequenced and analyzed the first genome of a free-living organism to be decoded, the bacterium Haemophilus influenzae. Dr. White built a software system to find the genes (places in the DNA sequence that encode a protein), the transfer RNA, and other features, and to make initial assignments of function to those genes. Most current genome annotation systems work similarly, but the programs available for analysis of genomic DNA are constantly changing and improving. The Ensembl system contains a genome annotation pipeline for the human genome (as well as others), originally developed by Ewan Birney while at the Wellcome Trust Sanger Institute near Cambridge, England[1].
-f gh+}Gy "_.`1sX5P+h
[edit]
4U ?#{2H0sr'k-m.g Computational evolutionary biology
9EF_ M,N(n_|6O Evolutionary biology is the study of the origin and descent of species, as well as their change over time. Recent developments in genome sequencing and the ubiquity of fast computers enable researchers to trace evolution of species by tracing changes in their DNA. CEB research from the pre-genome era involved building computational models of populations and watching their behavior over time.%Gt d:B in
'@$U |8M4eC6MNnf
The field of genetic algorithms might be described as the rough inverse of CEB — rather than investigating evolution through computer programs, it aims to improve computer programs through evolutionary principles.
M#DB~0aA
Kk$R H#f [edit]%v5m!^6Zj/Y c
Gene expression analysiso4?P&tfI&IP?-t
The expression of many genes can be determined by measuring mRNA levels with multiple techniques including microarrays, expressed cDNA sequence tag (EST) sequencing, serial analysis of gene expression (SAGE) tag sequencing, massively parallel signature sequencing (MPSS), or by measuring protein concentrations with high-throughput mass spectroscopy. All of these techniques are extremely noise-prone and/or subject to bias in the biological measurement, and a major research area in computational biology involves developing statistical tools to separate signal from noise in high-throughput gene expression (HT) studies. HT studies are often used to determine the genes implicated in a disorder: one might compare microarray data from cancerous epithelial cells to data from non-cancerous cells to determine the proteins that cancer up-regulates and down-regulates.
lL(F EN!\t,B
5\M!B:})Ys4T9gD Expression data is also used to infer gene regulation: one might compare microarray data from a wide variety of states of an organism to form hypotheses about the genes involved in each state. In a single-cell organism, one might compare stages of the cell cycle, along with various stress conditions (heat shock, starvation, etc.). One can then apply clustering algorithms to that expression data to determine which genes are co-expressed. Further analysis could take a variety of directions: one 2004 study analyzed the promoter sequences of co-expressed (clustered together) genes to find common regulatory elements and used machine learning techniques to identify the promoter elements involved in regulating each cluster[2].
4m2CuXJ
"KM&X4_"H V&q#w [edit]
z,ZM3G7p-jl*b Protein expression analysis
'Jed n&k#`-L Protein microarrays and high throughput (HT) mass spectrometry (MS) can provide a snapshot of the proteins present in a biological sample. Bioinformatics is very much involved in making sense of protein microarray and HT MS data; the former involves a number of the same problems involve in examining microarrays targeted at mRNA, the latter involves the bioinformatics problem of matching MS data against protein sequence databases.9M?w0s O%BI0m

9J;R:_!td'F [edit]X;l8UWaD
Analysis of mutations in cancerv?L1c3W ^B
Massive sequencing efforts are currently underway to identify point mutations in a variety of genes in cancer. The sheer volume of data produced requires automated systems to read sequence data, and to compare the sequencing results to the known sequence of the human genome, including known germline polymorphisms.1N9Y6d4i@*I.\$E&dWe

0W/G.F#vB\h Oligonucleotide microarrays, including comparative genomic hybridization and single nucleotide polymorphism arrays, able to probe simultaneously up to several hundred thousand sites throughout the genome are being used to identify chromosomal gains and losses in cancer. Hidden Markov model and change-point analysis methods are being developed to infer real copy number changes from often noisy data. Further informatics approaches are being developed to understand the implications of lesions found to be recurrent across many tumors.?*Ed:f7a&C5y

-]W a-Y2^[ [edit] L0F7Bz p+M'm&b
Structure prediction
#S)? Fc*}S5a Main article: Protein structure predictionJ-Qf4bV.I|(S*F
)FEXxX,zn
Protein structure prediction is another important a