Short answer: there is no easy way to disable the translation to the un-shifted version of the binding.
If you want to find unbound key sequences, you can try M-x describe-unbound-keys. And it does indeed find that C-S-up is unbound (enter 15 when prompted for complexity).
The command describe-unbound-keys can be found in the unbound library which is available here on the wiki.
Longer answer:
The relevant documentation can be found in Key Sequence Input which states:
If an input character is upper-case (or has the shift modifier) and
has no key binding, but its lower-case equivalent has one, then
read-key-sequence converts the character to lower case. Note that
lookup-key does not perform case conversion in this way.
It's obvious you don't like that behavior, but to change this particular translation, you'd have to modify keyboard.c in the Emacs source code - look for the comment:
/* If KEY is not defined in any of the keymaps,
and cannot be part of a function key or translation,
and is a shifted function key,
use the corresponding unshifted function key instead. */
and disable the if statement that follows it.
In general, the keyboard translations exist for other reasons (as mentioned in the documentation link at the top of this answer) and you can customize them by customizing the various keymaps it mentions.
C-S-yis unassigned!" So Mr Algorithm then thinks: "Well he probably meantC-y, so lets yank!" .. But, unbeknown to Mr Algorithm, I actually mistypedC-S-u(today), and the other day (many days actually), I was just testing for unassigned keys viaC-h kand kept getting presented with unnecessary descriptions of a down-keyed functions which I have no interest in.. I don't understand why, nor the algorithm. – Peter.O Nov 29 '11 at 16:18