I am probably going to regret posting this, but the fact that I am doing so will give you an idea of the sort of mind I have, when I regard launching into dissertations such as this as a fun pastime.

What is a tensor? Why are tensors so important? To understand this, we have to delve into two prior subjects, namely coordinate systems, and the representation of physical quantities. I'll address the former first.
[1] Coordinate Systems
At bottom, a coordinate system is simply a means of labelling points in space. The intention being that each point in space has a unique, unambiguous label, and furthermore, that relationships between points in space, and geometrical entities embedded within that space, can be represented in as concise a manner as possible. For the purpose of this introduction, I shall concentrate upon coordinate systems in three-dimensional space, but the remarks I shall make are equally applicable to any space, no matter how many dimensions are required to span that space.
The elementary student is likely to be familiar with Cartesian coordinates, named after their inventor, René Decartes. This system is the simplest of all coordinate systems, and in three dimensions, consists of setting up three lines, which we term coordinate axes, which intersect each other at a single point in space (known as the origin of the coordinate system), and which are arranged so that all three axes are mutually at right angles to each other (the term for this arrangement being orthogonal - orthogonality in general can be extended to as many dimensions as one pleases, even if physical visualisation thereof is difficult).
Associated with each of these axes is a standard of distance, and markers corresponding to different distances can conceptually be attached to the axes, even if we do not explicitly do so in a drawn representation thereof. Certain directions along the axes are considered 'positive' and the distance measurements in those directions are represented by positive numbers, whilst the opposing directions are considered 'negative', and the distance measurements in those directions are represented by negative numbers.
Once the axes and the distance units are constructed, each point in space can then be represented, in terms of how far one must move in each of the axial distances, in order to reach that point from the origin. So, starting at the origin, if we move 3 units in the direction of the x-axis, then 2 units in the directtion of the y-axis, and 4 units in the direction of the z-axis, we arrive at a particular point in space, which we denote as having the coordinates (3,2,4). The origin itself has, by definition, the coordinates (0,0,0).
Associated in addition with that point, is a position vector, connecting the origin to that point. That vector has components in each of the x, y and z-directions, and the components of that vector are equal to the position coordinates of the destination point. So, the position vector connecting the origin to the point (3,2,4) is simply the position vector [3,2,4]. The reason I'm introducing vectors at this point will become wonderfully apparent in due course - stay tuned!
Now, the Cartesian coordinate system is not the only system possible. Indeed, there exists a large number of possible coordinate systems, some more arcane and convoluted than others, all of which have been constructed by mathematicians, in order to make the task of representing certain spatial problems more convenient. One example thereof is the system known as spherical polar coordinates. This system is constructed via the following steps:
[1] Define a point in space as the origin of the coordinate system;
[2] Define a line passing through the origin, which we shall refer to as the meridian line;
[3] Define a horizontal plane containing the meridian line, which we shall refer to as the equatorial plane.
In this system, each point in space is represnted by three coordinates, labelled (r, φ, θ). These are defined as follows:
[1] r is the length of the straight line directly connecting the origin to the point of interest;
[2] φ is the angle through which we have to rotate a line segment in the equatorial plane, connected to the origin, in order for that line to lie directly under the straight line defined in [1] above;
[3] θ is the angle through which we have to rotate the line segment in [2] above, either above or below the equatorial plane, in order for that line to coincide with the line defined in [1] above.
The above system is, of course, applicable to positions on Planet Earth, where we can take the origin to be the centre of the planet, r to be the distance from the origin to our current position, and the two angles correspond to longitude (φ) and latitude (θ) respectively. In this system, a point in space will have three coordinates, and an associated position vector with three components. Those coordinates and components, however, will naturally be different from those arising from a Cartesian coordinate system.
The point being stressed here, of course, is that the points in space do not change - all that changes is how we choose to label them and represent them.
Now, at this point, the astute reader will be tempted to ask the question "is it possible to move from one coordinate system to another?". The answer is yes, a result that can be established not just for any two particular coordinate systems, but for any arbitrarily chosen pair of coordinate systems in general. In the above cases, for example, the relationships between coordinates and vector components (r, φ, θ) and (x,y,z) are as follows:
x = r cos φ cos θ
y = r sin φ cos θ
z = r sin θ
where 0 <= φ < 2π, and -π/2 <= θ <= π/2 (in radians).
Likewise, an inverse transformation can be defined, moving from (x,y,z) to (r, φ, θ):
r = (x2 + y2 + z2)½
φ = arctan(y/x)
θ = arctan(z/((x2 + y2)½))
I'll spare everyone at this point the transformations involved for toroidal coordinates, though anyone who wishes to can look up that particular system, and it's fairly horrendous transformation to Cartesian coordinates.

However, the point being stressed here is this: once one has defined a coordinate system, one can also define transformations between that system and any other coordinate system. The entity that represents that transformation is known as the Jacobian for the transformation, though for the moment, one need not worry about explicit representation thereof, not least because representing matrix entities using board tags is a complete pain in the whatever - any competent mathematics textbook should provide the details for the interested reader, along with a number of relevant websites.
So, the stage is set now, for the next topic.
[2] Physical Quantities And Their Representations
Whilst the initial interest in coordinate systems centred upon geometrical entities, it became very quickly apparent to mathematicians, that well-chosen coordinate systems could be harnessed for the purpose of representing physical systems embedded in space. Indeed, astronomers quickly pressed coordinate systems into service in order to facilitate precise quantitative measurements of bodies in the Solar System, and the generation of precise predictions of future positions thereof using the tools provided by Newton.
Now, another important concept needs to be introduced here. Namely, that just as points in space do not change, just because we change coordinate systems (which are merely changes of labelling), likewise, physcial quantities represented within a coordinate system do not change just because we change coordinate systems. A solid object with a given mass does not change mass just because we change the coordinate system used to represent the relevant dynamical system, and positions and velocities do not change likewise: all that changes is our particular labelling thereof.
Now, some physical quantities can be represented using one number. Mass is an example thereof - we simply specify the amount of material a given object contains. Such quantities are scalar quantities, and possess a magnitude, but no other attributes. Other quantities, however, such as positions and velocities, require us to specify both a magnitude and a direction, and are hence vector quantities, obeying the algebra of vectors, and which in the above example coordinate systems are represented by three components in the relevant coordinate directions.
However, there are certain quantities that are more intricate still. Stresses in a beam form the classic example. These can be divided into two classes - longitudinal stresses, which result in a deformation of the beam (tension or compression) along the same axis as a particular stress force vector component, and shear stresses, which result in a deformation of the beam along a different axis from the stress force vector component. If our stress is represented by S, then it has a total, in three dimensions, of nine components. There are the longitudinal stresses, which can be labelled Sxx, Syy and Szz, and the shear stresses, which are labelled Sxy, Sxz, Syx, Syz, Szx and Szy. These form what is known as a second rank tensor.
If at this point, you're asking whether or not our stress can have different components in different coordinate systems, the answer is yes. If you then ask if there exist transformation equations for stress tensors between different coordinate systems, the answer is again yes, but in order to express them symbolically, we need a new, compact (not to mention informationally dense) notation. I'll come to this later, but for now, accept that this can exist.
At this point, I can reveal that there exist higher rank tensors still. A tensor of zero rank has (again, in three dimensions) 30=1 component, and is equivalent to a scalar. A tensor of rank one has 31=3 components, and is equivalent to a vector. A tensor of rank two has 32=9 components, and by extension, a tensor of rank 3 has 33=27 components, and a tensor of rank 4 has 34=81 components. A tensor of rank N has 3N components in a 3-dimensional space. If our space is of m dimensions, then a tensor of rank N has mN components. At this point, it should be appreciated that representing this lot is going to take some notational ingenuity!
[3] The Importance Of Tensors
The astute reader should be slightly ahead of me at this point, and realise that the importance of tensors lies in a single, important fact: any quantity that undergoes well-behaved transformations as a tensor of appropriate rank, is independent of the coordinate system chosen to represent it. This is, of course, a necessity for any sensible representation of physical quantities, certainly on the macroscopic scale (I'll leave the vagaries of quantum phenomena aside at this juncture, as they require an entirely separate treatment). However, one of the powerful aspects of tensors, is that if you have a quantity of interest, and can demonstrate that said quantity transforms in accordance with the laws of tensor transformations, then your quantity is indeed independent of the choice of coordinate system, and valid manipulations of that quantity are valid in all possible coordinate systems. Therefore, for a particular problem, you can choose the coordinate system that is most convenient to you, and the fact that you have established that you are dealing with a properly constituted tensor quantity (of whatever rank) means that your results are valid in all possible coordinate systems. You don't have to engage in any additional labour to establish this: establishing that you are dealing with properly constituted tensor quantities provides sufficient guarantee of this, a result that can be (and has been ) proven in general.
This is why tensors are pressed very heavily into service in the world of general relativity, where one is interested in dealing with how physical quantities behave in a range of interestingly constructed space-times, in some cases with an intrinsic curvature to those space-times. If we were required to do this the hard way for each individual coordinate system, the labour involved would be immense, and physicists would scarcely be able to rise from the morass of equations arising therefrom. Furthermore, some quantities of fundamental importance can only be handled using tensor mathematics, because they are tensors of high rank - for example, an important tensor in the world of general relativity is called the covariant curvature tensor, and this is a tensor of rank 4, which would be excruciatingly unwieldy to manipulate in a non-tensor symbolic environment!
[4] Basis Vectors And All That
Now, going back to the basics of coordinate systems for a moment, the astute reader should have worked out, that in the case of Cartesian coordinates at least, it's possible to erect a set of what are known as basis vectors. These are vectors such that any linear vector sum thereof can represent every possible vector in the space. In the case of Cartesian coordinates, these are the vectors:
i = [1,0,0],
j = [0,1,0] and
k = [0,0,1].
Any vector in Cartesian space can be represented in the form:
Ai + Bj + Ck
Where A, B and C are any scalar values (and indeed, are the components of the vector in question in the Cartesian system).
Now, the question is, is it possible to erect basis vectors for other coordinate systems? The answer is again yes, and again, those basis vectors can be used to determine the components of any other vector in the space in question (and for that matter, the components of all relevant higher rank tensors). However, a complication arises, because for any coordinate system, it's possible to erect two distinct sets of basis vectors. Namely, one set of vectors corresponding to tangents to the coordinate contours of the coordinate system, and one set of vectors correrponding to normals (perpendicular vectors) to the coordinate surfaces. The trouble is, in almost all generalised coordinate systems, these two sets of basis vectors are different, and we can therefore erect different sets of components with respect to each. To complicate matters even further, some physical quantities behave as vectors defined with respect to one set of basis vectors, whilst other physical quantities behave as vectors defined with respect to the other set of basis vectors! So how do we make sense of this lot?
This is where we introduce some interesting notational conventions.
If a quantity transforms as a vector in a manner that is analogous to the transformation of a change of basis from one coordinate system to another (such vectors are properly dual vectors, such as the gradient defined by the nabla vector differential operator), then the quantity is covariant, coupled to the basis related to surface normals. A quantity which transforms in the opposite manner, and which is coupled to the basis related to contour tangents, is contravariant. The reason the difference isn't apparent in Cartesian coordinates, is because uniquely in Cartesian coordinates, the two sets of basis vectors are identical to each other. In other coordinate systems, however, the two sets of basis vectors are distinct, and consequently, the need to deal with covariant and contravariant entities distinctly arises.
The notation that is used consists of superscripts and subscripts. A vector that transforms as a covariant quantity, and has covariant components, is written component-wise as vi, where i is an index ranging across the number of dimensions of the space (we'll stick to three dimensions for now, but this applies to spaces of arbitrary dimension too). So, i takes any one of the values 1,2 or 3 (we can define according to our convenience which of the particular coordinate dimensions is coupled to each number, though frequently, we begin by assuming the coupling (1,2,3) -> (x,y,z) for a Cartesian space) , and thus, for example, v1 may represent the x-component in a Cartesian space, v2 the y-component, and v3 the z-component.
A vector that transforms as a contravariant quantity, is represented using a superscript, defined in a manner analogous to above, so that the components of a contravariant vector are written vi. Note that this is NOT a power! It is simply a means of highlighting that our indexing is coupled to a different basis!
Now for the fun part. if we have two coordinate systems, the xi coordinate system and the yi coordinate system, with a given vector defined in the xi coordinate system, then the transformation laws for the two different vectors are as follows:
A'j = ∂xi/∂yjAi
A'j = ∂yj/∂xiAi
where A' are the components in the yi-system, and A are the components in the xi system, and the various partial derivatives above are the components of the Jacobian for the coordinate transformation.
Note in addition that these quantities involve implicit sums, because another notational convention, namely the Einstein summation convention, applies to the indices. Any index appearing twice in an equation is treated as specifiying a sum of the respective entities, across the number of dimensions. Thus, the expression:
AiBj
simply means a product of any relevant pairs of components A and B, but:
AiBi
means the following:
A1B1 + A2B2 + A3B3
for a 3-dimensional space.
Whilst this notation is dense from an information standpoint, even when simply considering any two particular coordinate systems, the notation is intended to imply that the transformations in question hold for all possible coordinate systems. If indeed they do, and in order to establish this, one only has to establish this for two arbitrarily chosen coordinate systems, then one has valid vectors (tensors of rank 1). When moving on to tensors of rank 2, however, there are more possibilities - such a tensor may transform as a quantity represented by Tij, Tij, or Tij - it's possible for higher rank tensors to have mixed components, part contravariant, part covariant!
But, and I emphasise this strongly at this point, if you can demonstrate that your quantity of interest IS a tensor of appropriate rank (contravariant, covariant or any admixture thereof for higher rank tensors), then, an equation involving that tensor (and other quantities established to be tensors) will be valid in all possible coordinate systems, and therefore a candidate for a physical law. Indeed, it's possible (though extremely difficult, and way beyond the scope of my relatively elementary exposition!) to prove this result in general.
Oh, and just lately, it isn't just general relativity that has been making heavy use of tensors. String theory can only be represented compactly in tensor notation, along with other developments such as braneworld cosmology (where one is frequently working with as many as 26 dimensions!). Basically, without the compactness of tensor notation, and the guarantees of independence of coordinate system conferred by tensors, even elementary work in these fields would be nigh on impossible, and would involve stacks of paper several metres high for even the most elementary of calculations. For example, any braneworld physics analysis involving a tensor of rank 4 in one of the equations involves manipulating simultaneously 264 = 456,976 components, not something that can be done without the compactness of tensor notation, which renders them all simply using symbolism such as:
Rjklm
It becomes even more interesting when one starts couching equations involving derivatives of one sort or another in tensor notation, because it transpires that one requires a generalisation of the standard ordinary and partial deriviatives in order to do so - these are known as the intrinsic and covariant derivatives respectively, and result in an extra overhead of complexity that would again be massively unwieldy without the compactness of tensor notation - a covariant derivative of a rank-4 tensor in a 26-dimension braneworld equation involves summing 105 terms just to represent that derivative alone, and that's before you factor whatever other quantities it's combined with using ether inner or outer products, which again multiplies the number of terms enormously. Yet, even an expression involving an exponentially exploding number of terms becomes a compact set of symbols in tensor notation. I'll leave aside for a moment what happens when one tries performing numerical computations involving this little lot, but suffice it to say you need a computer language that can handle as many different array dimensions as the highest rank of tensor in the equation, spread across however many dimensions you're playing with at the time ... the storage requirements for even a purportedly 'simple' braneworld equation runs into tens of megabytes with ease, once actual computations are launched!
And now, if you're not all feeling like Paco after his Manchester meet brain melt, I'll take a break.
