# What’s Computer Science ?

# What is computer science ?

Computer Science or (CS) is the study of the principles and use of computers (machines that do computations). Computer scientists deal with software and hardware, this includes the theory, development, application and design of both. Computer science has many interesting specializations that include Artificial Intelligence (AI), which is the theory and development of computers to perform tasks that normally require human intelligence such as visual perception, speech recognition, decision making and translation between languages. This amazing field also has specializations in Computer Programming (make desktop apps and games), Computer Engineering (design computer hardware), Mobile Development (make apps), Game Design (think Xbox, Nintendo, etc.), Graphics (think Toy Story, Frozen, Harry Potter, Star Wars), Data Analytics/Science (make predictions of the future from data) and Databases (store lots of information).

# Computer Science Career Path

Is computer science for you ? If you like problem solving, things like playing puzzles or games, then computer science is definitely for you. Going into the field of computer science can be a lucrative career. Computer science was listed in Forbes *Top Degrees For Getting Hired* in 2017. According to work.chron.com the 33,510 computer scientists working in the United States made as of May 2011 averaged **$103,160 **per year which comes out to about $49.59 per hour. The lowest paid 10% made $56,800 per year, and the highest paid made $151,660 per year. One way to make a career in computer science is to get a college degree in the computer science field of study, this may cost about **$20,153 **per year according to the average cost total of Carnegie Mellon University the nations most popular bachelor program for getting a computer science degree. That is not a bad investment if you ask me, but their are other paths you can take like going to a programming boot camp or getting certificates, or learning on your own.

# How to get started in the field of Computer Science ?

You can take the traditional route and go to a University and major in Computer Science, other options include **FREE** online classes that you can take to get started in the computer science field, if you would like a certificate showing that you’ve taken the class it may cost some money. Companies like **coursera**, **Udacity**, **edX** and **Udemy** are the juggernauts in the online learning community. You can also learn from **YouTube** channels that go over specific topics in Computer Science, as well as **websites / blogs**** **that do the same.

# Computer Science History

Let’s take a look at some of the history behind this field. A computer used to be known as a human that does computation, and the majority of those humans were women. As a matter of fact one of the first credited programmers in history was a women named Ada Lovelace, who wrote the program for **Charles Babbage’s **computer. Charles is best known for being the inventor of the computer between 1936 and 1938, this computer was the first electro-mechanical binary programmable computer. **Alan Turing**, was a brilliant mathematician who was not well known during his lifetime. Today he is known for conceiving modern computing and helped in the victory of World War 2 (between 1939–1945) over Nazi Germany by cracking the “unbeatable” enigma machine, which was a machine the Nazi Germany used to send secret messages back and forth to their comrades. In short he is credited as the first computer scientist. Sadly he died at a young age of 42 due to poisoning, believed to be suicide. Alan Turing and Alonzo Church both independently and together introduced algorithms with limits on what can be computed, and a purely mechanical model for computing. In 1941 Konrad Zuse developed the worlds first functional program controlled computer, the Z3. In 1946 **John Von Neumann **created a model for computer architecture that became known as the Von Neumann Architecture, and since the 1950’s this model has been used in computer design. In 1962 the first computer science degree was created by Purdue University. Also in 1962 Kenneth Iverson writes a programming language. in 1963 the American Standard Code for Information Interchange (ASCII ) was created which allowed the exchange of data from different manufacturers. I could probably write multiple articles on the history of computer science, but eventually all of these people, ideas, innovations, and events lead to the cool computers and programs that we currently have like the iPhone, Facebook, Instagram, Snap Chat, Tinder, etc.

# Some Notable Influential Computer Scientists

# Popular Computer Science Algorithms

There are many algorithms that are used to automate our world. Here are a few popular algorithms in most computer science curriculum.

# Sorting algorithms

In computer science a sorting algorithm is an algorithm that puts elements of a list in a certain order

## Bubble Sort

*Bubble Sort** *is considered one of the simplest sorting algorithms that works by repeatedly swapping the adjacent elements if they are in the wrong order. With a bubble sort algorithm you will be able to see that the largest element (assuming we are sorting from smallest to largest) will *bubble* up to the top of the list or array.

`BUBBLESORT(A)`

1 for i = 1 to A.length - 1

2 for j = A.length downto i + 1

3 if A[j] < A[j - 1]

4 exchange A[j] with A[j - 1]

Get the C program below on my GitHub:

## Selection Sort

**Selection Sort **is a sorting algorithm, specifically an in-place comparison sort. The algorithm divides the input list into two parts: the sublist of items already sorted, which is built up from left to right at the front (left) of the list, and the sublist of items remaining to be sorted that occupy the rest of the list. Initially, the sorted sublist is empty and the unsorted sublist is the entire input list. The algorithm proceeds by finding the smallest (or largest, depending on sorting order) element in the unsorted sublist, exchanging (swapping) it with the leftmost unsorted element (putting it in sorted order), and moving the sublist boundaries one element to the right.

Get the code for selection sort from my GitHub below:

## Merge Sort

**Merge Sort **(also commonly spelled mergesort) is an efficient, general-purpose, comparison-based sorting algorithm. Most implementations produce a stable sort, which means that the implementation preserves the input order of equal elements in the sorted output. Merge sort is a divide and conquer algorithm that was invented by John von Neumann in 1945.

**Conceptually, a merge sort works as follows:**

1)Divide the unsorted list into n sublists, each containing 1 element (a list of 1 element is considered sorted).

2)Repeatedly merge sublists to produce new sorted sublists until there is only 1 sublist remaining. This will be the sorted list.

# Search Algorithms

## Binary Search

Binary search is one of the fundamental algorithms in computer science. **A binary search**, also known is a search algorithm finds the position of a target value within a sorted array. Binary search compares the target value to the middle element of the array; if they are unequal, the half in which the target cannot lie is eliminated and the search continues on the remaining half until it is successful. If the search ends with the remaining half being empty, the target is not in the array.

`binary_search(A, target):`

lo = 1, hi = size(A)

while lo <= hi:

mid = lo + (hi-lo)/2

if A[mid] == target:

return mid

else if A[mid] < target:

lo = mid+1

else:

hi = mid-1

// target was not found

## Linear Search

Linear Search is a method to finding a specific element or value in a list. It checks every element sequentially until it finds the specific element or value.

## Depth First Search

**Depth -First Search (DFS)** is an algorithm to traverse a tree or graph data structure. It starts off from the root and then goes as far as possible along each branch before backtracking.

## Dijkstras Algorithm

**Dijkstras Algorithm** is a graph search algorithm that solves the single source shortest path problem for a graph with non-negative edge path costs, producing a shortest path tree. This was created by **Edsger Dijkstra**.

# Data Structures

In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.

## Arrays

**Arrays **are just lists of elements. It’s just a variable, a special data structure that can hold many values of the same type. For example an array of all integers would look like the image below.

## Heaps

A **heap** data structure in computer science is a special tree that satisfies the heap property, this just means that the parent is less than or equal to the child node for a minimum heap A.K.A **min heap**, and the parent is greater than or equal to the child node for a maximum heap A.K.A **max heap**.

## Graph Data Structure

A **graph** is just a pair of the sets **V **for **Vertices** and **E** for **Edges **denoted by (V,E). The edges connect the pairs of vertices. Each vertex is represented by a node.

## Tree Data Structure

Trees are a special type of graph that have no loops, no self loops and no circuits. A tree does have nodes that are connected similar to a graph. It has a root and subtrees consisting of children with a parent node.

So basically a heap is a special tree which is a special graph data structure.

Thanks for reading this article I hope its helpful to you all ! Keep up the learning, and if you would like more computer science and algorithm analysis videos please visit and subscribe to my YouTube channels (randerson112358 & compsci112358 )

# Check Out the following for content / videos on Computer Science, Algorithm Analysis, Programming and Logic:

**YouTube Channel:***randerson112358: *https://www.youtube.com/channel/UCaV_0qp2NZd319K4_K8Z5SQ

*compsci112358:*

https://www.youtube.com/channel/UCbmb5IoBtHZTpYZCDBOC1CA

**Website:**

http://everythingcomputerscience.com/

**Video Tutorials on Recurrence Relation:**

https://www.udemy.com/recurrence-relation-made-easy/

**Video Tutorial on Algorithm Analysis:**

https://www.udemy.com/algorithm-analysis/

**Twitter:**

https://twitter.com/CsEverything

# YouTube Channel:

# Computer Science Website:

# Udemy Videos on Recurrence Relation:

# Resources:

Stack Overflow:

https://stackoverflow.blog/2017/09/19/much-developers-earn-find-stack-overflow-salary-calculator/