Firstly, doubledoctor's post touchs on some very important issues which you must consider and reflect on. My first year in engineering was a disaster as I lacked university level calculus and physics and the engineering courses were needless to say consequently very difficult for me... I only survived by the aid of a tutor/mentor/dear friend/genius in mathematics who had to teach me calculus from the basics while my engineering mathematics class was moving on to triple integrals...while I survived my cGPA was so dessimated that to bring in back to a level of respectability took years, and still while doing well in the subsequent years I was refused an acceptance everywhere I applied as that first year was never overlooked. Please do not allow this to dishearten you, perhaps you shall be more fortunate.
Most of the courses that you listed are mainly problem solving courses and you must adapt to analytical thinking and problem solving. Questions, questions and questions done and answers checked ARE A MUST, and you must understand underlying theories. GET OLD EXAMS, from your faculty of science student union or other sources and practice these questions after you have understood the theory. Not that these exact same questions will appear again; however, at least you will see HOW questions are asked and you can practice your problem solving skills while timing yourself...preparing for exams is like preparing for a battle...generally (no-pun intended) during the all important mid-terms and finals you don't have time to think and ponder the universe of the theory required to put down the correct answer...all that thinking MUST be done before the exam. Also in doing many high quality questions you will catch silly errors you may make and be able to flag them such that when you are doing your exam you shall be able to recall to be cautious at this or that step as you know where you tend to make errors.
As far as retaking certain classes...only if it will strengthen your foundation otherwise you may repeat the same errors...difficult to say