Learning to Program Computers on Your Own

hello world

<script type="text/javascript" >
	alert( "Hello Javascript World!" );

firebug: a visual debugger for javascript

screen-shot of firebug
screen-shot of 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

Comments 1 comment

simeonvisser profile image

simeonvisser 5 years ago

Just a tip: if you wish to improve your writing style you should guide the reader more. I'm familiar with what you are talking about but you should have an introduction that tells people about JavaScript, what is Firebug and why do I need it, why should I start with JavaScript when I wish to program computers on my own, and so on.

Adding such information will improve the quality of your hub and will make it accessible to a wider audience. If you are new to programming then reading an article that starts with code won't be effective.

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.

    More by this Author

    Click to Rate This Article