Computers are electronic equipment that only understand instructions given to them in o and 1, also known as binary. So, any instruction that we want to give a computer is expressed in the form of what is called a low-level language.
It is not easy to understand low-level language. We humans use words and numbers that mean something and follow certain grammar rules. This type of language that we can read (aka human-readable language) is a high-level language.
When we program something, we write some instructions for the computer to execute. For example, the "Hello, World!" example in Python was
print("Hello, World!")
You can kind of read and understand that you are asking the computer to print the string "Hello, World!". So, this is high-level language. But computer cannot understand this, and only can understand low-level language. So, we need someone who can translage our high-level instruction into low-level language for the computer to understand. This is the job of a compiler. So the programming languages that we use, e.g., C, C++, Python, Java, Javascript - all need their language-specific compilers. When we installed Python or Anaconda, we actually installed the compiler for Python also.
Programming languages are specifically-designed language for writing instructions to a computer with set of rules for grammar and syntax. If the language is low-level then, it will be called a low-level programming language and will not need a compuler. If the structure of the language (i.e., grammar and syntax) is high-level then it is called a high-level programming language and will need a compiler before it can be used for executing programs.
Python is one of many many high-level programming languages. Other examples include C, C++, Java, Fortran, etc.
In principle, you can use any text editor to write set of instructions in a specific programming language. For example, you could write
print("Hello, World!")
in a file using Notepad in your computer. The key is then to use the correct compiler on the file you just created.
In Python, we use the file extension .py to indicate that the file contains program written in Python. So you can save your hello world instructions in a file named "helloworld.py". Then ask the Python compiler of your computer to read this file. This will be done as
python helloworld.py
Name of the Python compiler here is simply python. So, essentially in the command above you are sending the helloworld.py file to the python compiler explicitly. The compiler will then read your high-level instruction and convert to low-level instruction for the computer and ask the computer to follow the instruction, i.e., print the words: "Hello, World!"
There are other ways to achive this without actually writing inside a .py file. In this case, you can use an ineractive shell. The shell looks like a command prompt and has the Python compiler running behind it. So when you type your high-level instruction, it will automatically convert it to low-level and ask the computer to do the operations. It wil look something like this
>>> print("Hello, World!") <--- This is your instruction
Hello, World! <---- This is printed by the computer
Yet another way to do automatic, interactive compilation and running is via an interactive notebook. A notebook file is like a notebook, you can write text and code. When you write code in it, the notebook can interactively and automatically compile and execute it for you. A notebook file has an extension of .ipynb, that stands for Interactive Python NoteBook.
Git is a version control system that can help keep track of your progress. And github.com is simply a website that provides the functionalities of git.
Think of git and github as a storage that preserves history. We will be using this to store our progress in learning Python each day. But you can use this to store and track anything.
We will not spend much time on git or github other than how to navigate it for our purpose.
However, once this summer experience is over, you will have all the codes and all the notes (including this one) in your github repository for any future reference.