ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

So you want to be a computer scientist?

Updated on November 21, 2009

Becoming a Computer Scientist

Computer scientists and software engineers arguably make up the backbone of advanced technology in our modern world. But what exactly do computer scientists and software engineers do? People often upset various individuals in technical vocations (like myself) by a conversation that goes begins as follows:

Billy Bob: "What do you do for a living?"

Computer scientist: "I'm a computer scientist"

Billy Bob: "Oh, so you're a programmer?"

etc...

That last sentence, "Oh, so you're a programmer?" is the sentence which may end up with your computer scientist friend rolling his eyes and sighing, walking away, or worse yet - hacking into your computer and changing your mouse settings.

Computer scientists and software engineers are not just cogs in some grandiose machine called "The Software Industry". While a non-so-insignificant amount of time is spent by individuals in this field programming, it is not the only thing that they do.

So what are you then?

Computer scientists and software engineers are problem solvers. Typically, a software or technical problem presents itself and it is the software professional's duty to devise a solution to the problem, and then translate the solution into a programming language.

What's the difference between a computer scientist and a software engineer?

This question is asked quite frequently. There is a quote that touches the surface of the distinction between the two:

"The engineer learns in order to build, and the scientist builds in order to learn."

- Fred Brooks

Software engineers, in essence, are practitioners of software. They are mostly concerned with finding the programming languages, APIs (Application Programming Interface), and other technologies that help them to solve a problem.

Computer scientists, by definition, are concerned when advancing the technology, describing technology, developing new programming languages and APIs to in turn, allow the engineers to "build".

So, software engineers learn new technology in order to solve practical problems, and computer scientists build using existing technology to learn more about it, and advance the technology.

This is, however, an extreme oversimplification. Many individuals with degrees in computer science work in the industry as software engineers (like myself), and many others have degrees in software engineering and work at research facilities and universities as computer scientists. The line is very blurry, and ultimately, a software engineer could work as a computer scientist, and vice versa.

So what should I major in?

If you are pursuing becoming a computer scientist or software engineer as a career, then it is almost expected that you will have a degree in a technological field. Most four year universities offer B.Sc. degrees in Computer Science, and some are beginning to offer Bachelors of Science in Software Engineering degrees.

Other related degrees include, but are not limited to, degrees in Network Technologies, Computer Technologies, and Computer Security. These are often more focused on the network infrastructure of companies, and job titles for individuals with these degrees would include technical infrastructure specialists, and network administrators.

What does a computer science or software engineering curriculum look like?

Computer science and software engineering curriculums are usually quite similar, especially for the fundamental (100 and 200, i.e. freshman and sophomore level) courses. These courses are losely divided into Core and General. Core courses are those directly related to computer science, while general courses are supporting classes (such as math courses, language, social and natural sciences).

Core Courses

Introduction to Computer Science (CS 100)

In the beginning of most four year curriculums, a computer science or software engineering student is expected to take (not surprisingly) an Introduction to Computer Science course. This course will typically begin to teach the student the fundamentals of a programming language. The most common programming languages as of the time of this writing for introduction classes are C++ and Java.

Computer Science II (CS 200)

After completing a CS-Introduction course, the student in both CS (computer science) and SE (software engineering) will move on to take a Computer Science II course. This course is more advanced, and builds on the student's knowledge of basic programming. It introduces the concepts of data structures and algorithms. Students who complete this level should have a reasonably solid grasp of the language being taught, as well as how to implement (i.e., actually program) algorithms (a big fancy word for the procedure that tells the computer to do something).

Specifically, it is assumed that students at this level know how to implement sorting algorithms and basic data structures such as stacks and queues.

Discrete Mathematics

Another very important course that is included in the core curriculum, and typically taught by a computer science professor (instead of a math professor) is Discrete Mathematics. This course is usually taken after or alongside Computer Science II. It is primarily concerned with the mathematics that help to solve more complicated problems, and understanding how a computer performs calculations. It is typical, but not always the case, that the instructor assigns programming assignments along with the expected math homework.

Introduction to Algorithm Design and Analysis

This course could be described as the "gateway" course into all the fun stuff in a computer science curriculum. It is, to many students, the "trial by fire" to decide if they have what it takes to be a computer scientist or software engineer.

Intro to Algorithm Design and Analysis uses everything learned from CS 100, CS 200, and Discrete Mathematics, and builds on top of this, requiring the students to solve many complex problems by designing and implementing software to solve them.

Software Engineering I

Both computer scientists and software engineers are required to take the introductory course in software engineering. After this course is completed, the curriculum of computer scientists and software engineers can vary significantly depending on the requirements of the university or college.

Other courses

After completing an algorithm design and analysis course, most CS and SE students will take a course in Networking, a course in Operating Systems, and a course in Database Systems.

Software engineers typically take more business-oriented technology courses, and advanced software engineering courses later in their curriculum.

Computer scientists, on the other hand, typically take more courses on advanced operating systems, advanced networking systems, and artificial intelligence.

However, it is important to note that with only a few course differences, a computer science student or software engineering student could switch their major to the other (SE -> CS, CS -> SE) with very little difficulty or lost courses, and/or wasted time.

Many universities have courses in subjects like compiler design, game design and implementation, and graphics.

General Courses

Math Courses

Most CS and SE curriculum require the student to have a heavy helping of mathematics, and to specifically take courses in Calculus I, Calculus II (sometimes also Calculus III and Diff. Eq.), and also courses in Advanced Discrete Mathematics, Statistics.

If you don't like mathematics, don't let this be a discouragement to you. Many individuals who hated mathematics in high school come to find that in an environment with a caring professor who treats their students like adults and more like peers than pond scum do much better. Most universities offer at least a course in Pre-Calculus to get students who are weak in mathematics off of their feet. If you were absolutely horrible in mathematics and are terrified at the thought of the word "Calculus", it may be a good idea to take a College Algebra and/or Trigonometry course at a community college first, then start at a university.

Science Courses

CS and SE students typically have to have both social and natural science courses. Social science usually includes choosing from among psychology, sociology, anthropology, history, and other related courses.

Natural science courses typically consist of biology, physics, chemistry, ecology, geology, and related subjects. Usually a CS or SE student will only have to take a one year series in one of the above natural science courses (e.g., a course in Microbiology and a course in Macrobiology would be a Biology Series).

Business and Economics Courses

Typically this is one of the ways in which CS and SE curriculum diverge. SE students usually take a course or two in a business or business-like subject, whereas CS students typically do not have to take these courses.

However, most CS and SE both require at least a semester of economics or related subject.

General Electives

Often, just to fill space in a 120 or 126 credit hour Bachelors of Science degree program, the student must pick 12 or so credits (which is essentially 3 to 4 courses) in general electives. Many students choose to continue with a more advanced course in whatever their natural or social science course was. For example, a student who took Biology 1 and 2, may wish to take an "Introduction to Genetics" course, or another biology course that requires both Bio 1 and 2.

Also, many students choose to take more advanced mathematics courses. Some students choose to take foreign languages, or perhaps, a course of some sort from another engineering discipline (like Electrical Engineering, or Mechanical Engineering), assuming the student has enough prerequisites to take such a course.

What if I want to just dabble in computer science or software engineering, or maybe just get a head start before I start college?

This is a loaded question, and depends on what you want to achieve. Many individuals who did not study computer science or software engineering at the college level want to learn how to program and develop software.

It is important that you learn as much as you can about a specific programming language, and how it is used, and what it is used for. A lot of professors cringe when they hear this, because they like to say, "The language isn't the important part! It's the problem solving!".

Both knowing how to solve a problem and knowing how to implement your solution in a programming language are important.

Do you recommend anything to get started with programming?

If you are a very impatient person, or perhaps a person in junior high or high school and want to just get your feet wet, I recommend looking into something like the programming language "Alice" (www.alice.org). It is developed with and on top of Java and makes learning languages much more simple, and also provides practical and easy move into Java itself, so your time is not wasted at all with some esoteric programming language you will never see again.

Also, it is quite useful to pick up abilities in web development and design, although basic web design is not technically programming, it's marking up. There is a distinction. Markup languages just tell a page how it should look (styling the page), whereas programming tells a page or piece of software what to do.

What are some languages that are useful to know in the computer industry?

Without a doubt, anything you learn makes you a more knowledgeable person, and learning one programming language typically helps you more easily learn another.

But, in all reality there are a few programming languages that are very important for computer scientists to know:

  • C / C++ (a true programming language)
  • Java (a cross-platform programming language)
  • PHP (a server-side web scripting language)
  • JavaScript (a client-side scripting language for web development)
  • XHTML (a markup language)

working

This website uses cookies

As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://corp.maven.io/privacy-policy

Show Details
Necessary
HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
LoginThis is necessary to sign in to the HubPages Service.
Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
AkismetThis is used to detect comment spam. (Privacy Policy)
HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
Features
Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
MavenThis supports the Maven widget and search functionality. (Privacy Policy)
Marketing
Google AdSenseThis is an ad network. (Privacy Policy)
Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
Index ExchangeThis is an ad network. (Privacy Policy)
SovrnThis is an ad network. (Privacy Policy)
Facebook AdsThis is an ad network. (Privacy Policy)
Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
AppNexusThis is an ad network. (Privacy Policy)
OpenxThis is an ad network. (Privacy Policy)
Rubicon ProjectThis is an ad network. (Privacy Policy)
TripleLiftThis is an ad network. (Privacy Policy)
Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
Statistics
Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)
ClickscoThis is a data management platform studying reader behavior (Privacy Policy)