Overview:

Computer Science (CS) is the study of the principles and use of computers.

  • The theory and methods of processing information in digital computers
  • The design of computer hardware and software
  • Applications of computers.

Most important take aways:

While coding, don’t try to be fancy!          Keep It Simple Stupid (KISS)

  1. Use White Space - it doesn’t eat up memory, so use it!
  2. Comment your code
  3. Use an IDE/debugger
  4. Learn to Google (Geeksforgeeks, Stackoverflow, official documentation)
  5. Debugger == Print statements

Commenting

  • It’s always better to have more.
     
  • Comment while you code
  • Personalize yourIDE to give proper contrast of comments
     

Overview of Languages

Here are a couple of the popular languages, sorted.

Programming focused

There languages are very powerful and give you the control a computer scientist wants but have steeper learning curves.

  • C/C++/C#
  • Java
  • Ruby

Data Languages

Striking a balance between coding rigor and easy of access. If you want to write software, they will be lackluster, but are perfect for physicists.

  • Python
  • Fortran

Data Processing

These are not true programming languages but are built well to deal with data sets and pure math. These languages are built to be easy to jump right into

  • Matlab – Linear Algebra
  • Mathematica – Calculus
  • R - Statistics

To Get Started

Checklist:

Its that simple!

  • Take CSCI 127 (Not required, but gives a good baseline for coding in general)

Intro to Computer Science

Databases

Your data will be in data bases or very large files.

Know your data types: CSV, Unicode, field specific

Get familiar with pipelines you are working with

Architecture

How does a computer work?

Refer to your Lab E training and you can piece together a lot of it.

Discrete Mathematics

Gives rigor to the logic and speed of programs

Data Structures and Algorithms

Gives baseline for speeding up your code.

While it might be hard at first, stacks and queue are quite intuitive

Theory

Defines what types of programs can be accomplished.

Wolfram is known for pushing the limits of theory

Portfolio vs. Resume

Portfolio: A tool (usually a website) to show off your code/ability

Resume:  A document stating your qualifications

List of topics via everythingcomputerscience.com/

A couple theory insights

Alan Turing:

The father of modern computing, turning defined how any computer can do anything. These are the fundamental five steps the computer is built on:

  1. Move one left
  2. Move one right
  3. Read symbol
  4. Print 0 at location
  5. Print 1 at location

Bohm and Jacopini

When writing a code, there are only three actions you can use. This goes as deep as machine language, but these are the fundamental building blocks of any python code.

  1. Sequences: first a, then b
  2. Selection: if/then/else
  3. Repetition: While; Do:

Again, from everythingcomputerscience.com/ 

Big O/Ω/Θ Notation

  • Big O notation is a mathematical principle talking about the order of magnitude.
  • In computer science, it defines how fast the computation time grows.
  • All we care about is the term that contributes the most

Notation

Intuition

O (Big-Oh)

f(n) < O(n)

Ω (Big-Omega)

f(n) > Ω(n)

Θ (Theta)

f(n) = Θ(n)


Stacks and Queues

Stacks and Queues are the most fundamental data structures. Think of the elements in these objects as piles, like (for lack of a better work) a stack of cards you keep piling high. The question is, do you grab from the top, or the bottom.

Stacks

  • First in, Last out OR Last in, First out
  • Gives control of order to the data structure
  • Example: Binary search trees

A visual depiction of a stack: a pile of books with an arrow pointing from the left to the top book, and an arrow from the top of the book point to the right.

Queue

  • First in, First out
  • Preserves execution order
  • Example: If/then statements

A visual depiction of a queue: four people in a line in from of a kiosk. An arrow points from the back of the line towards the kiosk.