What is a computer?
To ask what a computer is we must first define what type of computer. A computer is someone or something that does computations, usually assumed to be quite complicated calculations. In the movie Hidden Figures you probably noticed they referred to Katherine Johnson, Dorothy Vaughan, and Mary Jackson as “computers.” That was not just something for the movie, that is indeed what people who did complicated calculations were called in real life. You might also have notice that one of the characters, Dorothy Vaughan, taught herself FORTRAN (a very smart move) so that she could transfer over to working with Electronic Computers.
When we refer to computers today we are referring to Electronic Computers. Electronic computers are an electronic machine that does not think but carries out our instructions (commands). They are generally faster then human computers, but they don’t think like human computers and they still need a thinking person to provide them with instructions. Anyone can do this, but for complicated calculations like you might find at NASA you would have an engineer, computer scientist, scientist, or someone studying to enter one of these fields preparing these instructions. From here on any reference to computers will mean electronic computers.
In the previous chapter we discussed the differences between engineers and scientists, but we only lightly touched on computer scientists. Academically there are different types of computer science degrees. For engineering students the distinction is important as other computer science tracks are not sufficient.
This course will focus on “GNU Octave“/MATLAB/Scilab but also explore Fortran, C++, Python, IDL/PV-Wave, LISP, and Spice. Why study many different languages? Because the main objective is to study the theory which will allow an engineer to master programming in almost any of the over 200 programming languages in the “real” world. When going out to a new job or academic/research center it is impossible to predict what programming languages will be primarily used so it is important to create as large a toolbox as you can before you go off to the “real” world. Why is the most popular language Java not in this list? Because this is an engineering/science course and Java is not as relevant in this world, but the study of the theory should allow you to learn Java on your own if you wish.
There are a vast array of ideas you can program into a computer using the languages described above. The program language themselves give a high level of flexibility. A range of programs can be written from very simple programs to fairly difficult programs. While a simple program can be programmed by just about anyone, ones that require difficult concepts need skilled practitioners in the field. This course assumes an engineering perspective (BS) and will therefore assume that you are in a science/engineering track (or interested in that track). This will mean the programs discussed and ask for here will assume a high level of mathematical understanding and the ability to create a complex program.
Programming large complicated systems can be very difficult for a typical programmer even a practitioner of the field. In these cases teams of people program the programs with (interestingly) programs that help them work together without over-writing each others work. As an engineer/scientist you might find yourself as part of a team writing these programs or you might find yourself using the final product. Let’s discuss more about the final product.