Introduction to Computer Science
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)
- Use White Space - it doesn’t eat up memory, so use it!
- Comment your code
- Use an IDE/debugger
- Learn to Google (Geeksforgeeks, Stackoverflow, official documentation)
- 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:
- Python
- IDE:
- Gnome Builder (Linux friendly)
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:
- Move one left
- Move one right
- Read symbol
- Print 0 at location
- 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.
- Sequences: first a, then b
- Selection: if/then/else
- 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
Queue
- First in, First out
- Preserves execution order
- Example: If/then statements