Question:
To my knowledge, there are 4 ways to solving a system of linear equations (correct me if there are more):

If the system matrix is a full-rank square matrix, you can use Cramer’s Rule;
Compute the inverse or the pseudoinverse of the system matrix;
Use matrix decomposition methods (Gaussian or Gauss-Jordan elimination is considered as LU decomposition);
Use iterative methods, such as the conjugate gradient method.

In fact, you almost never want to solving the equations by using Cramer's rule or computing the inverse or pseudoinverse, especially for high dimensional matrices, so the first question is when to use decomposition methods and iterative methods, respectively. I guess it depends on the size and properties of the system matrix.
The second question is, to your knowledge, what kind of decomposition methods or iterative methods are most suitable for certain system matrix in terms of numerical stability and efficiency.
For example, the conjugate gradient method is used to solve equations where the matrix is symmetric and positive definite, although it can also be applied to any linear equations by converting $\mathbf{A}x=b$ to $\mathbf{A}^{\rm T}\mathbf{A}x=\mathbf{A}^{\rm T}b$. Also for positive definite matrix, you can use Cholesky decomposition method to seek the solution. But I don't know when to choose the CG method and when to choose Cholesky decomposition. My feeling is we'd better use CG method for large matrices.
For rectangular matrices, we can either use QR decomposition or SVD, but again I don't know how to choose one of them.
For other matrices, I don't now how to choose the appropriate solver, such Hermitian/symmetric matrices, sparse matrices, band matrices etc.

Your question is a bit like asking for which screwdriver to choose depending on the drive (slot, Phillips, Torx, ...): Besides there being too many, the choice also depends on whether you want to just tighten one screw or assemble a whole set of library shelves. Nevertheless, in partial answer to your question, here are some of the issues you should keep in mind when choosing a method for solving the linear system $Ax=b$.
I will also restrict myself to invertible matrices; the cases of over- or underdetermined systems are a different matter and should really be separate questions.
As you rightly noted, option 1 and 2 are right out: Computing and applying the inverse matrix is a tremendously bad idea, since it is much more expensive and often numerically less stable than applying one of the other algorithms. That leaves you with the choice between direct and iterative methods. The first thing to consider is not the matrix $A$, but what you expect from the numerical solution $\tilde x$:

How accurate does it have to be? Does $\tilde x$ have to solve the system up to machine precision, or are you satisfied with $\tilde x$ satisfying (say) $\|\tilde x - x^*\| < 10^{-3}$, where $x^*$ is the exact solution?
How fast do you need it? The only relevant metric here is clock time on your machine - a method which scales perfectly on a huge cluster might not be the best choice if you don't have one of those, but you do have one of those shiny new Tesla cards.

As there's no such thing as a free lunch, you usually have to decide on a trade-off between the two. After that, you start looking at the matrix $A$ (and your hardware) to decide on a good method (or rather, the method for which you can find a good implementation). (Note how I avoided writing "best" here...) The most relevant properties here are

The structure: Is $A$ symmetric? Is it dense or sparse? Banded?
The eigenvalues: Are they all positive (i.e., is $A$ positive definite)? Are they clustered? Do some of them have very small or very large magnitude?

With this in mind, you then have to trawl the (huge) literature and evaluate the different methods you find for your specific problem. Here are some general remarks:

If you really need (close to) machine precision for your solution, or if your matrix is small (say, up to $1000$ rows), it is hard to beat direct methods, especially for dense systems (since in this case, every matrix multiplication will be $\mathcal{O}(n^2)$, and if you need a lot of iterations, this might not be far from the $\mathcal{O}(n^3)$ a direct method needs). Also, LU decomposition (with pivoting) works for any invertible matrix, as opposed to most iterative methods. (Of course, if $A$ is symmetric and positive definite, you'd use Cholesky.)
This is also true for (large) sparse matrices if you don't run into memory problems: Sparse matrices in general do not have a sparse LU decomposition, and if the factors do not fit into (fast) memory, these methods becomes unusable.
In addition, direct methods have been around for a long time, and very high quality software exists (e.g., UMFPACK, MUMPS, SuperLU for sparse matrices) which can automatically exploit the band structure of $A$.
If you need less accuracy, or cannot use direct methods, choose a Krylov method (e.g., CG if $A$ is symmetric positive definite, GMRES or BiCGStab if not) instead of a stationary method (such as Jacobi or Gauss-Seidel): These usually work much better, since their convergence is not determined by the spectral radius of $A$ but by (the square root) of the condition number and does not depend on the structure of the matrix. However, to get really good performance from a Krylov method, you need to choose a good preconditioner for your matrix - and that is more a craft than a science...
If you repeatedly need to solve linear systems with the same matrix and different right hand sides, direct methods can still be faster than iterative methods since you only need to compute the decomposition once. (This assumes sequential solution; if you have all the right hand sides at the same time, you can use block Krylov methods.)

Of course, these are just very rough guidelines: For any of the above statements, there likely exists a matrix for which the converse is true...
Since you asked for references in the comments, here are some textbooks and review papers to get you started. (Neither of these - nor the set - is comprehensive; this question is much too broad, and depends too much on your particular problem.)

Golub, van Loan: Matrix Computations (still the classical reference on matrix algorithms; the much expanded fourth edition now also discusses sparse matrices and has Matlab code in place of Fortran as well as an extensive bibliography)
Davis: Direct Methods for Sparse Linear Systems (a good introduction on decomposition methods for sparse matrices)
Duff: Direct Methods (review paper; more details on modern "multifrontal" direct methods for sparse matrices)
Saad: Iterative methods for sparse linear systems (the theory and - to a lesser extent - practice of Krylov methods; also covers preconditioning)


Question:
Bulk gold has a very characteristic warm yellow shine to it, whereas almost all other metals have a grey or silvery color. Where does this come from?
I have heard that this property arises from relativistic effects, and I assume that it has to do with some distinct electronic transition energies in the gold atoms. But what changes with the "introduction" of relativistic effects, that then changes the energy of the frontier orbitals in such a drastic manner?

Yes, this is a beautiful question.
As you said, in lower rows of the periodic table, there are relativistic effects for the electrons. That is, for core electrons in gold, the electrons are traveling at a significant fraction of the speed of light (e.g., ~58% for $\ce{Au}$ $\mathrm{1s}$ electrons). This contracts the Bohr radius of the $\mathrm{1s}$ electrons by ~22%. Source: Wikipedia
This also contracts the size of other orbitals, including the $\mathrm{6s}$.
The absorption you see is a $\mathrm{5d \rightarrow 6s}$ transition. For the silver $\mathrm{4d \rightarrow 5s}$ transition, the absorption is in the UV region, but the contraction gives gold a blue absorption (i.e. less blue is reflected). Our eyes thus see a yellow color reflected.
There's a very readable article by Pekka Pyykkö and Jean Paul Desclaux that goes into more detail (if you subscribe to ACS Acc. Chem.Res.)


Question:
I have a collection of old books (all 80+ years old), recently, I received a British Chemistry text from 1903 (intro page below) - this being the oldest book of my collection (112 years old at the time of writing this question):

One thing I notice is that there is a distinct smell that comes from the pages of older books. (the smell is not unpleasant) - it seems that the older the book, the more distinct the smell.
What is the chemistry behind the old pages in a book smell?

This is a very interesting question. Provided that the materials used in making papers aren't the same around the globe, this is a very broad case of study. However, a study has been conducted in which the main goal was to identify the compounds that are the cause of the smell; VOCs:[1]

Volatile organic compounds (VOCs) are organic chemicals that have a high vapor pressure at ordinary room temperature. Their high vapor pressure results from a low boiling point, which causes large numbers of molecules to evaporate or sublimate from the liquid or solid form of the compound and enter the surrounding air.

So, quoting the article:

Using supervised and unsuper-vised methods of multivariate data analysis, we were able to quantitatively correlate volatile degradation products with properties important for the preservation of historic paper: rosin, lignin and carbonyl group content, degree of polymerization of cellulose, and paper acidity.
It is a result of the several hundred identified volatile and semi-volatile organic compounds (VOCs) off-gassing from paper and the object in general. The particular blend of compounds is a result of a network of degradation pathways and is dependent on the original composition of the object including paper substrate, applied media, and binding.

The 15 most abundant VOCs present in all chromatograms were selected for further analyses: acetic acid, benzaldehyde, 2,3-butanedione, butanol, decanal, 2,3-dihydrofuran, 2-ethylhexanol, furfural, hexadecane, hexanal, methoxyphenyloxime, nonanal, octanal, pentanal, and undecane.

Strlič, M., Thomas, J., Trafela, T., Cséfalvayová, L., Kralj Cigić, I., Kolar, J., Cassar, M. (2009). Material degradomics: on the smell of old books. Analytical Chemistry 2009, 81 (20), 8617-8622.
The main link to the article might be behind a paywall, so for the interested, the relevant ResearchGate article is accessible.


Question:
Obviously, the temperature of water does not affect its chemical composition. At least not in the ranges we are likely to drink it in. Yet it is clearly far more pleasant and refreshing to drink cool water than it is to drink tepid or warm water.
Is there actually any difference to the organism or is this just a matter of perception? Is cool water somehow more efficient at rehydrating a cell? In any case, surely by the time water reaches individual cells it will have warmed up to body temperature.
So, what, if any, is the difference between drinking cool and warm water in terms of its effect on the human (or other animal) body?
Extra bonus for explaining why the taste of water changes when it is cold.

Short answer: Cold is pleasant only when your are not already freezing and cold might satiate thirst better because it acts as enhancer of the "water intake flow meter".

Is cold water more tasty than warm water? No, it is actually the reverse as detailed in my footnote.
Cold is pleasant when your body is over-heating and definitely not if you live naked in the North Pole. Over-heating means sweating which means you loose water and therefore feel thirsty faster. Yet drinking cold water will not rehydrate the body more than warm water and drinking water has only a very small impact on the body temperature. So why do we like it?
A study was actually conducted on the subject and answers most of your questions. Here the reference.
The temperature of the body will indeed not change.

cold stimuli applied to the mouth
  (internal surface of the body) do not appear to impact on body
  temperature and are not reported to cause any reflex shivering
  or skin vasoconstriction that influence body temperature.

As you pointed out, the temperature of the ingested water will not affect the overall hydration of the body as cells are rehydrated mostly via the blood  stream and the blood temperature will not be affected. Someone could argue that, at identical volumes, cold water (above 4C) contains more molecules (i.e. is denser) than warm water but this difference is likely very slim.
In this paper they also define "thirst".

Thirst is a homeostatic mechanism that regulates blood osmolarity
  by initiating water intake when blood osmolarity increases

The problem is that it takes some time before the water reaches the blood stream, and therefore you need a feedback mechanism that tells you to stop drinking independently of the blood's osmolarity. This is where cold might play a role.

The cold stimulus to the mouth from ingestion of water may act
  as a satiety signal to meter water intake and prevent excessive
  ingestion of water

The picture would then be the following

In essence, a cold sensation is pleasant in warm weather, both on the skin and in the mouth, and it apparently helps in reducing thirst by being some kind of an  enhancer of the "water intake flow meter".

Footnote
Reading the comments I just want to clarify some points.
The 5 basic tastes (sweet, salty, bitter, sour and umami) are very distinct from taste sensations (pungency, smoothness, cooling to name a few). The main difference is that taste and "sensation" signals use completely different paths to reach the brain - namely, the facial and glossopharyngeal nerves for the former and the trigeminal nerve for the latter.
Is the temperature affecting basic taste perceptions? The answer is yes. How this happens is quite simple if you understand the fundamental concepts of molecular taste perception. Essentially the temperature affects the response of the receptor TRPM5 which is the main player in depolarizing taste receptor cells in the papillae. To put it simply, higher temperatures provoke a greater perception for taste, and this is not only in term of perceived taste but really modifies the amplitude of the response at the molecular level. As an example this is why ice cream does not taste sweet when frozen but only after it melted in the mouth or on the tongue.


Question:
After discovering a few difficulties with genome assembly, I've taken an interest in finding and categorising repetitive DNA sequences, such as this one from Nippostrongylus brasiliensis [each base is colour-coded as A: green; C: blue; G: yellow; T: red]:

[FASTA file associated with this sequence can be found here]
These sequences with large repeat unit sizes are only detectable (and assembleable) using long reads (e.g. PacBio, nanopore) because any subsequence smaller than the unit length will not be able to distinguish between sequencing error and hitting a different location within the repeat structure. I have been tracking these sequences down in a bulk fashion by two methods:

Running an all-vs-all mapping, and looking for sequences that map to themselves lots of times
Carrying out a compression of the sequence (e.g. bzip2), and finding sequences that have a compression rate that is substantially higher than normal

After I've found a suspicious sequence, I then want to be able to categorise the repeat (e.g. major repeat length, number of tandem repeats, repetitive sequence). This is where I'm getting stuck.
For doing a "look, shiny" demonstration, I currently have a very manual process of getting these sequences into a format that I can visualise. My process is as follows:

Use LAST to produce a dot plot of self-mapping for the mapping
Visually identify the repetitive region, and extract out the region from the sequence
Use a combination of fold -w <width> and less -S to visually inspect the sequence with various potential repeat unit widths to find the most likely repeat unit size
Display the sequence in a rectangular and circular fashion using my own script, wrapping at the repeat unit length

But that process is by no means feasible when I've got thousands of potential repetitive sequences to fish through.
Is there any better way to do this? Given an arbitrary DNA sequence of length >10kb, how can I (in an automated fashion) find both the location of the repeat region, and also the unit length (bearing in mind that there might be multiple repeat structures, with unit lengths from 30bp to 10kb)?
An example sequence can be found here, which has a ~21kb repeat region with ~171bp repeat units about 1/3 of the way into the sequence.
A Kmer-based Analysis
I've now seen human sequences with repetitive regions in excess of 10kb (i.e. out of the range of most linked-read applications). My current idea is centred around creating hash tables of short sequences (currently 13-mers) and tracking their location:

Process the sequence, storing the location of each kmer
For each kmer, find out how many times it appears in the sequence
For repeated kmers, find out how much of a gap there is between the next time that kmer occurs
Report the median and modal gap length of repeated kmers, and statistics associated with their frequency in the sequence

Some local repetitive regions may be lost in the statistics with this approach, it's hard to tell if there are multiple repetitive regions within a single sequence, and if the repeat units are themselves slightly repetitive (enough that a kmer is duplicated within a repeat unit), then the algorithm will under-report the repetitiveness (see step 3).

I've sorted the visualisation out. Here are three alternative representations of repetitive structures for the same sequence:

These were generated using the same R script, callable from the command line:
 $ repaver.r -style dotplot -prefix dotplot MAOA_chrX_43645715-43756016.fa
 $ repaver.r -style profile -prefix profile MAOA_chrX_43645715-43756016.fa
 $ repaver.r -style semicircular -prefix semi MAOA_chrX_43645715-43756016.fa

More details about this are in the presentation I gave at Queenstown Research Week, 2018. I also wrote a chapter in a peer-reviewed eBook here.
This is fast enough that I can run it on the nanopore C. elegans genome in about half an hour, producing these plots for each contig. I don't quite have a method to iterate through this plot and pick out the dominant repeat length at each location, but that's a [relatively] simple extension of what I've already done.
With a lot of optimisations for speed and memory consumption, I've now been able to run it on the full human genome. It takes a couple of days on my desktop computer (64GB RAM + SSD swap) to categorise the 100bp repeat structure of the assembled T2T/CHM13-v1.0 chromosomes.
Code here.


Question:
The other day, I bumped my bookshelf and a coin fell down. This gave me an idea. Is it possible to compute the mass of a coin, based on the sound emitted when it falls?
I think that there should be a way to do it. But how?

So, I decided to try it out. I used Audacity to record ~5 seconds of sound that resulted when I dropped a penny, nickel, dime, and quarter onto my table, each 10 times.  I then computed the power spectral density of the sound and obtained the following results:

I also recorded 5 seconds of me not dropping a coin 10 times to get a background measurement.  In the plot, I've plotted all 50 traces on top of one another with each line being semi-transparent.
There are several features worth noticing.  First, there are some very distinct peaks, namely the 16 kHz and 9 kHz quarter spikes, as well as the 14 kHz nickel spike.  But, it doesn't appear as though the frequencies follow any simple relationship like the $ \propto m^{-1/3}$ scaling the order of magnitude result Floris suggests.
But, I had another idea.  For the most part, we could make the gross assumption that the total energy radiated away as sound would be a fixed fraction of the total energy of the collision. The precise details of the fraction radiated as sound would surely depend on a lot of variables outside our control in detail, but for the most part, for a set of standard coins (which are all various, similar, metals), and a given table, I would expect this fraction to be fairly constant.
Since the energy of a coin, if it's falling from a fixed height, is proportional to its mass, I would expect the sound energy to be proportional to its mass as well.  So, this is what I did.  I integrated the power spectral densities and fit them into a linear relationship with respect to the mass.  I obtained:

I did a Bayesian fit to get an estimate of the errors.  On the left, I'm plotting the joint posterior probability distribution for the $\alpha$ intercept parameter and the $\beta$ slope parameter, and on the right, I'm plotting the best fit line, as well as $2\sigma$ contours around it to either side.  For my priors, I took Jeffrey's priors.
The model seems to do fairly well, so assuming you knew the height that coins were dropping and had already calibrated to the particular table and noise conditions in the room under consideration, it would appear as though, from a recording of the sound the coin made as it fell, you could expect to estimate the mass of the coin to within about a 2-gram window.
For specificity, I used the following coins:

Penny: 1970
Nickel: 1999
Dime: 1991
Quarter: 1995

Edit: Scaling Collapse
Following Floris, we can check to see how accurate the model $ f \sim E^{1/2} m^{-1/3} \eta^{-1} $ is.  We will use the data provided, and plot our observed power density versus a scaled frequency $f m^{1/3} \eta E^{-1/2}$.  We obtain:

which looks pretty good.  In order to see a little better how well they overlap, I will reproduce the plot but introduce an offset between each of the coins:

It is pretty impressive how well the spectra line up.  As for the secondary peaks for the quarter and nickel, see Floris' afterthought.
Landing Material
Someone in the comments asked what happens if we change the thing the coins fall onto.  So, I did some drops where instead of falling onto the table directly, I had the coins fall onto a piece of paper on the table.  If you ask me, these two cases sounded very different, but their spectra are very similar.  This was for the quarter.  You'll notice that the paper traces are noticeably below the table ones.

Coin Materials
The actual composition of the coin seems to have a fairly large effect.  Next, I tried three different pennies, each dropped 5 times.  A 1970s brass penny, A 2013 zinc penny and a 1956 bronze penny.

Large Coins
Hoping to better resolve the second harmonic, I tried some other larger coins:

Notice that the presidential dollar has a nicely resolved second harmonic.  Notice also that the Susan B dollars not only look and feel like quarters, they sound like them too.
Repeatability
Lastly, I worried about just how repeatable this all was.  Could you actually hope to measure some of these spectra and then given any sound of a coin falling determine which coins were present, or perhaps as in spectroscopy tell the ratios of coins present in the fall.  The last thing I tried was to drop 10 pennies at once, and 10 nickels at once to see how well resolved the spectra were.

While it is fair to say that we can still nicely resolve the penny peak, it seems nickels in the real world have a lot of variations.  For more on nickels, see Floris' second answer.


Question:
How can one prove the statement
$$\lim_{x\to 0}\frac{\sin x}x=1$$
without using the Taylor series of $\sin$, $\cos$ and $\tan$? Best would be a geometrical solution.
This is homework. In my math class, we are about to prove that $\sin$ is continuous. We found out, that proving the above statement is enough for proving the continuity of $\sin$, but I can't find out how. Any help is appreciated.

The area of $\triangle ABC$ is $\frac{1}{2}\sin(x)$.  The area of the colored wedge is $\frac{1}{2}x$, and the area of $\triangle ABD$ is $\frac{1}{2}\tan(x)$.  By inclusion, we get
$$
\frac{1}{2}\tan(x)\ge\frac{1}{2}x\ge\frac{1}{2}\sin(x)\tag{1}
$$
Dividing $(1)$ by $\frac{1}{2}\sin(x)$ and taking reciprocals, we get
$$
\cos(x)\le\frac{\sin(x)}{x}\le1\tag{2}
$$
Since $\frac{\sin(x)}{x}$ and $\cos(x)$ are even functions, $(2)$ is valid for any non-zero $x$ between $-\frac{\pi}{2}$ and $\frac{\pi}{2}$.  Furthermore, since $\cos(x)$ is continuous near $0$ and $\cos(0) = 1$, we get that
$$
\lim_{x\to0}\frac{\sin(x)}{x}=1\tag{3}
$$
Also, dividing $(2)$ by $\cos(x)$, we get that
$$
1\le\frac{\tan(x)}{x}\le\sec(x)\tag{4}
$$
Since $\sec(x)$ is continuous near $0$ and $\sec(0) = 1$, we get that
$$
\lim_{x\to0}\frac{\tan(x)}{x}=1\tag{5}
$$


Question:
You read the title and that's what I am trying to do.
Synopsis: I have a young son who is determined to catch Santa (to what ends I don't know). He even dreamed up using some kind of pressure plate and connecting it to a light that will turn on when Santa steps on it to get cookies. I would love to help him build this contraption. We have been down at RadioShack repeatedly.
More practically, I am not an EE and have minimal experience with (and time for) bread boards.
So, I was hoping some people here could give some guidance.
I have been evaluating Little Bits but not sure which way to proceed. I am thinking a pressure sensor under a carpet near the cookies that somehow trips a relay and turns on a light or something else clever.
Naturally, I don't want this to succeed just yet in capturing Santa; consider it a lesson in drafting better requirements and a more complete design. Next year we can drive a new design for catching Santa.
So, while the ultimate goal is a bit childish, is it a serious enough question and maybe I can jump start my son's interest in engineering.

Adorable.
Frankly, the Little Bits kit is way overkill and incredibly expensive. If your goal is to make a simple sensor that detects pressure and turns on a light bulb, that can be done using stuff you probably have around the house.
Here's a basic idea that might be "good enough" for this year. Next year may require some more sophistication as your son's imagination develops.
Instead of a force transducer pad or something equally expensive, use a metal plate that is propped up by a small spring. When the plate is stepped on, it compresses the spring and makes contact with another plate on the floor. In doing so, a circuit is completed and activates a light source.

The metal plates can be cardboard or plastic wrapped in aluminum foil. Or thin sheet metal. The spring can be an actual spring or any squishable material that deforms enough under the weight of a person (or one jolly fat guy). The whole assembly can be hidden under a rug with only a slight bump giving away its presence.


Question:
Why in computer science any complexity which is at most polynomial is considered efficient?
For any practical application(a), algorithms with complexity $n^{\log n}$ are way faster than algorithms that run in time, say, $n^{80}$, but the first is considered inefficient while the latter is efficient. Where's the logic?!
(a) Assume, for instance, the number of atoms in the universe is approximately $10^{80}$.

Another perspective on "efficiency" is that polynomial time allows us to define a notion of "efficiency" that doesn't depend on machine models. Specifically, there's a variant of the Church-Turing thesis called the "effective Church-Turing Thesis" that says that any problem that runs in polynomial time on on kind of machine model will also run in polynomial time on another equally powerful machine model.
This is a weaker statement to the general C-T thesis, and is 'sort of' violated by both randomized algorithms and quantum algorithms, but has not been violated in the sense of being able to solve an NP-hard problem in poly-time by changing the machine model.
This is ultimately the reason why polynomial time is a popular notion in theoryCS. However, most people realize that this does not reflect "practical efficiency". For more on this, Dick Lipton's post on 'galactic algorithms' is a great read.


Question: I know the spent fuel is still radioactive. But it has to be more stable than what was put in and thus safer than the uranium that we started with. That is to say, is storage of the waste such a big deal? If I mine the uranium, use it, and then bury the waste back in the mine (or any other hole) should I encounter any problems? Am I not doing the inhabitants of that area a favor as they will have less radiation to deal with than before?

Typical nuclear power reactions begin with a mixture of uranium-235 (fissionable, with a half-life of 700 Myr) and uranium-238 (more common, less fissionable, half-life 4 Gyr) and operate until some modest fraction, 1%-5%, of the fuel has been expended.  There are two classes of nuclides produced in the fission reactions:

Fission products, which tend to have 30-60 protons in each nucleus.  These include emitters like strontium-90 (about 30 years), iodine-131 (about a week), cesium-137 (also about 30 years).  These are the main things you hear about in fallout when waste is somehow released into the atmosphere.
For instance, after the Chernobyl disaster, radioactive iodine-131 from the fallout was concentrated in people's thyroid glands using the same mechanisms as the usual concentration natural iodine, leading to acute and localized radiation doses in that organ.  Strontium behaves chemically very much like calcium, and there was a period after Chernobyl when milk from dairies in Eastern Europe was discarded due to high strontium content. (Some Norwegian reindeer are still inedible.)
Activation products. The reactors operate by producing lots of free neutrons, which typically are captured on some nearby nucleus before they decay.  For most elements, if the nucleus with $N$ neutrons is stable, the nucleus with $N+1$ neutrons is radioactive and will decay after some (possibly long) time.  For instance, neutron capture on natural cobalt-59 in steel alloys produces cobalt-60 (half-life of about five years); Co-60 is also produced from multiple neutron captures on iron.
In particular, a series of neutron captures and beta decays, starting from uranium, can produce plutonium-239 (half-life 24 kyr) and plutonium-240 (6 kyr).

What sometimes causes confusion is the role played by the half-life in determining the decay rate.  If I have $N$ radionuclides, and the average time before an individual nuclide decays is $T$, then the "activity" of my sample is
$$
\text{activity, } A= \frac NT.
$$
So suppose for the sake of argument that I took some number $N_\mathrm{U}$ of U-238 atoms and fissioned them into $2N_\mathrm{U}$ atoms of cobalt-60.  I've changed by population size by a factor of two, but I've changed the decay rate by a factor of a billion.
The ratio of the half-lives $T_\text{U-238} / T_\text{Pu-240}$ is roughly a factor of a million.  So if a typical fuel cycle turns 0.1% of the initial U-238 into Pu-240, the fuel leaves the reactor roughly a thousand times more radioactive than it went in --- and will remain so for thousands of years.


Question:
In the TV show "Breaking Bad", Walter White frequently gets rid of people who get in his way by submerging them in a plastic container full of hydrofluoric acid. This, at least in the TV show, completely dissolves the body leaving nothing but a red sludge behind at the end.
Is it actually possible to dispose of a body with hydrofluoric acid?
If hydrofluoric acid wouldn't work, are there any acids corrosive enough to achieve the stated effect from the show?

Hydrofluoric acid is toxic and corrosive, but actually isn't that strong of an acid compared to other hydrohalic acids; the fluorine has a very good orbital overlap with hydrogen and is also not very polarizable, therefore it resists donating its proton, unlike other hydrohalic acids which are good proton donators. It will break down some tissues, but it will take a relatively long time and won't turn the entire body into stuff that can be rinsed down the drain. Hydrochloric acid is a much stronger acid, and as it has several uses from pH-balancing pool water to preparing concrete surfaces, it's available by the gallon from any hardware store. However, it isn't very good at dissolving bodies either; while it will eventually work by breaking down the connective tissues, it will make a huge stink and take several days to dissolve certain types of tissues and bones.
The standard body-dissolving chemical is lye aka sodium hydroxide. The main source is drain clog remover because most drain clogs are formed by hair and other bio-gunk that accumulates naturally when humans shower, exfoliate etc. It works, even though the body's overall chemistry is slightly to the basic side of neutral (about 7.35-7.4) because the hydroxide anion is a strong proton acceptor. That means that it strips hydrogen atoms off of organic molecules to form water (alkaline hydrolysis, aka saponification), and as a result, those organic molecules are turned into simpler molecules with lower melting points (triglycerides are turned into fatty acids, saturated fats are dehydrogenated to form unsaturated fats, alkanes become alcohols, etc). Sodium hydroxide is also a ready source of the sodium ion; sodium salts are always water-soluble (at least I can't think of a single one that isn't). The resulting compounds are thus either liquids or water-soluble alcohols and salts, which flush down the drain. What's left is the brittle, insoluble calcium "shell" of the skeleton; if hydrolyzed by sodium hydroxide, the resulting calcium hydroxide ("slaked lime") won't dissolve completely but is relatively easy to clean up.


Question:
I'm told by smart people that
$$0.999999999\ldots=1$$
and I believe them, but is there a proof that explains why this is?

What does it mean when you refer to $.99999\ldots$?  Symbols don't mean anything in particular until you've defined what you mean by them.
In this case the definition is that you are taking the limit of $.9$, $.99$, $.999$, $.9999$, etc.  What does it mean to say that limit is $1$?  Well, it means that no matter how small a number $x$ you pick, I can show you a point in that sequence such that all further numbers in the sequence are within distance $x$ of $1$.  But certainly whatever number you choose your number is bigger than $10^{-k}$ for some $k$.  So I can just pick my point to be the $k$th spot in the sequence.
A more intuitive way of explaining the above argument is that the reason $.99999\ldots = 1$ is that their difference is zero.  So let's subtract $1.0000\ldots -.99999\ldots = .00000\ldots = 0$.  That is,
$1.0 -.9 = .1$
$1.00-.99 = .01$
$1.000-.999=.001$,
$\ldots$
$1.000\ldots -.99999\ldots = .000\ldots = 0$


Question:
Taking a look at Julia's webpage, you can see some benchmarks of several languages across several algorithms (timings shown below). How can a language with a compiler  originally written in C, outperform C code?

Figure: benchmark times relative to C (smaller is better, C performance = 1.0).

There is no necessary relation between the implementation of the compiler and the output of the compiler. You could write a compiler in a language like Python or Ruby, whose most common implementations are very slow, and that compiler could output highly optimized machine code capable of outperforming C. The compiler itself would take a long time to run, because its code is written in a slow language. (To be more precise, written in a language with a slow implementation. Languages aren't really inherently fast or slow, as Raphael points out in a comment. I expand on this idea below.) The compiled program would be as fast as its own implementation allowed—we could write a compiler in Python that generates the same machine code as a Fortran compiler, and our compiled programs would be as fast as Fortran, even though they would take a long time to compile.
It's a different story if we're talking about an interpreter. Interpreters have to be running while the program they're interpreting is running, so there is a connection between the language in which the interpreter is implemented and the performance of the interpreted code. It takes some clever runtime optimization to make an interpreted language which runs faster than the language in which the interpreter is implemented, and the final performance can depend on how amenable a piece of code is to this kind of optimization. Many languages, such as Java and C#, use runtimes with a hybrid model which combines some of the benefits of interpreters with some of the benefits of compilers.
As a concrete example, let's look more closely at Python. Python has several implementations. The most common is CPython, a bytecode interpreter written in C. There's also PyPy, which is written in a specialized dialect of Python called RPython, and which uses a hybrid compilation model somewhat like the JVM. PyPy is much faster than CPython in most benchmarks; it uses all sorts of amazing tricks to optimize the code at runtime. However, the Python language which PyPy runs is exactly the same Python language that CPython runs, barring a few differences which don't affect performance.
Suppose we wrote a compiler in the Python language for Fortran. Our compiler produces the same machine code as GFortran. Now we compile a Fortran program. We can run our compiler on top of CPython, or we can run it on PyPy, since it's written in Python and both of these implementations run the same Python language. What we'll find is that if we run our compiler on CPython, then run it on PyPy, then compile the same Fortran source with GFortran, we'll get exactly the same machine code all three times, so the compiled program will always run at around the same speed. However, the time it takes to produce that compiled program will be different. CPython will most likely take longer than PyPy, and PyPy will most likely take longer than GFortran, even though all of them will output the same machine code at the end.
From scanning the Julia website's benchmark table, it looks like none of the  languages running on interpreters (Python, R, Matlab/Octave, Javascript) have any benchmarks where they beat C. This is generally consistent with what I'd expect to see, although I could imagine code written with Python's highly optimized Numpy library (written in C and Fortran) beating some possible C implementations of similar code. The languages which are equal to or better than C are being compiled (Fortran, Julia) or using a hybrid model with partial compilation (Java, and probably LuaJIT). PyPy also uses a hybrid model, so it's entirely possible that if we ran the same Python code on PyPy instead of CPython, we'd actually see it beat C on some benchmarks.


Question:
I'm pretty fluent in C/C++, and can make my way around the various scripting languages (awk/sed/perl). I've started using python a lot more because it combines some of the nifty aspects of C++ with the scripting capabilities of awk/sed/perl.
But why are there so many different programming languages ? I'm guessing all these languages can do the same things, so why not just stick to one language and use that for programming computers ? In particular, is there any reason I should know a functional language as a computer programmer ?
Some related reading:

Why new programming languages succeed -- or fail ?
is there still research to be done in programming languages?

Programming languages evolve and are improved with time (innovation).
People take ideas from different languages and combine them into new languages. Some features are improved (inheritance mechanisms, type systems), some are added (garbage collection, exception handling), some are removed (goto statements, low-level pointer manipulations).
Programmers start using a language in a particular way that is not supported by any language constructs. Language designers identify such usage patterns and introduce new abstractions/language constructs to support such usage patterns. There were no procedures in assembly language. No classes in C. No exception handling in (early) C++. No safe way of loading new modules in early languages (easy in Java). No built-in threads (easy-peasy in Java).
Researchers think about alternative ways of expressing computations. This led to Lisp and the functional language branch of the language tree, Prolog and the logic programming branch, Erlang and other actor-based programming models, among others.
Over time, language designers/researchers come to better understand all of these constructs, and how they interact, and design languages to include many of the popular constructs, all designed to work seamlessly together. This results in wonderful languages such as Scala, which has objects and classes (expressed using traits instead of single or multiple inheritance), functional programming features, algebraic data types integrated nicely with the class system and pattern matching, and actor-based concurrency.
Researchers who believe in static type systems strive to improve their expressiveness, allowing things such as typed generic classes in Java (and all of the wonderful things in Haskell), so that a programmer gets more guarantees before running a program that things are not going to go wrong. Static type systems often impose a large burden on the programmer (typing in the types), so research has gone into alleviating that burden. Languages such as Haskell and ML allow the programmer to omit all of the type annotations (unless they are doing something tricky). Scala allows the programmer to omit the types within the body of methods, to simplify the programmer's job. The compiler infers all the missing types and informs the programmer of possible errors.
Finally, some languages are designed to support particular domains. Examples include SQL, R, Makefiles, the Graphviz input language, Mathmatica, LaTeX. Integrating what these languages' functionalities into general purpose languages (directly) would be quite cumbersome. These languages are based on abstractions specific to their particular domain.
Without evolution in programming language design, we'd all still be using assembly language or C++.
As for knowing a functional programming language: functional languages allow you to express computations differently, often more concisely than using other programming languages. Consider about the difference between C++ and Python and multiply it by 4. More seriously, as already mentioned in another answer, functional programming gives you a different way of thinking about problems. This applies to all other paradigms; some a better suited to some problems, and some are not. This is why multi-paradigm languages are becoming more popular: you can use constructs from a different paradigm if you need to, without changing language, and, more challengingly, you can mix paradigms within one piece of software.


Question:
Here's my issue I faced;
I worked really hard studying Math, so because of that, I started to realised that I understand things better. However, that comes at a big cost:
In the last few years, I had practically zero physical exercise, I've gained $30$ kg, I've spent countless hours studying at night, constantly had sleep deprivation, lost my social life, and developed health problems. My grades are quite good, but I feel as though I'm wasting my life.
I love mathematics when it's done my way, but that's hardly ever. I would very much like my career to be centered around mathematics (topology, algebra or something similar). I want to really understand things and I want the proofs to be done in a (reasonably) rigorous way. Before, I've been accused of being a formalist but I don't consider myself one at all. However, I admit that I am a perfectionist. For comparison, the answers of Theo, Arturo, Jim Belk, Mariano, etc. are absolutely rigorous enough for me. From my experience,
$80$% or more mathematics in our school is done in a sketchy, "Hmm, probably true" kind of way (just like reading cooking recipes), which bugs the hell out of me. Most classmates adapt to it but, for some reason, I can't. I don't understand things unless I understand them (almost) completely. They learnt "how one should do things", but less often do they ask themselves WHY is this correct. I have two friend physicists, who have the exact same problem. One is at the doctorate level, constantly frustrated, while the other abandoned physics altogether after getting a diploma. Apart from one $8$, he had a perfect record, all are $10$s. He mentioned that he doesn't feel he understands physics well enough. From my experience, ALL his classmates understand less than he does, they just go with the flow and accept certain statements as true. Did you manage to study everything on time, AND sufficiently rigorous, that you were able to understand it?**
ADDITIONS:
Frequently, I tend to be the only one who find serious issues in the proofs, the formulations of theorems, and the worked out exercises at classes. Either everyone else understands everything, most or doesn't understand and doesn't care the possible issues. Often, do I find holes in the proofs and that hypotheses are missing in the theorem. When I present them to the professor, he says that I'm right, and mentioned I'm very precise. How is this precise, when the theorem doesn't hold in its current state? Are we even supposed to understand proofs? Are the proofs actually really just sketches? How on earth is one then supposed to be able to discover mathematical truths? Is the study of Mathematics just one big joke and you're not supposed to take it too seriously?
NOTE:
I have a bunch of sports I like and used to do. Furthermore, I had a perfectly good social life before, so you don't need to give advice regarding that. I don't socialize and do sport because digesting proofs and trying to understand the ideas behind it all eats up all my time. If I go hiking, it will take away $2$ days, one to actually walk + one to rest and regenerate. If I go train MMA, I won't be focused for the whole day. I can't just switch from boxing to diagram chasing in a moment. Also, I can't just study for half an hour. The way I study is: I open the book, search up what I already know but forgot from the previous day, and then go from theorem to theorem, from proof to proof, correcting mistakes, adding clarifications, etc. etc. To add on, I have a bad habit of having difficulty starting things. However when I do start, I start 'my engine', and I have difficulty stopping, especially if it's going good. That's why I unintentionally spend an hour or two before studying just doing the most irrelevant stuff, just to avoid study. This happens especially when I had more math than I can shove down my throat which I have, for mental preparations to begin studying. But, as my engine really starts and studying goes well (proven a lot, understood a lot), it's hard for me to stop, so I often stay late at night, up to 4 a.m., 5 a.m. & 6 a.m. When the day of the exam arrives, I don't go to sleep at all, and the night and day are reversed. I go to sleep at 13h and wake at 21h... I know it's not good but I can't seem to break this habit. If I'm useless through the whole day, I feel a need (guilty conscience) to do at least something useful before I go to sleep. I know this isn't supposed to happen if one loves mathematics. However, when it's 'forced upon you' what and how much and in what amount of time you have to study, you start being put off by math. Mathematics stops being enjoyment/fun and becomes hard work that just needs to be done.

In my view the central question that you should ask yourself is what is the end goal of your studies. As an example, American college life as depicted in film is hedonistic and certainly not centered on actual studies. Your example is the complete opposite - you describe yourself as an ascetic devoted to scholarship.
Many people consider it important to lead a balanced life. If such a person were confronted with your situation, they might look for some compromise, for example investing fewer time on studies in return for lower grades. If things don't work out, they might consider opting out of the entire enterprise. Your viewpoint might be different - for you the most important dimension is intellectual growth, and you are ready to sacrifice all for its sake.
It has been mentioned in another answer that leading a healthy lifestyle might contribute to your studies. People tend to "burn out" if they work too hard. I have known such people, and they had to periodically "cool off" in some far-off place. On the contrary, non-curricular activities can be invigorating and refreshing.
Another, similar aspect is that of "being busy". Some people find that by multitasking they become more productive in each of their individual "fronts". But that style of life is not for every one.
Returning to my original point, what do you expect to accomplish by being successful in school? Are you aiming at an academic career? Professional career? In North America higher education has become a rite of passage, which many graduates find very problematic for the cost it incurs. For them the issue is often economical - education is expensive in North America.
You might find out that having completed your studies, you must turn your life to some very different track. You may come to realize that you have wasted some best years of your life by studying hard to the exclusion of everything else, an effort which would eventually lead you nowhere. This is the worst-case scenario.
More concretely, I suggest that you plan ahead and consider whether the cost is worth it. That requires both an earnest assessment of your own worth, and some speculation of the future job market. You should also estimate how important you are going to consider these present studies in your future - both from the economical and the "cultural" perspective.
This all might sound discouraging, but your situation as you describe it is quite miserable. Not only are you not satisfied with it, but it also looks problematic for an outside observer. However, I suspect that you're exaggerating, viewing the situation from a romantic, heroic perspective. It's best therefore to talk to people who know you personally.
Even better, talk to people who're older than you and in the next stage of "life". They have a wider perspective on your situation, which they of their acquaintances have just still vividly recall. However, even their recommendations must be taken with a grain of salt, since their present worries are only part of the larger picture, the all-encompassing "life".

Finally, a few words more pertinent to the subject at hand.
First, learning strategy. I think the best way to learn is to solve challenging exercises. The advice given here, trying to "reconstruct" the textbook before reading it, seems very time consuming, and in my view, concentrating the effort at the wrong place
The same goes for memorizing theorems - sometimes one can only really "understand" the proof of a theorem by studying a more advanced topic. Even the researcher who originally came out with the proof probably didn't "really" understand it until a larger perspective was developed.
Memorizing theorems is not your choice but rather a necessity. I always disliked regurgitation and it is regrettable that this is forced unto you. I'm glad that my school would instead give us actual problems to solve - that's much closer to research anyway. Since you have to go through this lamentable process, try to come up with a method of memorization which has other benefits as well - perhaps aim at a better understanding of "what is going on" rather than the actual steps themselves. This is an important skill.
Second, one of the answers suggests trying to deduce as many theorems as possible as the "mathematical" thing that ought to be done after seeing a definition. I would suggest rather the opposite - first find out what the definition entails, and then try to understand why the concept was defined in the first place, and why in that particular way.
It is common in mathematics to start studying a subject with a long list of "important definitions", which have no import at all at that stage. You will have understood the subject when you can explain where these definitions are coming from, what objects they describe; and when you can "feel" these objects intuitively. This is a far cry from being able to deduce some facts that follow more-or-less directly from the definitions.


Question:
K-means is a widely used method in cluster analysis. In my understanding, this method does NOT require ANY assumptions, i.e., give me a dataset and a pre-specified number of clusters, k, and I just apply this algorithm which minimizes the sum of squared errors (SSE), the within cluster squared error.
So k-means is essentially an optimization problem.
I read some material about the drawbacks of k-means.  Most of them say that:

k-means assumes the variance of the distribution of each attribute (variable) is spherical;
all variables have the same variance;
the prior probability for all k clusters is the same, i.e., each cluster has roughly equal number of observations;

If any one of these 3 assumptions are violated, then k-means will fail.
I could not understand the logic behind this statement. I think the k-means method makes essentially no assumptions, it just minimizes the SSE, so I cannot see the link between minimizing the SSE and those 3 "assumptions".

What a great question- it's a chance to show how one would inspect the drawbacks and assumptions of any statistical method.  Namely: make up some data and try the algorithm on it!
We'll consider two of your assumptions, and we'll see what happens to the k-means algorithm when those assumptions are broken. We'll stick to 2-dimensional data since it's easy to visualize. (Thanks to the curse of dimensionality, adding additional dimensions is likely to make these problems more severe, not less). We'll work with the statistical programming language R: you can find the full code here (and the post in blog form here).
Diversion: Anscombe's Quartet
First, an analogy. Imagine someone argued the following:

I read some material about the drawbacks of linear regression- that it expects a linear trend, that the residuals are normally distributed, and that there are no outliers. But all linear regression is doing is minimizing the sum of squared errors (SSE) from the predicted line. That's an optimization problem that can be solved no matter what the shape of the curve or the distribution of the residuals is. Thus, linear regression requires no assumptions to work.

Well, yes, linear regression works by minimizing the sum of squared residuals. But that by itself is not the goal of a regression: what we're trying to do is draw a line that serves as a reliable, unbiased predictor of y based on x. The Gauss-Markov theorem tells us that minimizing the SSE accomplishes that goal- but that theorem rests on some very specific assumptions. If those assumptions are broken, you can still minimize the SSE, but it might not do anything. Imagine saying "You drive a car by pushing the pedal: driving is essentially a 'pedal-pushing process.' The pedal can be pushed no matter how much gas in the tank. Therefore, even if the tank is empty, you can still push the pedal and drive the car."
But talk is cheap. Let's look at the cold, hard, data. Or actually, made-up data.

This is in fact my favorite made-up data: Anscombe's Quartet. Created in 1973 by statistician Francis Anscombe, this delightful concoction illustrates the folly of trusting statistical methods blindly. Each of the datasets has the same linear regression slope, intercept, p-value and $R^2$- and yet at a glance we can see that only one of them, I, is appropriate for linear regression. In II it suggests the wrong shape, in III it is skewed by a single outlier- and in IV there is clearly no trend at all!
One could say "Linear regression is still working in those cases, because it's minimizing the sum of squares of the residuals." But what a Pyrrhic victory! Linear regression will always draw a line, but if it's a meaningless line, who cares?
So now we see that just because an optimization can be performed doesn't mean we're accomplishing our goal. And we see that making up data, and visualizing it, is a good way to inspect the assumptions of a model. Hang on to that intuition, we're going to need it in a minute.
Broken Assumption: Non-Spherical Data
You argue that the k-means algorithm will work fine on non-spherical clusters. Non-spherical clusters like... these?

Maybe this isn't what you were expecting- but it's a perfectly reasonable way to construct clusters. Looking at this image, we humans immediately recognize two natural groups of points- there's no mistaking them. So let's see how k-means does: assignments are shown in color, imputed centers are shown as X's.

Well, that's not right. K-means was trying to fit a square peg in a round hole- trying to find nice centers with neat spheres around them- and it failed. Yes, it's still minimizing the within-cluster sum of squares- but just like in Anscombe's Quartet above, it's a Pyrrhic victory!
You might say "That's not a fair example... no clustering method could correctly find clusters that are that weird." Not true! Try single linkage hierachical clustering:

Nailed it! This is because single-linkage hierarchical clustering makes the right assumptions for this dataset. (There's a whole other class of situations where it fails).
You might say "That's a single, extreme, pathological case." But it's not! For instance, you can make the outer group a semi-circle instead of a circle, and you'll see k-means still does terribly (and hierarchical clustering still does well). I could come up with other problematic situations easily, and that's just in two dimensions. When you're clustering 16-dimensional data, there's all kinds of pathologies that could arise.
Lastly, I should note that k-means is still salvagable! If you start by transforming your data into polar coordinates, the clustering now works:

That's why understanding the assumptions underlying a method is essential: it doesn't just tell you when a method has drawbacks, it tells you how to fix them.
Broken Assumption: Unevenly Sized Clusters
What if the clusters have an uneven number of points- does that also break k-means clustering? Well, consider this set of clusters, of sizes 20, 100, 500. I've generated each from a multivariate Gaussian:

This looks like k-means could probably find those clusters, right? Everything seems to be generated into neat and tidy groups. So let's try k-means:

Ouch. What happened here is a bit subtler. In its quest to minimize the within-cluster sum of squares, the k-means algorithm gives more "weight" to larger clusters. In practice, that means it's happy to let that small cluster end up far away from any center, while it uses those centers to "split up" a much larger cluster.
If you play with these examples a little (R code here!), you'll see that you can construct far more scenarios where k-means gets it embarrassingly wrong.
Conclusion: No Free Lunch
There's a charming construction in mathematical folklore, formalized by Wolpert and Macready, called the "No Free Lunch Theorem." It's probably my favorite theorem in machine learning philosophy, and I relish any chance to bring it up (did I mention I love this question?) The basic idea is stated (non-rigorously) as this: "When averaged across all possible situations, every algorithm performs equally well."
Sound counterintuitive? Consider that for every case where an algorithm works, I could construct a situation where it fails terribly. Linear regression assumes your data falls along a line- but what if it follows a sinusoidal wave? A t-test assumes each sample comes from a normal distribution: what if you throw in an outlier? Any gradient ascent algorithm can get trapped in local maxima, and any supervised classification can be tricked into overfitting.
What does this mean? It means that assumptions are where your power comes from! When Netflix recommends movies to you, it's assuming that if you like one movie, you'll like similar ones (and vice versa). Imagine a world where that wasn't true, and your tastes are perfectly random- scattered haphazardly across genres, actors and directors. Their recommendation algorithm would fail terribly. Would it make sense to say "Well, it's still minimizing some expected squared error, so the algorithm is still working"? You can't make a recommendation algorithm without making some assumptions about users' tastes- just like you can't make a clustering algorithm without making some assumptions about the nature of those clusters.
So don't just accept these drawbacks. Know them, so they can inform your choice of algorithms. Understand them, so you can tweak your algorithm and transform your data to solve them. And love them, because if your model could never be wrong, that means it will never be right.


Question:
I ask because, as a first-year calculus student, I am running into the fact that I didn't quite get this down when understanding the derivative:
So, a derivative is the rate of change of a function with respect to changes in its variable, this much I get.
Thing is, definitions of 'differential' tend to be in the form of defining the derivative and calling the differential 'an infinitesimally small change in x', which is fine as far it goes, but then why bother even defining it formally outside of needing it for derivatives?
And THEN, the bloody differential starts showing up as a function in integrals, where it appears to be ignored part of the time, then functioning as a variable the rest.
Why do I say 'practical'? Because when I asked for an explanation from other mathematician parties, I got one involving the graph of the function and how, given a right-angle triangle, a derivative is one of the other angles, where the differential is the line opposite the angle.
I'm sure that explanation is correct as far it goes, but it doesn't tell me what the differential DOES, or why it's useful, which are the two facts I need in order to really understand it.
Any assistance?

Originally, "differentials" and "derivatives" were intimately connected, with derivative being defined as the ratio of the differential of the function by the differential of the variable (see my previous discussion on the Leibnitz notation for the derivative). Differentials were simply "infinitesimal changes" in whatever, and the derivative of $y$ with respect to $x$ was the ratio of the infinitesimal change in $y$ relative to the infinitesimal change in $x$.
For integrals, "differentials" came in because, in Leibnitz's way of thinking about them, integrals were the sums of infinitely many infinitesimally thin rectangles that lay below the graph of the function. Each rectangle would have height $y$ and base $dx$ (the infinitesimal change in $x$), so the area of the rectangle would be $y\,dx$ (height times base), and we would add them all up as $S\; y\,dx$ to get the total area (the integral sign was originally an elongated $S$, for "summa", or sum).
Infinitesimals, however, cause all sorts of headaches and problems. A lot of the reasoning about infinitesimals was, well, let's say not entirely rigorous (or logical); some differentials were dismissed as "utterly inconsequential", while others were taken into account. For example, the product rule would be argued by saying that the change in $fg$ is given by
$$(f+df)(g+dg) -fg = fdg + gdf + df\,dg,$$
and then ignoring $df\,dg$ as inconsequential, since it was made up of the product of two infinitesimals; but if infinitesimals that are really small can be ignored, why do we not ignore the infinitesimal change $dg$ in the first factor?  Well, you can wave your hands a lot of huff and puff, but in the end the argument essentially broke down into nonsense, or the problem was ignored because things worked out regardless (most of the time, anyway).
Anyway, there was a need of a more solid understanding of just what derivatives and differentials actually are so that we can really reason about them; that's where limits came in. Derivatives are no longer ratios, instead they are limits. Integrals are no longer infinite sums of infinitesimally thin rectangles, now they are limits of Riemann sums (each of which is finite and there are no infinitesimals around), etc.
The notation is left over, though, because it is very useful notation and is very suggestive. In the integral case, for instance, the "dx" is no longer really a quantity or function being multiplied: it's best to think of it as the "closing parenthesis" that goes with the "opening parenthesis" of the integral (that is, you are integrating whatever is between the $\int$ and the $dx$, just like when you have $2(84+3)$, you are multiplying by $2$ whatever is between the $($ and the $)$ ). But it is very useful, because for example it helps you keep track of what changes need to be made when you do a change of variable. One can justify the change of variable without appealing at all to "differentials" (whatever they may be), but the notation just leads you through the necessary changes, so we treat them as if they were actual functions being multiplied by the integrand because they help keep us on the right track and keep us honest.
But here is an ill-kept secret: we mathematicians tend to be lazy. If we've already come up with a valid argument for situation A, we don't want to have to come up with a new valid argument for situation B if we can just explain how to get from B to A, even if solving B directly would be easier than solving A (old joke: a mathematician and an engineer are subjects of a psychology experiment; first they are shown into a room where there is an empty bucket, a trashcan, and a faucet. The trashcan is on fire. Each of them first fills the bucket with water from the faucet, then dumps it on the trashcan and extinguishes the flames. Then the engineer is shown to another room, where there is again a faucet, a trashcan on fire, and a bucket, but this time the bucket is already filled with water; the engineer takes the bucket, empties it on the trashcan and puts out the fire. The mathematican, later, comes in, sees the situation, takes the bucket, and empties it on the floor, and then says "which reduces it to a previously solved problem.")
Where were we? Ah, yes. Having to translate all those informal manipulations that work so well and treat $dx$ and $dy$ as objects in and of themselves, into formal justifications that don't treat them that way is a real pain. It can be done, but it's a real pain. Instead, we want to come up with a way of justifying all those manipulations that will be valid always. One way of doing it is by actually giving them a meaning in terms of the new notions of derivatives. And that is what is done.
Basically, we want the "differential" of $y$ to be the infinitesimal change in $y$; this change will be closely approximated to the change along the tangent to $y$; the tangent has slope $y'(a)$. But because we don't have infinitesimals, we have to say how much we've changed the argument. So we define "the differential in $y$ at $a$ when $x$ changes by $\Delta x$", $d(y,\Delta x)(a)$, as $d(y,\Delta x)(a) = y'(a)\Delta x$. This is exactly the change along the tangent, rather than along the graph of the function.  If you take the limit of $d(y,\Delta x)$ over $\Delta x$ as $\Delta x\to 0$, you just get $y'$. But we tend to think of the limit of $\Delta x\to 0$ as being $dx$, so abuse of notation leads to "$dy = \frac{dy}{dx}\,dx$"; this is suggestive, but not quite true literally; instead, one then can show that arguments that treat differentials as functions tend to give the right answer under mild assumptions. Note that under this definition, you get $d(x,\Delta x) = 1\Delta x$, leading to $dx = dx$.
Also, notice an interesting reversal: originally, differentials came first, and they were used to define the derivative as a ratio. Today, derivatives come first (defined as limits), and differentials are defined in terms of the derivatives.
What is the practical difference, though? You'll probably be disappointed to hear "not much". Except one thing: when your functions represent actual quantities, rather than just formal manipulation of symbols, the derivative and the differential measure different things. The derivative measures a rate of change, while the differential measures the change itself.
So the units of measurement are different: for example, if $y$ is distance and $x$ is time, then $\frac{dy}{dx}$ is measured in distance over time, i.e., velocity. But the differential $dy$ is measured in units of distance, because it represents the change in distance (and the difference/change between two distances is still a distance, not a velocity any more).
Why is it useful to have the distinction? Because sometimes you want to know how something is changing, and sometimes you want to know how much something changed. It's all nice and good to know the rate of inflation (change in prices over time), but you might sometimes want to know how much more the loaf of bread is now (rather than the rate at which the price is changing). And because being able to manipulate derivatives as if they were quotients can be very useful when dealing with integrals, differential equations, etc, and differentials give us a way of making sure that these manipulations don't lead us astray (as they sometimes did in the days of infinitesimals).
I'm not sure if that answers your question or at least gives an indication of where the answers lie. I hope it does. Added. I see Qiaochu has pointed out that the distinction becomes much clearer once you go to higher dimensions/multivariable calculus, so the above may all be a waste. Still...
Added. As Qiaochu points out (and I mentioned in passing elsewhere), there are ways in which one can give formal definitions and meanings to infinitesimals, in which case we can define differentials as "infinitesimal changes" or "changes along infinitesimal differences"; and then use them to define derivatives as integrals just like Leibnitz did. The standard example of being able to do this is Robinson's non-standard analysis Or if one is willing to forgo looking at all kinds of functions and only at some restricted type of functions, then you can also give infinitesimals, differentials, and derivatives substance/meaning which is much closer to their original conception.


Question:
In the Nature paper published by Google, they say,

To demonstrate quantum supremacy, we compare our quantum processor against state-of-the-art classical computers in the task of sampling the output of a pseudo-random quantum circuit. Random circuits are a suitable choice for benchmarking because they do not possess structure and therefore allow for limited guarantees of computational hardness. We design the circuits to entangle a set of quantum bits (qubits) by repeated application of single-qubit and two-qubit logical operations. Sampling the quantum circuit’s output produces a set of bitstrings, for example {0000101, 1011100, …}. Owing to quantum interference, the probability distribution of the bitstrings resembles a speckled intensity pattern produced by light interference in laser scatter, such that some bitstrings are much more likely to occur than others. Classically computing this probability distribution becomes exponentially more difficult as the number of qubits (width) and number of gate cycles (depth) grow.

So, from what I can tell, they configure their qubits into a pseudo-randomly generated circuit, which, when run, puts the qubits into a state vector that represents a probability distribution over $2^{53}$ possible states of the qubits, but that distribution is intractable to calculate, or even estimate via sampling using a classical computer simulation. But they sample it by "looking" at the state of the qubits after running the circuit many times.
Isn't this just an example of creating a system whose output is intractable to calculate, and then "calculating" it by simply observing the output of the system?
It sounds similar to saying:

If I spill this pudding cup on the floor, the exact pattern it will form is very chaotic, and intractable for any supercomputer to calculate. But I just invented a new special type of computer: this pudding cup. And I'm going to do the calculation by spilling it on the floor and observing the result. I have achieved pudding supremacy.

which clearly is not impressive at all. In my example, I'm doing a "calculation" that's intractable for any classical computer, but there's no obvious way to extrapolate this method towards anything actually useful. Why is Google's experiment different?
EDIT: To elaborate on my intuition here, the thing I consider impressive about classical computers is their ability to simulate other systems, not just themselves. When setting up a classical circuit, the question we want to answer is not "which transistors will be lit up once we run a current through this?" We want to answer questions like "what's 4+1?" or "what happens when Andromeda collides with the Milky Way?" If I were shown a classical computer "predicting" which transistors will light up when a current is run through it, it wouldn't be obvious to me that we're any closer to answering the interesting questions.

To elaborate on my intuition here, the thing I consider "impressive" about classical computers is their ability to simulate other systems, not just themselves. When setting up a classical circuit, the question we want to answer is not "which transistors will be lit up once we run a current through this?" We want to answer questions like "what's 4+1?" or "what happens when Andromeda collides with the Milky Way?"

There isn't a real distinction here. Both quantum and classical computers only do one thing: compute the result of some circuit. A classical computer does not fundamentally know what $4+1$ means. Instead current is made to flow through various transistors, as governed by the laws of physics. We then read off the final state of the output bits and interpret it as $5$.
The real distinction, which holds in both cases, is whether you can program it or not. For example, a simple four-function calculator is a classical system involving lots of transistors, but the specific things it can compute are completely fixed, which is why we don't regard it as a classical computer. And a pudding is a quantum system involving lots of qubits, but we can't make it do anything but be a pudding, so it's not a quantum computer.
Google can control the gates they apply in their quantum circuit, just like loading a different program can control the gates applied in a classical CPU. That's the difference.


Question:
Why does $\ce{F}$ replace an axial bond in $\ce{PCl5}$? I realize that it would be more stable there than at equatorial bond, but what is the reason of its stability? Similarly in $\ce{AB4}$ type of molecules with $\ce{sp^3d}$ hybridization (4 bond pairs and 1 lone pair) why is the geometry of the molecule that of a see-saw, where the lone pair is at equatorial position rather than at axial one?
My book states the reason to be "due to Bent's rule" but I have difficulty linking these two.
Also Bent's rule states that the hybridized orbitals of equivalent energy of central atom tend to give more %s character to the electropositive atom attached to it rather than the electronegative one. (e.g. - in $\ce{CH3F}$) Am I right? What else is more to this rule?

Recently, there has been a lot of discussion of Bent's rule (see for example "What is Bent's rule?") here in SE Chem. Simply stated, the rule suggests that $\mathrm{p}$-character tends to concentrate in orbitals directed at electronegative elements.

Why does $\ce{F}$ replace an axial bond in $\ce{PCl5}$?

In order to answer this question, we need to start by understanding the bonding in $\ce{PCl5}$ and its fluorinated isomers. In introductory courses and texts, it is usually stated that $\ce{AX5}$ type molecules adopt a trigonal bipyramid geometry and are $\mathrm{sp^{3}d}$ hybridized. As the comments by Martin and permeakra point out, and as is learned in more advanced classes, this hybridization scheme is likely incorrect. There are several reasons that argue against $\mathrm{sp^{3}d}$ hybridization including: 1) the fact that $\mathrm{d}$ orbitals are relatively high in energy compared to $\mathrm{s}$ and $\mathrm{p}$ orbitals and therefore it is energetically quite costly to involve them in bonding; and 2) $\mathrm{d}$ orbitals in non-metals are very diffuse leading to poor overlap with other orbitals and any resulting bonds would be very weak.
A reasonable hybridization alternative involves what is termed hypercoordinated bonding; where 3 center, 4 electron bonds are involved. Applying this concept to $\ce{PCl5}$ we would say that the central phosphorus atom is $\mathrm{sp^2}$ hybridized.  Thus, there would be 3 $\mathrm{sp^2}$ orbitals (these will be used to create the equatorial bonds) and a $\mathrm{p}$ orbital (this will be used to create our axial bonds) emanating from the central phosphorus atom.

The $\mathrm{p}$ orbital contains 2 electrons and will form bonds to 2 ligands (chlorine or fluorine in the case at hand). For simplicity, let's say that these ligands also use $\mathrm{p}$ orbitals for bonding (but it could be any type of orbital, $\mathrm{sp^3}$ or whatever is appropriate) and each of these orbitals contains one electron for bonding. This is our 3-center-4-electron bond and its MO diagram is pictured below. Notice how the four electrons are distributed - there are two electrons in the HOMO which is a non-bonding M.O., so the bond order in this bond is reduced.

This reduced bond order in the bond using the phosphorus $\mathrm{p}$ orbital explains why the axial bonds in $\ce{AX5}$ type molecules are longer than the equatorial bonds.

Now that we understand the bonding in $\ce{PCl5}$ we can consider the case of $\ce{PCl4F}$ and how Bent's rule applies to the situation.  First, note that fluorine is more electronegative than chlorine.  As stated above, Bent's rule suggests that more electronegative ligands prefer to form bonds with orbitals that are high in $\mathrm{p}$-character. Why is this? $\mathrm{s}$-Orbitals are lower in energy than $\mathrm{p}$-orbitals. Therefore electrons are more stable (lower energy) when they are in orbitals with more $\mathrm{s}$-character. The two electrons in the $\ce{P-F}$ bond will spend more time around the electronegative fluorine and less time around phosphorus. If that's the case (and it is), why "waste" precious, low-energy, $\mathrm{s}$-orbital character in an orbital that doesn't have much electron density to stabilize. Instead, save that $\mathrm{p}$-character for use in phosphorus hybrid orbitals that do have more electron density around phosphorus (like the $\ce{P-Cl}$ bonds). So, as a consequence of Bent's rule, we would expect phosphorus to use the orbital with lowest $\mathrm{s}$-character, the axial $\mathrm{p}$-orbital, to form the $\ce{P-F}$ bond; and the orbitals with more $\mathrm{s}$-character, the equatorial $\mathrm{sp^2}$ orbitals, to form $\ce{P-Cl}$ bonds.


Question: I recently encountered a case where I needed an integer division operation on a chip that lacked one (ARM Cortex-A8). While trying to research why that must be, I found out that in general division takes many more cycles than addition, subtraction or multiplication on pretty much any integer (or fixed-point) architecture. Why is this the case? Is it not representable with a two-layer AND-OR logic like everything else?

Division is an iterative algorithm where the result from the quotient must be shifted to the remainder using a Euclidean measure, see 2; whereas, multiplication can be reduced to a (fixed) series of bit manipulation tricks.


Question:
So there are several types of transistors:

BJT
JFET
MOSFET

Combine all that with the various flavors of each (NPN, PNP, enhancement mode, depletion mode, HEXFET, etc) and you've got a wide array of parts, many of which are capable of accomplishing the same job.  Which type is best suited for which application?  Transistors are used as amplifiers, digital logic switches, variable resistors, power supply switches, path isolation, and the list goes on.  How do I know which type is best suited for which application?  I'm sure there are cases where one is more ideally suited than another.  I admit that there is some amount of subjectivity/overlap here, but I'm certain that there is a general consensus about which category of applications each of the transistor types listed (and those I left off) is best suited for? For example, BJTs are often used for analog transistor amplifiers and MOSFETs are generally used for digital switching.
PS - If this needs to be a Wiki, that's fine if someone would like to convert it for me

The main division is between BJTs and FETs, with the big difference being the former are controlled with current and the latter with voltage.
If you're building small quantities of something and aren't very familiar with the various choices and how you can use the characteristics to advantage, it's probably simpler to stick mosly with MOSFETs.  They tend to be more expensive than equivalent BJTs, but are conceptually easier to work with for beginners.  If you get "logic level" MOSFETS, then it becomes particularly simple to drive them.  You can drive a N channel low side switch directly from a microcontroller pin.  IRLML2502 is a great little FET for this as long as you aren't exceeding 20V.
Once you get familiar with simple FETs, it's worth it to get used to how bipolars work too.  Being different, they have the own advantages and disadvantages.  Having to drive them with current may seem like a hassle, but can be a advantage too.  They basically look like a diode accross the B-E junction, so this never goes very high in voltage.  That means you can switch 100s of Volts or more from low voltage logic circuits.  Since the B-E voltage is fixed at first approximation, it allows for topologies like emitter followers.  You can use a FET in source follower configuration, but generally the characteristics aren't as good.
Another important difference is in full on switching behaviour.  BJTs look like a fixed voltage source, usually 200mV or so at full saturation to as high as a Volt in high current cases.  MOSFETs look more like a low resistance.  This allows lower voltage accross the switch in most cases, which is one reason you see FETs in power switching applications so much.  However, at high currents the fixed voltage of a BJT is lower than the current times the Rdson of the FET.  This is especially true when the transistor has to be able to handle high voltages.  BJT have generally better characteristics at high voltages, hence the existance of IGBTs.  A IGBT is really a FET used to turn on a BJT, which then does the heavy lifting.
There are many many more things that could be said.  I've listed only a few to get things started.  The real answer would be a whole book, which I don't have time for.


Question:
What is the difference between a consistent estimator and an unbiased estimator?
The precise technical definitions of these terms are fairly complicated, and it's difficult to get an intuitive feel for what they mean. I can imagine a good estimator, and a bad estimator, but I'm having trouble seeing how any estimator could satisfy one condition and not the other.

To define the two terms without using too much technical language:

An estimator is consistent if, as the sample size increases, the estimates (produced by the estimator) "converge" to the true value of the parameter being estimated. To be slightly more precise - consistency means that, as the sample size increases, the sampling distribution of the estimator becomes increasingly concentrated at the true parameter value.

An estimator is unbiased if, on average, it hits the true parameter value. That is, the mean of the sampling distribution of the estimator is equal to the true parameter value.

The two are not equivalent: Unbiasedness is a statement about the expected value of the sampling distribution of the estimator. Consistency is a statement about "where the sampling distribution of the estimator is going" as the sample size increases.

It certainly is possible for one condition to be satisfied but not the other - I will give two examples. For both examples consider a sample $X_1, ..., X_n$ from a $N(\mu, \sigma^2)$ population.

Unbiased but not consistent: Suppose you're estimating $\mu$. Then $X_1$ is an unbiased estimator of $\mu$ since $E(X_1) = \mu$. But, $X_1$ is not consistent since its distribution does not become more concentrated around $\mu$ as the sample size increases - it's always $N(\mu, \sigma^2)$!

Consistent but not unbiased: Suppose you're estimating $\sigma^2$. The maximum likelihood estimator is $$ \hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^{n} (X_i - \overline{X})^2 $$ where $\overline{X}$ is the sample mean. It is a fact that $$ E(\hat{\sigma}^2) = \frac{n-1}{n} \sigma^2 $$ which can be derived using the information here. Therefore $\hat{\sigma}^2$ is biased for any finite sample size. We can also easily derive that $${\rm var}(\hat{\sigma}^2) = \frac{ 2\sigma^4(n-1)}{n^2}$$ From these facts we can informally see that the distribution of $\hat{\sigma}^2$ is becoming more and more concentrated at $\sigma^2$ as the sample size increases since the mean is converging to $\sigma^2$ and the variance is converging to $0$. (Note: This does constitute a proof of consistency, using the same argument as the one used in the answer here)


Question: Although blue foods exist, they're rare enough compared to other foods for food preparers to use blue plasters as a convention. The natural colour of a given food is due to pigments that have some biological origin. Is there any evolutionary reason why these are rarely blue?

Short answer
Blue color is not only rare in edible organisms - Blue color is rare in both the animal and plant Kingdoms in general. In animals, blue coloring is generated through structural optic light effects, and not through colored pigments. In the few blue-colored plants, the blue color is generated by blue pigment, namely anthocyanins. The reason for the scarcity of blue pigments remains unknown as far as I know.
Background
The vast majority of animals are incapable of making blue pigments, but the reason appears to be unknown, according to NPR. In fact, not one vertebrate is known to be able to. Even brilliantly blue peacock feathers or a blue eye, for example, don't contain blue pigment. Instead, they all rely on structural colors to appear blue. Structural colors are brought about by the physical properties of delicately arranged micro- and nanostructures.
Blue morpho butterflies are a great example of a brilliant blue color brought about by structural colors. Morphos have a 6-inch wingspan — one side a dull brown and the other a vibrant, reflective blue. The butterflies have tiny transparent structures on the surface of their wings that scatter light in just the right way to make them appear a vibrant blue. But if you grind up the wings, the dust — robbed of its reflective prism structures — would just look gray or brown.
Similarly, the poison dart frog is blue because of the iridiphores in its skin, which contain no pigment but instead feature mirror-like plates that scatter and reflect blue light (source: By Bio).

Morpho and poison dart frog. sources: Wikipedia & LJN Herpetology
Similarly, in the Kingdom of plants less than 10 percent of the 280,000 species of flowering plants produce blue flowers. In fact, there is no true blue pigment in plants and blue is even more rare in foliage than it is in flowers. Blue hues in plants are also generated by floral trickery with the common red anthocyanin pigments. Plants tweak, or modify, the red anthocyanin pigments to make blue flowers, including pH shifts and mixing of pigments, molecules and ions. These complicated alterations, combined with reflected light through the pigments, create the blue hue (source: Mother Nature Network).
But why the blue pigments are so scarce, seems to be unknown as far as I know (MNN, NPR, Science blogs)
Sources
- MNN
- NPR
- Photobiology


Question:
I am trying to solving the advection equation but have a strange oscillation appearing in the solution when the wave reflects from the boundaries. If anybody has seen this artefact before I would be interested to know the cause and how to avoid it!
This is an animated gif, open in separate window to view the animation (it will only play once or not at once it has been cached!)

Notice that the propagation seems highly stable until the wave begins to reflect from the first boundary. What do you think could be happening here? I have spend a few days double checking my code and cannot find any errors. It is strange because there seems to be two propagating solutions: one positive and one negative; after the reflection from the first boundary. The solutions seems to be travelling along adjacent mesh points.
The implementation details follow.
The advection equation,
$\frac{\partial u}{\partial t} = \boldsymbol{v}\frac{\partial u}{\partial x}$
where $\boldsymbol{v}$ is the propagation velocity.
The Crank-Nicolson is an unconditionally (pdf link) stable discretization for the advection equation provided $u(x)$ is slowly varying in space (only contains low frequencies components when Fourier transformed).
The discretization I have applied is,
$    \frac{\phi_{j}^{n+1} - \phi_{j}^{n}}{\Delta t} =
    \boldsymbol{v} \left[ \frac{1-\beta}{2\Delta x} \left( \phi_{j+1}^{n} - \phi_{j-1}^{n} \right) + \frac{\beta}{2\Delta x} \left( \phi_{j+1}^{n+1} - \phi_{j-1}^{n+1} \right) \right]$
Putting the unknowns on the right-hand side enables this to be written in the linear form,
$\beta r\phi_{j-1}^{n+1} + \phi_{j}^{n+1} -\beta r\phi_{j+1}^{n+1} =  -(1-\beta)r\phi_{j-1}^{n} + \phi_{j}^{n} + (1-\beta)r\phi_{j+1}^{n}$
where $\beta=0.5$ (to take the time average evenly weighted between the present and future point) and $r=\boldsymbol{v}\frac{\Delta t}{2\Delta x}$.
These set of equation have the matrix form $A\cdot u^{n+1} = M\cdot u^n$, where,
$
  \boldsymbol{A} =
    \left(
    \begin{matrix}
      1                 & -\beta r        	&     				&       	&          0		\\
      \beta r    		& 1         		& -\beta r       	&     	    &		\\
              			&  \ddots   		&   \ddots  		& \ddots	&            		\\
						&                   & \beta r  		    & 1         & -\beta r 	        \\
                 0      &                   &      				& \beta r  	& 1          		\\
   \end{matrix}
   \right)
$
$
  \boldsymbol{M} =
    \left(
    \begin{matrix}
      1                    & (1 - \beta)r        		&     						&       	          &   0		 	        \\
      -(1 - \beta)r        & 1 			                & (1 - \beta)r 		        &		     	      &                     \\
              			   &  \ddots   					&   \ddots  				& \ddots			  &                     \\
						   &                            & -(1 - \beta)r  		    & 1	                  & (1 - \beta)r	\\
                 0         &                            &      						&-(1 - \beta)r        & 1	             \\
   \end{matrix}
   \right)
$
The vectors $u^n$ and $u^{n+1}$ are the known and unknown of the quantity we want to solve for.
I then apply closed Neumann boundary conditions on the left and right boundaries. By closed boundaries I mean $\frac{\partial u}{\partial x} = 0$ on both interfaces. For closed boundaries it turns out that (I won't show my working here) we just need to solve the above matrix equation. As pointed out by @DavidKetcheson, the above matrix equations actually describe Dirichlet boundary conditions. For Neumann boundary conditions,
$
  \boldsymbol{A} =
    \left(
    \begin{matrix}
      1                 & 0        	&     				&       	&          0		\\
      \beta r    		& 1         		& -\beta r       	&     	    &		\\
              			&  \ddots   		&   \ddots  		& \ddots	&            		\\
						&                   & \beta r  		    & 1         & -\beta r 	        \\
                 0      &                   &      				& 0  	& 1          		\\
   \end{matrix}
   \right)
$
Update
The behaviour seems fairly independent of the choice of constants I use, but these are the values for the plot you see above:

$\boldsymbol{v}$=2
dx=0.2
dt=0.005
$\sigma$=2 (Gaussian hwhm)
$\beta$=0.5

Update II
A simulation with non-zero diffusion coefficient, $D=1$ (see comments below), the oscillation goes away, but the wave no longer reflects!? I don't understand why?

The equation you're solving does not permit right-going solutions, so there is no such thing as a reflecting boundary condition for this equation.  If you consider the characteristics, you'll realize that you can only impose a boundary condition at the right boundary.  You are trying to impose a homogeneous Dirichlet boundary condition at the left boundary, which is mathematically invalid.
To reiterate: the method of characteristics says that the solution must be constant along any line of the form $x-\nu t = C$ for any constant $C$.  Thus the solution along the left boundary is determined by the solution at earlier times inside your problem domain; you cannot impose a solution there.
Unlike the equation, your numerical scheme does admit right-going solutions.  The right-going modes are referred to as parasitic modes and involve very high frequencies.  Notice that the right-going wave is a sawtooth wave packet, associated with the highest frequencies that can be represented on your grid.  That wave is purely a numerical artifact, created by your discretization.
For emphasis: you have not written down the full initial-boundary value problem that you are trying to solve.  If you do, it will be clear that it is not a mathematically well-posed problem.
I'm glad you posted this here, though, as it's a beautiful illustration of what can happen when you discretize a problem that's not well-posed, and of the phenomenon of parasitic modes.  A big +1 for your question from me.


Question:
I've been trying to answer my (high school) daughter's questions about the periodic table, and the reactivity series, but we keep hitting gaps in my knowledge.
So I showed that the noble gases have a full outer shell, which is why they don't react with anything. And then over the other side of the periodic table we have potassium and sodium, which have only one electron in their outer shell, which is what makes them so reactive, and at the top of our reactivity list. (And the bigger they get, the more reactive, which is why we were not allowed to play with caesium in class...)
But then we looked up gold, which is at the bottom of the reactivity series, and found it also has only one electron in its outermost shell (2-8-18-32-18-1).
Is there an easy explanation for why gold doesn't fizz like potassium when you drop it in water?
(This question could be rephrased as "What properties of each element decide their ranking in the metal reactivity series?" if you prefer; that was the original question we were trying to answer.)

First off, gold does react. You can form stable gold alloys and gold compounds. It's just hard, mostly for reasons explained by the other answer
The reason bulk gold solid is largely unreactive is because the electrons in gold fall at energies which few molecules or chemicals match (i.e., due to relativistic effects).
A nice summary of some work by Jens K. Norskov can be found here:

In their experiments, they distinguished between gold atoms' ability to break and form bonds and the ease with which they form new compounds, such as gold oxides. The two qualities are related: To make a compound, gold atoms must bond with other atoms, yet they cannot do so until they have sundered their bonds with neighboring gold atoms.

I think this is a nice succinct explanation. You always have this trade-off in reactions, but in gold, you don't get much energy in the new compound formation, and you're losing the gold-gold interactions.
You can, of course, react gold with aggressive reagents like aqua regia, a 3:1 mix of $\ce{HCl}$ and $\ce{HNO3}$.
If properly done, the product is $\ce{HAuCl4}$ or chloroauric acid.


Question:
According to the cross-correlation theorem : the cross-correlation between two signals is equal to the product of fourier transform of one signal multiplied by complex conjugate of fourier transform of another signal. After doing this, when we take the ifft of the product signal, we get a peak which indicates the shift between two signals.
I am not able to understand how this works? Why would i get a peak which indicates the shift between two signals. I got the math from :
but i am not able to understand as to what this means intuitatively. Can somebody please provide some explanation or point me to the right documents?
Thanks!

The concept is based on the convolution theorem, which states that for two signals $x(t)$ and $y(t)$, the product of their Fourier transforms $X(f)$ and $Y(f)$ is equal to the Fourier transform of the convolution of the two signals. That is:
$$
\mathcal{F}\{x(t) * y(t)\} = \mathcal{F}\{x(t)\}\mathcal{F}\{y(t)\}
$$
You can read more on the derivation of this theorem at the above Wikipedia link. Now, convolution is a very important operation for linear systems in itself, so the theory on its properties is well-developed.
However, what you're looking for is the cross-correlation between $x(t)$ and $y(t)$.
Here's the key: the cross-correlation integral is equivalent to the convolution integral if one of the input signals is conjugated and time-reversed. This allows you to utilize theory developed for evaluating convolutions (like frequency-domain techniques for calculating them quickly) and apply them to correlations.
In your example, you're calculating the following:
$$
\mathcal{F}\{x(t)\}\left(\mathcal{F}\{y(t)\}\right)^*
$$
Recall that in the Fourier domain, complex conjugation is equivalent to time reversal in the time domain (this follows directly from the definition of the Fourier transform). Therefore, using the first equation given above, we can state that:
$$
\mathcal{F}\{x(t) * y^*(-t)\} = \mathcal{F}\{x(t)\}\left(\mathcal{F}\{y(t)\}\right)^*
$$
If you then take the inverse Fourier transform of this equation, the signal you're left with is the cross-correlation between $x(t)$ and $y(t)$.
If you are working with real signals then we drop the complex conjugate in $y(t)$.
$$
\mathcal{F}\{x(t) * y(-t)\} = \mathcal{F}\{x(t)\}\left(\mathcal{F}\{y(t)\}\right)^*
$$
And it is very easy to see that for real signals, cross correlation and convolution are equivalent if we flip one of the signals in time. In this case the convolution operation flip in time domain is compensated with another flip in $y(t)$ to yield the cross correlation on the left hand side of the last equation.