Generally enjoying programming is a good sign. Being up to date on math helps but is more tangentially related. Taking an online course is a good way to see if you enjoy it as well.
There are many CS majors that go in with no CS experience or preparation and do very well. There are others that find out it isn’t for them. It’s really just a matter of finding out if CS suits you. If it doesn’t, trying to force yourself to get through will not work out long term. I am a TA for the intro course at Northeastern, and I haven’t seen this work out in over 4 semesters on the job.
Reading through your post and previous threads, Tufts seems like an odd choice for CS and your interests/profile/preferences. You mentioned a possible ED2 there, but Northeastern’s EA decision date has been pushed to February 1st, so that would not work as planned there, and your RD acceptance chances are low. I would second the suggestion for URochester that was given on that thread as it will offer the smaller CS department compared to other places, many features of Tufts, and arguably even the better CS department.
Other good options if you are sure you are going into STEM are RPI and WPI.
This is an essay on Northeastern’s CS program, but the intro sequence has been used by many schools and details a bit of what is important for learning CS. WPI also uses a variation on the curriculum. Waterloo also does and may be of interest to you due to their strength in CS and their co-op program. It would likely be a reach school but one that is well worth it.
http://www.ccs.neu.edu/home/matthias/Thoughts/Growing_a_Programmer.html
It sounds like you’re already doing everything you can. If you have doubts, I would recommend making sure the school you go to has general strength in other areas of interest.
Good luck!