As you can see, I’m switching from measuring this series in “weeks” to “parts.” My time constraints vary week to week and this will give me more freedom to post as I learn stuff.
I figured I’d start searching around to see if I could find a guide for learning to program. NetTuts, as per normal, offered the best free guide to learning PHP during my cursory exploration. Eventually though, I stumbled across the site LectureFox, which makes available a list of courses in Computer Science (among a few other categories) offered by a few different universities. They just so happen to be some of the best ones as well. MIT, Harvard, and UC Berkley being among the most exciting. In these courses I think I’ve found, not just a guide to programming, but several guides accompanied with semesters worth of lectures!
Needless to say I’m pretty excited at the prospect of challenging myself with education of that level. Most of the universities I’ve looked at so far offer the lectures on video with accompanying course syllabubs, notes, slides, and Harvard even has all of the accompanying help sessions. I’ve gone through the introductory lectures of two of the three schools listed above and I think I’ve decided to make the Harvard CS50 course (computer science 50) the main course of focus doing the problem sets (homework) while using the others as supplementary lectures without doing the coursework. The professor of Harvard’s CS50 course is pretty charismatic and easy to listen to, the videos are of higher quality than the other two, and the syllabus indicates that they will actually dive into HTML, CSS, and PHP by the time the course ends – all of which make this course seem best to me.
I will note though, that UC Berkley’s first lecture, was pretty interesting. The prof talked about “abstraction” which is basically the removing of data which is unnecessary to the current situation or arena focus. This applies to coding in two ways. Firstly, as a general concept, computer science allows us to create solutions to problems in such a way that it gives access to a great number of people. This is so because we are able to reduce the amount of knowledge and effort required to perform some type of work or solve some type of problem. In turn, the amount of people who possess the necessary skill set to complete an abstracted task increases. Secondly, this applies to writing code specifically through the creation of libraries and or even through local functions which allow the performing of tasks or solving of problems much more quickly because less code has to be written. Code libraries essentially allow developers to pull from the collective knowledge of other developers which have already solved many problems which reduces the overall time it takes to solve problems generally. Functions allow for quicker development time because a function can be used over and over again instead of having to write out computer code each time those lines of code need to be used. All of these are examples of abstraction and will be very helpful as I continue to learn the basics of computer science and how to write programs.
Though I’ve skipped the first problem set (homework) for CS50, I’ve set another goal for myself instead. The first “p set” had to do with a program called Scratch that is a program designed to allow beginning computer programmers to get a grasp of how to use operators, conditions, functions, and variables without learning the syntax of traditional languages such as C. The goal I’ve set for myself instead is to create a page on Scepter’s website to allow my customers to piece together their own WordPress Website. I initially purchased a plugin from CodeCanyon, but it allowed hardly any customization, so I’ve decided to use it as a reference for creating my own. It’ll be my first jQuery project and much more helpful, I think, than spending too much time on Scratch.