I have a story that is too long here about my struggles with math in high school, and while I'm maybe not the model CS student for a variety of related reasons, I think that I turned out mostly fine...
None of the symbolic manipulation really made sense to me until I started learning programming (and, much later, mathematical foundations) and how to define these operations. The answer to "Why isn't sqrt(x+y) = sqrt(x) + sqrt(y)" shouldn't be "It's not in the table of 'laws' we're allowed to use". Sure, you can (easily) provide examples where that purported identity is false, but trying to understand why was really hard for me, and I wouldn't accept it until I understood why.
None of the symbolic manipulation really made sense to me until I started learning programming (and, much later, mathematical foundations) and how to define these operations. The answer to "Why isn't sqrt(x+y) = sqrt(x) + sqrt(y)" shouldn't be "It's not in the table of 'laws' we're allowed to use". Sure, you can (easily) provide examples where that purported identity is false, but trying to understand why was really hard for me, and I wouldn't accept it until I understood why.
/ramble