Well, there definitely are some crackpot teachers out there. My general chemistry high school teacher was terrible. Fortunately, I had a much better teacher the next year for AP. Anyway, back to the subject at hand.
If we continue along the pathway of teaching oxidation numbers by the counting method, we still have the problem of having quite a few exceptions to the rule. I was looking through my gen chem books at home, and they have some of these compounds (one even had sodium thiosulfate!) listed in their problem sets, and their answers were given incorrectly--they used the methods that I had illustrated earlier in the HS forum. If we point out how to approach the problem, then we are essentially teaching two methods of doing the same thing, are we not? I dunno, I hate redundancy for things like this, because they can get confused.
How about this, at least as a start. Add, change, edit, whatever, how you like. I'm trying to come up with a general algorithm that will hold for as many compounds as possible.
Steps for obtaining correct oxidation numbers:
1. Draw (or look up) the correct lewis structure of the compound in question, including labelling formal charge, etc.
2. Count the number of bonds around each atom, counting in the following manner:
- If the bond attaches to a more electronegative atom, count it as -1
- If the bond attaches to a less electronegative atom, count it as +1
- If the bond attaches to an atom of the same type, count it as 0
- Add any formal charge that may be on the atom
3. Add up the numbers to give you an oxidation number for the atom in question.
This doesn't hold for everything. Looking at the peroxydisulfate anion it seems to, but the thiosulfate doesn't. In the peroxydisulfate, each sulfur has a +6, and all oxygens but the peroxides have -2, and the peroxide oxygens have -1. In the thiosulfate, using this algorithm, the sulfur doubly bound to the central sulfur has an oxidation state of 0. Hmm. Maybe instead of 'attaches to an atom of the same type' we could say 'attaches to an atom of the same type in a chemically equivalent environment.' Does that solve our problem? I don't really know if a simple algorithm is doable, but I think it would be useful to see if we can make one. What do y'all think?