I did not have the chance to enroll in CS courses at my school (course schedule conflicts, classes filling up very quickly, etc), so I began to self study programming by following the syllabus of an essential CS course from SFU: CMPT 225 taught by Professor John Edgar.
This study method does lack exams and assignment feedback, therefore I have written tests for my programs as comprehensively as I could.
See my progress on GitHub.
Recently I also began summarizing/taking notes for the assignments.