Study Advice for a CS Student
I will only answer the 1st question (as Ben says move the 2nd to a new question (the rule is, one question per question)).
So you want to get good a programming.
Where to start
The first thing to do is to stop cheating (your are harming your-self). You will have to start with much easier problems, than you are currently on (It will seem that you are going backwards).
Practice
Then you need to practice, practice, practice. There is an exercise called programming kata, where you just do the same exercise over and over, until you master it.
To copy or not to copy
If you do copy code, then:

you have not mastered it yet, so you will have to repeat the exercise.
copy from your previous projects, not the internet or other people.
don't paste code, type it.
if you have to use the internet/book/other-people, then use reference manuals, Don't copy completed solutions.

Reading and writting
To learn to write, first learn to read. Therefore read other peoples code. It is OK to read solutions. Read then, study them, understand them. Then do the exercise yourself. (It is not about memorising, it is about understanding.)
Choice of language
The language you use will have a big effect. Some languages are unsuited as a beginner language.
e.g. Javascript is not a good choice of language, for learning to program.