Welcome back.
We’re talking about the foundations of information technology and some of the definitions in
history of where the Internet and the technology that we have come from.
What we haven’t talked about are some of the words that are thrown around in IT circles
so let’s talk about some of those.
The first we should talk about is storage terminology.
You may have heard it said that at the very foundation of computers there are 0s and 1s
and that’s true.
0s and 1s are the foundation of all the computer code, all the images, all the sounds that
are stored and transmitted on a computer.
Those 0s and 1s are called bits.
It's the smallest atomic unit of data that we work with in information technology.
If you put 8 of those together you call that a byte.
Those are often put together in order to form things like letters and components of numbers.
If you put 1024 bytes together that’s a kilobyte.
That can be used for a useful way of referencing how large a file is on your hard drive.
Well, as files get bigger you might get to a megabyte which is 1024 squared bytes.
You might get a gigabyte which is 1024 to the 3rd bytes.
Then if you want to continue you can talk about terabytes, 1024 to the 4th, petabytes,
exabytes, zettabytes, and finally the largest number that at least I am familiar with is
yottabytes.
You have all of these terms that talk about different scales, and you should just understand
that these aren't just double or triple.
These are orders of magnitude and more storage, and we’ll try and reference some of these
in a second.
You might have heard of the term packet described.
A packet is a collection of bytes that can be of variable length, and usually you talk
about a packet as being a unit of data that‘s sent over a network, and it can be different
sizes.
Send a packet over the network means send a collection of bytes over the network.
Let’s try and get some scale around those different terms, the gigabyte scales.
For starters a DVD that you might have a movie on can hold about 5 gigabytes.
So, you can think to yourself that a digital movie when you’re going to watch it is about
5 gigabytes.
If you want to see a Netflix movie you have to send about 5 gigabytes of packets over
the Internet.
If you wanted to get all of Wikipedia downloaded and have a copy of that on the computer near
you that would require about 6 terabytes.
The picture on the left here is a screenshot or an artist's rendition of a scene from James
Cameron’s movie Avatar.
Avatar was a heavily digitally produced movie with a lot of computer generated graphics.
It was the largest one at the time.
It had required the most storage of any movie at that time.
It required it’s estimated about one petabyte of storage in order to keep all of the digital
models and rendering to produce that movie.
Now, if you were to take all of Netflix master copies of movies that they have on their servers
it would require about 3 petabytes of storage.
Now remember, this is the movies that you’re going to watch as opposed to all the digital
movies that were in Avatar.
So, 3 petabytes.
If you go up to the next level you go up to exabytes.
The scale of that is about the amount of data that the Internet transmits every month.
This is very rough, but you think that in one month over the entire planet 150 exabytes
of data are moved around the Internet.
If you wanted to go to the next level and say how big is a zettabyte, well, if you were
to record every single word that has ever been spoken by any person on the planet in
all of history recorded at about 16 kilobytes fidelity, it would take about 42 zettabytes
in order to store all of those conversations.
So, to try to give you an order of magnitude and understanding of what those numbers correspond
to.
Network terminology has their own set of terms that we use.
So, you are familiar with using web browsers and typing in addresses into the top of the
web browser, but when you type in an address at the top of the web browser the technical
term for what you’re typing in is a URL.
That’s an abbreviation that stands for Uniform Resource Locator.
For example, if I were to type in http://www.ics.uci.edu that’s a URL for the Informatics Department
at the University of California Irvine.
There’s something called the domain name system, and the domain name system is responsible
for translating those basically human understandable URLs, for example ics.uci.edu, and translating
that into something called an IP address.
The IP address in this case, IP stands for Internet Protocol, and in version 4 of that
protocol, the one that we’re most familiar with, and address is listed as 4 numbers in
a row between 0 and 255.
For example, www.ics.uci.edu, that might map into 128.195.59.193.
IP addresses make sense to computers, but URLs make more sense to humans.
The domain name system is an international system for translating those human readable
URLs into network numbers that computers can use for routing packets around the Internet.
A network is often considered to consist of different players on the network, different
nodes that act in different roles.
You may have heard the word client used.
The client is what we call a computer on a network that uses services.
It’s usually like a customer in a store.
A server is a computer on the network that provides services to clients.
This is like when a customer goes into a store you think of a customer as a client and you
think of the store as being a server.
Google for example is a server and your web browser is a client.
A client/server architecture refers to the fact in which you’re building some kind
of a program, some kind of a service in which many people interact with a central server
in order to obtain that service.
Search engines are like this.
Online stores are like this.
Most services that you interact with on the Internet use a client server architecture.
An alternative architecture is a peer-to-peer architecture.
A peer-to-peer architecture is a network in which there are no servers per se.
There are only clients that are connecting to each other to collectively provide some
kind of a service to each other.
If you’re familiar with online file sharing applications which are mostly used for copyright
infringement, trading movies, trading music and things like that, those are often a peer-to-peer
arrangement on computers.
The good thing about peer-to-peer arrangements is they tend to be more robust, and the tradeoff
between efficiency and robustness is a recurring theme that we have in this class.
Peer-to-peer architectures can be very robust.
For example, if we wanted to look up the IP address at www.google.com what could we do?
Well, we could use a utility on your computer called DIG, and on here is a screenshot of
what that would look like, and you can type in dig www.google.com, and if that DIG utility
is installed on your computer you’ll get back a report of what the Internet addresses
are that are associated with that URL.
In this case we see that 74.125.224.80 is one of 5 different IP addresses associated
with the URL Google.com.
Then you can go to the browser and you can type in that address directly and you see
that actually even though you didn’t type in www.Goolge.com you get the Google search
page.
That’s because those computer addresses are still valid.
It’s just not very helpful for us to remember that specific set of numbers in order to get
the services that we want.
Another definition that we need to be clear on is the idea of what software is.
As our world has got more mobile, as we have more cloud-based services, software has gotten
a little bit more difficult to describe, but basically in a nutshell software is a set
of instructions that tell hardware what to do.
Increasingly software can also be a set of instructions that tell other software what
to do.
An example of this is a web browser.
A web browser is an example of a piece of software, and a web page is an example of
a piece of software that tells the browser what to do.
In the beginning we talked a little bit about that quote by Steve Jobs, I guess that was
in the previous lecture, and just like we saw that technology is made by people, people
also write the software that end up being run on our computers.
People use special programming languages to write software.
Nowadays we often call that software apps.
Apps is short for applications.
Traditionally those things were called programs and they ran on desktop computers.
Apps we typically associate with mobile computers.
We use special software called compilers to convert the things that people write in programming
languages into language that the hardware uses.
Compilers convert software into machine-readable code that computers can run.
Once a program is compiled and packaged then it can be run on a computer.
The people that do that are called software developers.
Each computing environment that you might work with requires unique compilers and packing
equipment.
If you want to write a program for a Windows computer you're going to need a special set
of software to write your program, to compile it and package it so that it can run on a
Windows computer.
An iPhone, a different set of software.
Android, yet another set of software that all are required in order to create the applications.
Example programming languages include things like Python, Ruby, Javascript, HTML, C-sharp,
Objective-C and Java.