Computer science: Difference between revisions

2,207 bytes added ,  11 April 2021
Philosophy
(add info)
(Philosophy)
Line 71: Line 71:


The relationship between Computer Science and Software Engineering is a contentious issue, which is further muddied by [[Software engineer#Use of the title "Engineer"|disputes]] over what the term "Software Engineering" means, and how computer science is defined.<ref>{{Cite journal | last1 = Tedre | first1 = M. | title = Computing as a Science: A Survey of Competing Viewpoints | doi = 10.1007/s11023-011-9240-4 | journal = Minds and Machines | volume = 21 | issue = 3 | pages = 361–387 | year = 2011 | s2cid = 14263916 }}</ref> [[David Parnas]], taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines.<ref>{{Cite journal | last1 = Parnas | first1 = D.L. | journal = Annals of Software Engineering | volume = 6 | pages = 19–37 | year = 1998 | doi = 10.1023/A:1018949113292|title=Software engineering programmes are not computer science programmes| s2cid = 35786237 }}, p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering, […]"</ref>
The relationship between Computer Science and Software Engineering is a contentious issue, which is further muddied by [[Software engineer#Use of the title "Engineer"|disputes]] over what the term "Software Engineering" means, and how computer science is defined.<ref>{{Cite journal | last1 = Tedre | first1 = M. | title = Computing as a Science: A Survey of Competing Viewpoints | doi = 10.1007/s11023-011-9240-4 | journal = Minds and Machines | volume = 21 | issue = 3 | pages = 361–387 | year = 2011 | s2cid = 14263916 }}</ref> [[David Parnas]], taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines.<ref>{{Cite journal | last1 = Parnas | first1 = D.L. | journal = Annals of Software Engineering | volume = 6 | pages = 19–37 | year = 1998 | doi = 10.1023/A:1018949113292|title=Software engineering programmes are not computer science programmes| s2cid = 35786237 }}, p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering, […]"</ref>
==Philosophy==
{{main|Philosophy of computer science}}
A number of computer scientists have argued for the distinction of three separate paradigms in computer science. [[Peter Wegner]] argued that those paradigms are science, technology, and mathematics.<ref>{{cite conference |author=Wegner, P. |title=Research paradigms in computer science—Proceedings of the 2nd international Conference on Software Engineering |location=San Francisco, California, United States |date=October 13–15, 1976 |publisher=IEEE Computer Society Press, Los Alamitos, CA}}</ref> [[Peter J. Denning|Peter Denning]]'s working group argued that they are theory, abstraction (modeling), and design.<ref>{{Cite journal | last1 = Denning | first1 = P.J. | last2 = Comer | first2 = D.E. | last3 = Gries | first3 = D. | last4 = Mulder | first4 = M.C. | last5 = Tucker | first5 = A. | last6 = Turner | first6 = A.J. | last7 = Young | first7 = P.R. | title = Computing as a discipline | journal = Communications of the ACM | volume = 32 | pages = 9–23 | date = January 1989 | doi = 10.1145/63238.63239| s2cid = 723103 }}</ref> Amnon H. Eden described them as the "rationalist paradigm" (which treats computer science as a branch of mathematics, which is prevalent in theoretical computer science, and mainly employs [[deductive reasoning]]), the "technocratic paradigm" (which might be found in engineering approaches, most prominently in software engineering), and the "scientific paradigm" (which approaches computer-related artifacts from the empirical perspective of [[natural science]]s, identifiable in some branches of [[artificial intelligence]]).<ref>{{Cite journal | first1 = A.H. | title = Three Paradigms of Computer Science | journal = [[Minds and Machines]] | last1 = Eden | volume = 17 | issue = 2 | year = 2007 | url = http://www.eden-study.org/articles/2007/three_paradigms_of_computer_science.pdf | doi = 10.1007/s11023-007-9060-8 | pages = 135–167 | url-status=dead | archive-url = https://web.archive.org/web/20160215100211/http://www.eden-study.org/articles/2007/three_paradigms_of_computer_science.pdf | archive-date = February 15, 2016 | df = mdy-all | citeseerx = 10.1.1.304.7763 | s2cid = 3023076 }}</ref>