What exactly is a shift register?

I am new to IC's and before getting an arduino the most complicated thing i knew in electronics were JK FLIP FLOPS and karnaugh maps.

So basically i was wondering if anyone could explain this to me as the documentation i have read is going over my head a little so if anyone can explain them to me it would be very appreciated

What exactly is a shift register and how does on use it, what are its uses in projects and what programming must be done to accomplish this.

Are there any other IC's that are used in Quite a lot of arduino projects that i should research before i come across them?

What exactly is a shift register

It is a collection of D-type flip flops with the Q output of one connected to the D input of the other. They all have a common clock.

They are used to convert parallel data to serial data or serial data to parallel data depending on how you access the Q outputs and the preset and clear inputs.

what are its uses in projects

To get more output pins than the arduino normally has, that is to expand the number of outputs or inputs.

what programming must be done to accomplish this.

Present the data on the first input and toggle the clock. Often they also have D-type latches on the Q outputs to freeze the output, a program needs to clock this latch when all the data has been shifted into place.

so basically you can use it as a 1bit memory (1bit per input/output) slot that you can write or read from and then latch so that it remains this way then you can have your 1bit either represent an output if it is latched to high or low?

so you input HIGH, LOW, HIGH, HIGH and your 4 pins on the shift register should be:
PIN 1: HIGH
PIN 2: LOW
PIN 3: HIGH
PIN 4: HIGH
Then LATCH it on

and the outputs on 1,3,4 should stay on and 2 stay off?

"Register" almost always implies memory. Converting serial <-> parallel by its nature requires memory if you think about it carefully.

Have a look at this online shift register simulation:
http://conductiveresistance.com/interactive-595-shift-register-simulator/

A shift register is simply a device that combines flip-flop stages and some additional gates to form a higher level logic component into a single IC package.