Introduction: Computers, Computer Software and Our Approach


Our approach

Computers contain processors capapable of performing millions or billions of very simple instructions per second. By themselves, those processors are raw tools with tremendous potential, but they are difficult to harness and control. Computer software is what controls the processor by carefully telling it which instructions to perform.

Pieces of computer software are also called computer programs. It is common to use the word program to describe somewhat smaller things with quite limited functionality, and software to describe larger things that are much more versatile.

There are three common approaches to studying computer software.

  1. The most common approach is to study how to use one or more particular pieces of software. That, for example, is what a course on Microsoft Office does. More involved courses show how to configure and control an operating system (a very large and complex piece of software).

  2. Another approach is concerned not just with using software but with creating your own software. The simplest approach to that is to learn how to use prebuilt components and tools, putting the components together to make a piece of software containing just the components that you want it to contain. That allows you quickly to create some impressive software.

    But it also limits you to what is available. You can only include components that have already been created, by somebody else. If you want something that is not available, you find yourself waiting around for the next version of the prebuilt components, hoping that what you want has been added. You are completely at the mercy of other software developers.

  3. A third approach also shows you how to create your own software, but it works from the most basic concepts upwards, showing you how to create the elementary components yourself.

    This approach is slower and more methodical, and requires work and patience, but it liberates you to do things that you could not do by any other means.

This course takes the third approach. We will begin with the most basic concepts and work upwards to small components, then small computer programs, aiming toward larger programs. That does not preclude using prebuilt components. Once you know the basics, it is easy to include some tools that make the job easier. But our focus is on the do-it-yourself approach.

Our approach takes time and dedication, and cannot really be completed in one semester. Other courses that follow this one take the ideas developed here and apply them to creating larger computer programs and software.


Why bother to create new software?

With the widespread availability of software for a myriad of purposes, it is reasonable to ask why anyone would want to learn to create new software. Why not just get what you want over the internet?

First, you should ask yourself who created all of that software that is available to you. It did not create itself. More is being added every day. Do you want to understand how that new software is being built, and have the capability to build your own?

Second, even if you only understand how to create small programs, there are still a lot of useful things that you can do. When faced with a repetitive task, you can ask yourself how you might automate it. A small program often called a script does a small job for you, freeing you to spend your time on less boring things. Your particular job might not be exactly the same as somebody else's job, and you find yourself needing a custom script. If you know how to write programs, you can throw together a script fairly quickly.


What if I don't need to create new software?

Even if you personally do not create software, there are good reasons for studying how it is done.

  1. Knowing how programs work helps you to understand what software is doing and what it is capable of, even when you only end up using the software.

  2. Studying programming helps you to learn how to think carefully and precisely. That, in turn, is useful in other disciplines.

  3. Carrying the previous point further, understanding the kind of detailed instructions that are necessary for writing a computer program helps you to know how well or poorly you understand a concept. If you can imagine how to program a computer to solve a problem, you can be sure that you understand that problem very well, even if you do not go to the trouble of writing the program.


What you need to bring to this course

The most important thing for you to bring to this course is your life experience. Do not forget what you know. Be ready to apply ideas that you learned elsewhere.

Although you will need to memorize a few things, this is not a memorization course. You will not be given detailed instructions to memorize. Instead, you will study general rules, as well as several examples of them. When you see a new problem, you will need not merely to repeat an example that you have seen previously, but to think about how to use the same ideas in a slightly different way.

Allow yourself to try some ideas. Your first idea often is not exactly right, but it often has the seeds of a correct idea. Explore possibilities.