OPS145 Introduction Newversion: Difference between revisions

From Littlesvr Wiki
Jump to navigation Jump to search
Line 122: Line 122:


You don't often need to think about this, but it's a good piece of fundamental computer knowledge to start your learning journey with.
You don't often need to think about this, but it's a good piece of fundamental computer knowledge to start your learning journey with.
=== Large numbers of bytes ===
While a byte (or even a bit) is important, modern computers work with such mind-boggling amounts of data that there are prefixes used to describe multiples of a byte. Here are the ones you'll hear most often:
{| class="wikitable"
|+
!Short form
!Is pronounced
!Multiple
!Storage example
!Which probably means
|-
|K
|kilo
|1000
|2KB
|two thousand bytes
|-
|M
|mega
|1000000
|5MB
|five million bytes
|-
|G
|giga
|1000000000
|256GB
|two hundred and fifty six billion bytes
|-
|T
|tera
|1000000000000
|1TB
|one trillion bytes
|}


=== Parts of a computer ===
=== Parts of a computer ===
Line 128: Line 163:
A computer has thousands of discrete components, but if you only look at the removable parts: there aren't so many of them. Here are the most important ones:
A computer has thousands of discrete components, but if you only look at the removable parts: there aren't so many of them. Here are the most important ones:


==== '''CPU''' ====
==== CPU ====
This is the brain of your computer. It does nearly all the calculations required for the computer to do anything useful. It runs software instructions, manipulates data in RAM, and sends data to other components (like your hard drive or network card).
This is the brain of your computer. It does nearly all the calculations required for the computer to do anything useful. It runs software instructions, manipulates data in RAM, and sends data to other components (like your hard drive or network card).



Revision as of 04:49, 1 January 2024

Welcome to OPS145, the beginning of the OPS stream. This course (if you take it seriously) can be the start of a great career: both challenging and rewarding.

Professor

Unless someone else is using these materials (which they're welcome to do): my name is Andrew, and you can find my schedule here. Typically my labs aren't full, so you're welcome to come to any of them. If you're planning to come to a lab for another course: you might want to check in advance to make sure I don't have a test and that that class isn't cancelled.

Other than the labs and the hallways between them: the only way to get in touch with me is via email. I'm reasonably good at replying to email, especially if I understand what you're asking, and what you've done to try and figure out the answer yourself.

I like people who work hard, and dedicate themselves to whatever they chose to take on. If that's you, or if that's who you strive to become: we're going to get along well, and I'll do my best to help you succeed.

If you just want a passing grade: that's your business, I have some minimal requirements for passing the course you'll want to review. And when I say "minimal" I mean minimal, not negotiable.

Course materials

There is no textbook for this course. The materials you need to start with are on this wiki website. When working without my help you'll often find yourself using a search engine to find other useful websites. Feel free to use them. That's what you'll do when you start working in this industry.

You do need some hardware:

  1. A PC powerful enough to run VirtualBox, with a couple virtual machines at the same time. In practical terms that means any modern PC with at least 16GB of RAM. It can be running Windows or Linux (any version of Windows or Linux is the same for our purposes). A Chromebook or tablet will not be powerful enough. If you insist on using an Apple computer: you may, but you'll have to figure out yourself how to get virtualization to work on it. If you really, really, really can't afford a computer and you want to use a lab machine at school: you may, but be prepared for all sorts of unforseen problems which you'll have no control over.
  2. A portable SSD drive with a USB3 (type A) connection. This is useful if you're using your own machine in case your computer breaks, you can plug in your work into another computer. It is required if you're using the lab machines, since no data you create will be preserved on those machines. You're also likely to need a portable drive for other courses, which is fine as long as it has enough space.

Prerequisite skills

In first semester I'll assume that you know nothing of Linux, you've never seen a terminal before, and you barely understand what a computer is. That's fine, but you'll have to stay alert and absorb as many fundamentals as you can, especially during your first year.

I'll also assume (based on past experience) that you don't know how to learn, how to think, how to communicate, or how to work hard - because you never had to before. That's something you'll have to find the motivation to fix yourself. I encourage you to do your best to find that motivation. It's not too late, and the potential difference in the quality of the rest of your life will be enormous.

If you're trying to go through this full time program while you're working full time (or even part time): good luck to you, but there is very little chance you'll more than a rubber stamp to show for your years of education. There much more to learn than there are hours available in a day/month/year. So unless you're taking a break because your brain is about to crash from overload: you're cheating yourself of the opportunity to get ahead of your peers.

Path to success

Nothing in life is free. The fees you're (maybe) paying as a student are insignificant compared to the benefits of a successful career.

Success comes to those who are consistently smart, tough, and hard working.

In the coutext of this course and this stream that means: learn, learn, and then learn some more.

  • Learn about the technologies, their history, their uses, their abuses, their features and bugs.
  • Ask questions about things you don't understand, and ask for feedback often. I'm happy to help you, but I won't if I don't know that you want help.
  • Learn how to deal with people.
    • Every professor is different. Some of them you'll like and most of them you won't. That's exactly what your professional life will be - whether you're working for a boss, or you're your own boss working for clients. Find your own ways to put up with the nonsense and make the best out of every relationship.
    • Your peers are just as random as your professors. Once you're comfortably at home in the school: try to interact with them too. Every one of them will be interesting in some different way. No matter who it is: an average person, an asshole, a know-it-all, a party person, a boring fart, an idiot, a genius: you'll have to deal with all of those in your professional life. The sooner you start interacting with the different personalities: the better prepared you will be for the inevitable interaction with them later.
    • The "everything is online now" thing doesn't make communication easier or less important - it does the reverse. More than ever now you have to put effort into understanding what people want, and communicating that you've got it. Or else noone will even know that you exist.
  • Learn how to manage your time. There's never enough of it, but you'll never have more flexibility with your time than you do now as a student.
    • Balance and sort priorities.
    • Discover that the best time to do anything is right now. The only reason not to do something now is that you're doing something else which is more important.
  • Learn your limits.
    • You're never going to know everything. Accept that, and instead of giving up: use it as motivation to keep learning for the rest of your life.
    • Find your breaking point (commonly called burn out). That way in the future you'll sense the signs that you're about to run out of juice again, and use that to balance and sort your priorities.

You're building your life now, and building your life is your responsibility, noone else's. That was the case since at least high school, but now noone will even pretend to be responsible for your development outcomes. It's all on you. Accept it, and make the best of it.

Course structure

You have four hours of class per week in this course. Generally speaking I'll spend two of those hours talking, and the other two hours helping you get your work done.

I encourage you to resist the temptation to skip class. I don't keep track of attendance (except on test days), but you will get more out of the course if you make yourself go to lectures to listen to me, and force yourself to go to the labs even if you don't have any questions to ask nor any friends to hang out with.

One day I might decide to record videos of my lectures, but that's not a priority for me right now.

Graded work

  • You need to come to class to do both tests.
  • Quizzes will be done on Blackboard. I don't do surprises, they'll be announced in advance.
  • The labs will be submitted over the internet using commands from your computer.
  • I haven't completely decided yet, but I expect the review labs will have to be done in class.

The rest of your program

Presumably you're in this program because you're hoping to build a career with systems and networks administration. That is a very vague statement, which you'll need to start clarify to yourself over the first couple of semesters.

Generally speaking after you finish your program you can become:

  • a system administrator (Linux or Windows, not likely both),
  • a network administrator (Linux or Windows or Cisco),
  • a technical support representative,
  • the IT guy on a team of developers,
  • some custom software specialist, or
  • a DevOps guy (currently the most lucrative job in this field)

There is no direct communication between professors for different courses, or even different sections of the same course. There are many reasons for this, including the fact that there are too many of us. I have no way of knowing what you're learning in other courses, therefore I will likely repeat things you've heard (or will hear) someone else. That's not such a bad thing actually - you're more likely to remember it.

Keep your interests broad until you're quite sure you've picked your path. For me that happened by the middle of the second year. But even after you do: remember that there is more in common than is apparent between different technologies. So don't ignore the stuff that's not obviously in your career path.

Hello computers

Computers are everywhere now, but the number of people who understand them hasn't increased that much (if at all) over the last few decades. Everyone knows how to poke their finger at a touchscreen, but that is not any closer to IT knowledge than switching TV channels is to electronics.

Hopefully you've picked this program because you already know you're interested in computers, and you've learned things you friends/parents/randompeople don't know. If not: now is the time to start.

The body of knowledge related to computers is incomprehensibly enormous. I don't think anyone has even tried to quantify it. I've picked some basics for this week based on my experience, but every interesting piece of information you choose to pursue will take for ever to fully understand. You'll never know it all, but you can learn enough that everyone around you will think that you do.

Digital electronics

Digital electronics are actually a specific use case of analog electronics, but we're not going to spend any time on that.

With digital ecelctronics fundamentally the only two values available are zero and one. Everything else is an interpretation of long streams of 0s and 1s. That includes every form of storage and data transmission.

Let's have a look at some basic examples of how binary data is converted into human-comprehensible data.

Binary to decimal conversion

Most of the time binary data is organized in bytes. One byte is made of eight bits. One bit is a binary unit, which is either a 0 or a 1. As with decimal numbers (the types of numbers you've used all your life), in binary the least significant digit (the smallest in meaning) is on the right.

In the following example shows how the binary 11001001 is the same as the decimal 201.

Convert-bin-decimal.png

This doesn't mean that every sequence of 11001001 has the meaning 201. Those two are only equivalent if you choose to interpret that particular sequence of binary bits as a decimal number. You can choose to interpret those bits as someting else, for example a character.

Converting from decimal to binary is a little harder to do, but in this course you won't care about binary numbers larger than decimal 7.

Binary to text conversion

You might have thought in the past that computers can store text. They cannot. They store zeroes and ones. If you decide that a specific sequence of 8 bits (a byte) represents an ASCII character (instead of a decimal number), you can look up the mapping between that number and a character in an ASCII table.

For human readability purposes this table doesn't have binary bits in it. But for example to find the meaning of the byte 01000000 as a character you would convert that to decimal first (getting 64), and look that up in an ASCII table, finding that binary 01000000 is the same as the uppercase letter A.

ManAscii.png

Does that mean that binary 01000000 is not decimal 128? No: it can be 128, or A, or whatever else you choose to interpret it as.

Pictures

When you get home find a magnifying glass and look closely at your computer screen. You'll find that the picture you're seeing is made of hundreds of thousands (maybe millions, depending on your resolution) of tiny little square dots. Each of those dots is called a pixel, and each pixel has exactly one colour at one time.

Your video memory, just like everything else in your computer is filled with binary numbers. But in this case the meaning of those numbers is interpreted as a colour (rather than a number or an english character).

A common way to represent a colour is RGB (red, green, blue). If you have one byte for red, one byte for green, and one byte for blue: that's 24 bits, which can hold over sixteen million distinct values. In this case that's sixteen million different colours.

So for example the binary sequence 00101100 10111101 00110001 can be interpreted (for your benefit) as decimal 44, decimal 189, and decimal 49. That's a dull red, mixed with a bright green, mixed with a dull blue: giving you the green colour in the ASCII screenshot above.

Then you can have a sequence of as many pixel values as you need to fill a window or a screen.

Other types of data

Now that you see how binary can be interpreted as numbers, text, or images: perhaps you will more readily believe that every other type of data in computers is the same. Anything you can think of on a computer (videos, sound, game AI, websites, applications, etc.) is ultimately just a lot of zeroes and ones.

You don't often need to think about this, but it's a good piece of fundamental computer knowledge to start your learning journey with.

Large numbers of bytes

While a byte (or even a bit) is important, modern computers work with such mind-boggling amounts of data that there are prefixes used to describe multiples of a byte. Here are the ones you'll hear most often:

Short form Is pronounced Multiple Storage example Which probably means
K kilo 1000 2KB two thousand bytes
M mega 1000000 5MB five million bytes
G giga 1000000000 256GB two hundred and fifty six billion bytes
T tera 1000000000000 1TB one trillion bytes

Parts of a computer

If you have a desktop computer: I encourage you to take its case off, and have a look at what's inside. If you've done that before: consider building your own computer next time you need a new one. If you've done that too: this section is going to be no news to you.

A computer has thousands of discrete components, but if you only look at the removable parts: there aren't so many of them. Here are the most important ones:

CPU

This is the brain of your computer. It does nearly all the calculations required for the computer to do anything useful. It runs software instructions, manipulates data in RAM, and sends data to other components (like your hard drive or network card).

For a consumer-grade computer its processing speed is measured in GHz (billions of instructions per second). There are other factors that affect its observable performance though like the number of cores and the cache size.

PCs have either AMD or Intel CPUs. These are compatible in terms of the software they can run, and their performance has been comparable for decades.

RAM

Short for Random Access Memory. This is the working memory of your computer, which is different from your computer's permanent storage.

RAM is very fast (it can be read and written to very quickly), and all the operations the CPU does work on instructions and data stored in RAM.

That means an application installed on your hard drive will be loaded into RAM before it can be executed. A file from your hard drive will need to be loaded into RAM before it can be processed and displayed.

RAM is much more expensive than persistant storage, because it's much faster. A decent modern PC will typically have 16GB (16 billion bytes) of it. When you run out of RAM: you will notice that your machine slows down to a crawl. That's because at that point the CPU needs to swap data from RAM to the hard drive and back, and that swapping speed is limited by the speed of the hard drive, which is at least 10 times slower tham moving data around in RAM.


Motherboard. This is the board that connects all the other components to each other. The only critical thing about a motherboard is what type of CPU it will accept.

Things that don't look like computers

Operating systems

Services and applications

Networks

Security

Open source software