What is Computer Hardware?

What is Computer Hardware?

I’ve decided to start off with a bit of an introduction into computers for complete beginners and so this will be part of that content. So let’s start with Computer Hardware – Side Note: This is likely to be the only post just about hardware, the next will look at software and continue from there.

The Computer Hardware is the name of the physical components of a computer system, these components can be placed into the following categories:

  • Input
  • Processing
    • CPU
    • Memory
      • Main Memory
      • Secondary Storage
  • Output

Input is the data we provide to the computer, this can be through a variety of means such as, using a mouse, keyboard, microphone, game controller, using touch input (smartphones), or other means including pulling data from a database (if you’re unsure what a database is you can think of it as a digital filing cabinet, we’ll look into then in the future).

The Processing is what the computer does with our data, so using the mouse from the input examples the computer would calculate where the mouse pointer should move to, what key had been pressed (if any), what effects the button press has made, or the action the must be performed on the data from the database (e.g. reading a name from the file)

The output is then the results of the performing some action on the data, again continuing with our previous examples, the mouse pointer moves to the correct location on the  screen, the pressed key is displayed (such as in a text editor), the game view changes in some way (perhaps the player jumped), or the contents of the data from the database is  printed.

In order to perform the above, a computer is made up of two very important parts, the Hardware and the Software (we’ll discuss this in another post).

Hardware

A normal computer is itself made up of several components:

  1. Central Processing Unit (CPU)
  2. Main Memory or Random Access Memory (RAM)
  3. Secondary Storage Devices (such as Hard drives)
  4. Motherboard
  5. Input peripherals and devices
  6. Output devices

The CPU

When the computer is performing a task of such as making a calculation, the CPU is actually the part of the computer that is performing this action. Therefore the CPU can be considered, quite crudely, to be the brain of the computer and the most important component.

The job of the CPU can be explained as follows:

  1. Fetch
    1. The CPU retrieves an instruction from RAM which contains the next action to perform for a program.
  2. Decode
    1. The instruction to execute has been stored in the form of a number, in order to perform its action the number must be decoded into an electrical signal
  3. Execute
    1.  The electrical signal is then passed onto the correct component to perform the operation, this could be the Arithmetic Logic Unit (performs the arithmetic computations) or the disk drive (to load some data).

** Fun Fact **: The original predecessors to modern computers where huge devices that weighed tons. They were primarily vacuum tubes and switches made up of electrical and mechanical components. Although they were extremely large by today’s standards they were not very powerful. An example can be found with

Electronic Numerical Integrator And Computer (ENIAC) was created in 1946 by John Eckert and John Mauchly and were capable of performing about 5000 addition calculations a  second vs a modern smartphone can perform billions per seconds.

RAM

While the CPU can be thought of as the ‘brain’ of the computer, the RAM (or Main Memory) is the memory (as the name suggests) of the computer. This is where active work is currently being stored, for example, any executing (running) program will be held in RAM, this includes any data the program is working with. RAM is also very quick, this is a huge benefit and along with many other improvements is very noticeable by how fast modern PCs run.

RAM is a volatile memory type, that means it does not continue to store its data once the computer is turned off. This is unlike Secondary memory or secondary storage, described later.

Interestingly, it is called Random Access Memory because it enables the CPU to quickly access the data stored at any random location, hence the Random Access name.

RAM is divided into small storage locations called bytes, a single byte is large enough to contain a small number or character. Modern RAM “Sticks”, a stick is just one RAM module, work in the billions of bytes. For example, a standard 4GB stick is 4294967296 bytes, huge right? Of course, this is again another example of great improvements in the world.

Each byte can be further divided into small storage items called bits (binary digit), there are 8 bits to a byte. A bit can be thought of as a tiny switch (much like your light switch) and so can be in one of two positions, on and off. In modern computers however they are not actual switches (at least not like your light switch but the understanding is easily transferable). So a bit can be thought of as being on or off or being one of two values a 0 or a 1, which is called binary. Bytes have their own unique address and is identified by that address, in a similar way postal addresses work.

Secondary Storage

Secondary storage is non-volatile memory, this means that the data stored on the disk continues even after the machine has been turned off. Programs that we install on our computers are stored in secondary storage, such as text editors, browsers, streaming services, and the apps we install. It is quite a bit slower than RAM but still very quick in its own right.

There are a few common secondary storage devices, Hard Disk Drives (HDDs), Solid State Drives (SSDs), Compact Disks (CDs), Universal Serial Bus (USB) drive, and many others.

  • HDD:  Works by storing data magnetically onto a disk.
  • SSD: Uses semi-conductor chips, for those of you who are keen on RAM chips the SSD chips are non-volatile and the data stays put without power.
  • CD:  Stores data in microscopic holes called ‘pits’ and ‘lands’, these pits and lands are read using a laser and are turned into an electrical pulse which is recognised as 0s and 1s
  • USB Drive:  Also uses chips to store data. These are small and very cheap.
  • Additional
    • External HDD: The same as HDD except these devices are connected, normally through USB, to the “outside” of the computer and can be moved between different  computers quite easily

Input Devices

In order for a computer to be able to do anything useful we must provide it with input, how this input is provided varies wildly, from using a mouse or keyboard or input from a database or a file on the computer.

Essentially any device that collects information from the ‘outside’ world and provides it to the computer is considered an input device. As mentioned, a mouse or keyboard are perfect examples but also consider the USB drive that provides us with data stored on it. Additionally, temperature reading devices or the components in modern phones such as accelerometers and gyroscopes are input devices.

Output Devices

As the name suggests output is any information provided by the computer to the outside world can be considered output, printed documents, Graphical User Interface (GUI) on a monitor, flashing LED, audio through speakers or headphones, cooling fan, data saved to external memory such as external HDD, USB devices, and CDs.

Conclusion

Hopefully, this hasn’t been too much information for you and you get the general idea of what a computer is and what each part of the computer does. Not all parts mentioned here are needed and there are some parts left off but this gives you a good starting point. I won’t concentrate too much on Hardware specifically but wanted to give an overview before I got into the areas I’m more interested in, which is Software and the next post is coming soon…

I welcome feedback, especially at this very early stage, so any improvements you think I can make please get in touch either in a comment below or send me a message and I’ll get back to you.

Now with Xamarin Certification

So just wanted to write a post as I just got my Xamarin Certified Mobile Professional certification today, very happy with that.


Very Quick Overview of Xamarin:

Xamarin is a cross-platform mobile development framework for developing Android and iOS apps. It allows a huge amount of code reuse through the use of the Xamarin.Forms framework and when coupled with UWP allows for all 3 major platforms to have an app developed at a huge reduction in cost, time, and effect (the magic 3 in my mind). The best bit is that it is all done using C# (and XAML if you want) and makes use of native APIs for those platforms. Xamarin tries to provide a wrapper that you use to do what you want but the underlying framework calls into the platform-specific APIs, obviously this doesn’t work in all cases but they recommend you can get anywhere from 70-90% code reuse.


I’ve been using Xamarin (not as part of my day-to-day job) for quite some time, about 2 years on and off I think. My goal has always been that I will move into mobile development (…again (my first job was as the Android developer within an R&D team)) and for quite a while I only had the time to do any mobile development in my spare time, which there was not a lot of and even less now. But to be honest it’s more than likely I didn’t make as much time as I could’ve to speed the process up… the lies we tell ourselves hey.

My introduction with mobile development was through Android (day to day job back in 2014/2015) and I had a Windows Phone for a few years so I made some apps for that and put them up on the Windows Store. Though nothing to shout about tbh, for example, the first was the classic Torch app, though one I was quite happy with was a Pokemon guessing game where users would guess the name of the Pokemon back on the silhouette (basically the “Who’s that Pokemon” game in the show). A few people seemed to like it, wouldn’t go looking for it though in case you were interested it’s not available in any of the stores. No doubt there are plenty of good alternatives, I even contacted the Pokemon Company the find out if I could somehow develop the game properly…. as you can imagine they were not interested.

Anyway coming back to Xamarin, when I heard about it I thought it was brilliant, started listening to the Xamarin Podcast, with James Montemagno and Pierce Boggan (check it out here), and attended one of the Xamarin Dev Days (which was really good and even got to have a go on the Hololens which was cool) though they don’t seem to be happening anymore. As mentioned becoming a mobile developer, specifically a Xamarin developer, has been in the works for a while now and I didn’t seem to be making much in the way of progress (always something taking up the time, I’m sure you’ve experienced similar problems right?) but a few months ago I just decided I was going to go for the certification and I would get it. After some time and effort, today is that day, if you are thinking about doing it yourself I highly recommend just starting the material on the Xamarin University website. Get through it as and when you can and before you know it you’ll be making a nice amount of progress. Even if you don’t want the get certified still worth a look, the content is free.

I’ll be releasing some material over the next few months about how to get started and possibly some other tutorials. I do have some other Introductory content coming up but I’m looking to target that in a more general sense using C++ and C#. Should hopefully get the ball rolling soon.

Thanks for reading and if you have any comments feel free to leave them or send me an email via the contact page.

The First Post

So this is the first post. I’ll try to keep it short and simple.

I’ve been wanting to do this for quite some time and it’s, as with many things in life, one of those things you decide to put off and say “I’ll do it tomorrow” or “I’ll do it when I have time”. So I thought I’ll just go for it and see what happens…

I’d think the best way to start will be to describe myself, Aaron Waddingham, and what the plans are for this site.

Well, I’m a Computer Scientist (by education) and currently working as a Software contractor which I have been doing for just over 12 months. My own introduction to Software Development was through an academic environment specifically the University of Glamorgan, now called the University of South Wales. I studied two qualifications at the university the first was an HND in Computing as I had almost zero software experience up to that point and the second was a BSc(Hons) in Computer Science and graduated in 2014 with a First. From there I moved into my first Software Development role with General Dynamics and during the time I was there I worked on 4 different projects. During the middle of 2017, I decided to move into contracting and made the move in August of that year with my first contract being with MBDA. I won’t go into any details on what I have been doing on those projects as I plan to add a “Projects/CV” section to the site in the future.

So moving on, as mentioned I’ve been planning on starting a website so I can begin sharing my knowledge and experience with a wider audience as well as provide potential clients with a glimpse of the skills I can bring to the table.

Thanks for reading all the way through the FIRST post and let’s get going…