Subject: What Is Computer Science? From: "William J. Rapaport" Date: Thu, 18 Nov 2010 10:21:36 -0500 (EST) An undergraduate student in one of my classes recently asked me a question about CS that I thought I would share with you: ------------------------------------------------------------------------ I have had this question in mind for quite some time. I am hoping you can answer it. Is computer science ALL ABOUT programming? If not, then what are some other fields of study in CS that don't include writing programs? I know this is a question that doesn't relate to any of the materials we've covered in class. I am trying to figure out if I should change my major back to computer science or remain in computer engineering. I lack the passion to write intensive programs and work with circuitry. However, I do enjoy logic, troubleshooting software, fixing errors, working with databases using SQL. And I seek to learn more about artificial intelligence. Reply: ------------------------------------------------------------------------ What a great question; thanks for asking! First, let me say that I'll bet that if you ask 10 different CSE faculty members this question, you'll get 10 different answers. I think that there's a sense in which CS *is* "all about programming" but a more important sense in which it is *not*. I would say that CS tries to answer these questions: * What is computation? ** More generally, what is a procedure? * Which functions (which tasks, which behaviors, which procedures) are (or are not)... ** computable? ** efficiently computable? (some of these questions are considered by theoretical CS, as well as other branches of CS, like AI) * How can computable functions be computed? ** what specific algorithms do the job? (what I have in mind here are computer scientists who devise and write programs for solving specific problems) ** what machines are needed? So, I think it's reasonable to say that the study of procedures, algorithms, and programs is (part of) what CS is all about, but that doesn't mean that *writing* programs is all there is to it. Analyzing programs, and designing and building (better) machines to execute them, is also part of it, as is developing theories about how to do things computationally. Such theories can serve as "specifications" for other people to implement as programs. For a nice description of CS and its various branches, see our own department's webpages at: http://www.cse.buffalo.edu/undergrad/what_is_CS.php http://www.cse.buffalo.edu/undergrad/what_is_CEN.php For more ideas, see my webpage on "What is computer science?" at: http://www.cse.buffalo.edu/~rapaport/584/whatiscs.html For another local take on what CS is, see: Shapiro, Stuart C. (2001), "Computer Science: The Study of Procedures" http://www.cse.buffalo.edu/~shapiro/Papers/whatiscs.pdf Ken Smith, UB CSE Manager of Computer Operations, replies: ------------------------------------------------------------------------ > > However, I do enjoy logic, troubleshooting software, fixing errors, > > working with databases using SQL. And I seek to learn more about > > artificial intelligence. Sounds to me like we have a Systems Administrator in the making. ;-) A degree in CS isn't a requirement for being a Systems Administrator. But having CS as a background helps a *lot* - if you know more about how computers themselves work along with knowing exactly what software is, how it's created, etc. you find it a lot easier to do the sorts of tasks Systems Administrators need to do. And being able to write your own small helper programs that carry out routine mundane tasks also helps a lot. -- Ken Smith - From there to here, from here to | kensmith@buffalo.edu there, funny things are everywhere. | - Theodor Geisel Prof. Carl Alphonce replies: ------------------------------------------------------------------------ No, computer science is definitely NOT all about programming. But programming is a fundamental tool that computer scientists use to realize their ideas. Much of computer science involves the development of algorithms to solve problems, sometimes in a very theoretical way, sometimes in a very applied way (to solve very specific problems). Artificial Intelligence is a very interesting field of CS, because it brings so many different aspects of CS to bear on a diverse set of problems, like image understanding, natural language understanding, knowledge representation and reasoning, etc. You might think of knowing how to program as being a little like knowing how to spell and knowing proper grammar: these skills are truly important to someone who hopes to make a career out of writing, whether they want to be journalists, novelists, political speech writers, poets, bloggers, etc. Of course what they're interested in isn't the mechanics of writing so much as the content of what they write, or even the effect that their ideas, expressed in writing, have on society at large. Prof. Jan Chomicki replies: ------------------------------------------------------------------------ Computer science is what computer scientists do. A lot of it, though not all, involves programming.