Learning to Program Computers on Your Own
hello world
<script type="text/javascript" > alert( "Hello Javascript World!" ); </script>
firebug: a visual debugger for javascript
link to firebug
- Firebug
Open source project site for Firebug.
Why not start with Javascript?
I know you have Javascript available to you, because you are reading this hub.
Javascript is somewhat limited in its ability to input and output data, because of necessary security restrictions its browser based environment imposes, but it is a rich enough language that you can learn a lot of basic programming techniques from it.
If you use Firefox and install the Firebug component, you also get a decent development environment to watch it do its stuff from. All this is free and pretty convenient to setup.
...just a thought. Back to the larger topic.
What topics to look up for self directed study of computer programming
It used to be that in order to learn to program, you needed to be a member of some special group. If you were a student, your University might give you access to computers, if you took relevant courses. Or, you might have access to a computer through your employer. However, if you weren't a member of such a group, you were pretty much out of luck.
Fortunately, today if you just have a PC and access to the internet, you have all you need to learn computer programming. Academics worry a lot about what is a good first language to teach, whether it contains the essential programming concepts of the time, whether it is simple enough to teach a beginner, and so on. Non-academics worry about what language is most in demand in the job market. Conversely, I think any programming language could be used as a starting point for learning. Once you learn one language, you can learn others as you need them. A number of languages are available as open source projects C/C++ (via gcc), Perl, Python, PHP, Ruby, etc., or Javascript is already available within your browser. You just need to pick a starting point.
What I think a self-directed learner would have difficulty with is knowing what concepts to study.
If you know what your are looking for, you can probably google what you need. The trick is in
knowing what to look for. This is, perhaps, where I can help, maybe, not just beginners but also those who want to fill in some gaps in their knowledge. Below I have a rough outline of topics I think every programmer should know.
data representation
in memory: integers, floats, bits, pointers ...
persistent: databases, files ...
control flow
branches, loops, subroutines and functions
algorithms and data structures
sorting and searching, trees, graphs, hashes, stacks
computational complexity
big-O, NP complete/hard
conceptual frameworks
objects, design patterns
working with others
projects: source code, build, test, roll out, monitor
networks: protocols, security
sylabi
- Stanford CS 107 Syllabus
A Computer Science Course at Stanford - Harvard CS 50 Syllabus
A description of the content for a beginning computer science course.