Aggression towards children, bicycles, and cats

Hello,

I hope some of you can give us some advice on our problem.  To start off, we adopted Shadow from a local shelter almost a year ago.  Unfortunately, the shelter did not know the history of Shadow as he was transferred from the Philadelphia shelter.  He is a mix between a Spaniel and a Border Collie and so far he is the sweetest dog.  He is calm and laid back, loves people (adults), does well with commands (sit, come, down, stay) and on the leash. 

However, we first started noticing his aggression towards little children.  It started a few months after we got him when we were coming back to our apt. from our walk when our neighbor's door opened and their child was standing there.  They asked if they could pet the puppy and I said sure (not knowing his aggression yet).  The child proceeds to pet him and all of a sudden, like a switch he growls and snaps at the child.  Luckily I had the leash locked, a hard tug on his collar and a big NO and I got him back towards me.  I apologized and they were ok.Two more similar instances after that happened, one with another neighbor and her child and a family friend and her child.  All children were around 1 to 3 years of age.  We've had friends and their children (a little older) visit us and we tell them to ignore him.  He ignores them but sometimes seems a little apprehensive.

It is the same with bicycles and cats.  When we are out on our walks and sees either one of them he turns from this calm puppy to a snarling ball of fur and tries to take off after them.  He will ignore our commands and we have to brace ourselves on the leash as he will pull hard.  Only a hard pull on the leash/training collar will get his attention and calm him down.  It gives us concerns as my Fiancee and I love Shadow soo much and someday we will be having children of our own and we worry about their safety (children and dog).


Other than that, he loves coming up to people and strangers too happily greeting them.  Any advice on this behavior?

Thanks.