Computer Science



computer science is a secondary topic

computer science sub topics

Computer science is, most fundamentally, the study of computer programming. It also involves theories related to programs, how they function, and theoretical approaches to neural networks and artificial intelligence.

Computer engineering is more the physical instantiation or hardware design end of computer research but both computer engineers and computer scientists must work together and have a good knowledge of what the other side is doing and how. It may be argued that any hardware can be simulated in other ways on different hardware but the programs and logic and mathematical operations must take place somewhere in space and time; somewhere like a microprocessor or in memory cards.

Exotic computers, such as, in my opinion, a human brain, are biochemical-electrical parallel computers with amazing capacities to store and manipulate information from memory and the various senses. Many will argue that the human is not a robot and the brain is not a computer but I would say just the opposite: humans are the most complex and elegant machines we generally know of. Perhaps there are alien beings so much more advanced than us that we can not even fathom how primitive we are to them or they are to some even greater god-like beings that may exist.

Computer programming for normal computers (as opposed to exotic computers) begins at the machine level where each bit, or element, the computer processes is either a 1 or a 0. A series of 8 bits refers to one of 256 possible values, called a byte. For example, the 8 bits "01111010" represent the letter "z" as one byte of information.

All computer programming languages have a syntax. One of the most popular forms of computer programming today in 2010 is C++.

I have begun a tutorial on C++ that will eventually cover topics like input, output, file manipulation, functions, multi-dimensional arrays, loops, pointers, types, classes, and object-oriented programming style. C++ is the child of C and the client-side language Java is largely a simplified child of C++.

I have left this page open and as a secondary page because I intend to write about other programming languages, beginning with Assembly Language and eventually BASIC, Java, and Perl as my studies continue. I have a good grasp of many of these languages already, but the confidence to write a tutorial takes some degree of mastery or else stupidity. I am gifted with one or the other I suppose.

To cover all languages with any detail would be a compendious and unnecessary undertaking as the theory behind computer languages remains fundamentally unchanged while languages are being invented constantly.

What follows is an extremely condensed numbered tutorial that covers all of the basic theoretical and universal aspects of most programming languages with some mention of specific languages. If you can grasp all that follows, implementing programs is only a step away.

I admit that the amount of specific keywords, formatting, and syntax of particular languages can be a bit daunting but it is certainly no harder than learning a foreign language with some simple math and logic thrown in.


Highly Condensed Computer Programming Theory Tutorial:
_____________________________________________________________________

[1.] All computer languages are basically a list of instructions for the computer to interpret. Computer programming is writing in one of the languages that have been invented by humans to do so just as speaking is using invented language to communicate about the world.

Most modern computers use a binary system at their fundamental heart, meaning that, ultimately, all computer instructions and memory constitute either an on (1) or off (0) state.

[2.] All computer languages incorporate the principles of basic arithmetic, logic, and, to some degree or another, the use of variables. One need not have any more understanding in math or logic or linguistics than a simple basic introduction to understand and begin to program on a computer. It is not nearly as hard as many people think it is and one need only take the time to learn in order to do it should one so choose.

I began programming in BASIC and C at the age of 8 in my own and in my friends' explorations of languages that were available either on the computer or at the store. A good enough teacher can perhaps, teach almost anything to anyone.

[3.] All computer languages can use variables to hold numerical amounts as well as, unlike in mathematics, variables that hold information about characters, strings of characters, or information about the memory addresses of the computer. So, variables can hold the following: (a) numbers, (b) letters, (c) strings of letters, and (d) memory addresses.

[4.] Variables that hold (a) numbers can be multidimensional in that they can hold X dimensions of arrays of numbers if they are defined as such.

[5.] Variables that hold (b) letters can be thought of as units of (c) strings of letters and, like (a) numbers, (c) strings of letters can be two-dimensional lists of strings of numbers.

[6.] Computer languages use loops that test for some condition to end the loop. This is how your keyboard essentially waits, in a program loop, for you to input a keystroke in a particular program. Loops can fill arrays by scanning the elements of arrays and assigning values to each spot in the array.

[7.] Most modern computer languages utilize the concept of a function. A function, though the idea can be intimidating, is actually just a case where something is done to perform a function. You use your broom to sweep the floor, therefore, its function is to sweep the floor when used. A function on a computer, for instance, may function to sweep the memory of the computer clean.

[7.1] So, when the broom is accessed and when the function to sweep the computer's memory is accessed, we can do things with these functional objects or computer codes.

A function in mathematics and a function in computer programming are essentially the same in that they are able to take an input and produce an output. If I say my function is defined as returning the value multiplied by zero, then we can easily see, that no matter what we input, numerically, into the function, we will output zero.

[8.] All computer languages use some form of logic to work on variables and/or strings of characters or memory addresses. Most computer programs have symbols that represent [AND], [OR], [XOR] and [IF, THEN, ELSE] type statements.

[9.] Many computer languages allow the programmer to access both input and output functions.

[10.] Input functions include accessing peripheral mechanisms of user interface such as the keyboard, mouse, speakers, and camera.

[11.] Output functions include creating data structures in the form of pixels on the screen or sounds on the speakers so that human users can interface with such programs.

[12.] Individual programs have more or less access to memory and basic machine level intstructions. The deeper the language, the more difficult and problematic errors can be. The higher the program, the more like natural language it will appear and its function will be limited in memory and access to the computer.

[12.1] The deepest language is called Assembly Language and is the most difficult to understand largely because it has to be very much in the language of the machine at its most basic, binary level.

The highest language would be BASIC or something like it, in that, it almost reads easier than symbolic logic or math and one can translate lines rather easily into natural language. A powerful intermediate language that is commonly used is C++ which is somewhere between a powerful low-level language and an easily understood high-level language.

[12.2] What's the best to use? I would suggest learning C++ first because it best encapsulates modern "object-oriented" programming that uses functional structures more elegant than simple lists found in Assembly and BASIC languages. BASIC is great if you want to do something extrememly simple and it is good for young programmers.

[12.3] What is meant by "Visual" versions of all of these programs, such as "Visual C" or "Visual BASIC" are programming languages derived from their non-visual predecessors, and that are geared towards and with graphical emphasis such as the windowed environments of modern computer operating systems. Most computer operating systems today are based on some C or C++ architecture.

[13.] All computer screens on all systems and at all sizes are simply X and Y coordinate planes. All computer resolutions or (LCD or television screen resolutions) simply refer to the number of horizontal (X) pixels and vertical (Y) pixels it is capable of displaying.

Pixel ranges as of 2010 on most computers range from the ancient 640x480 to some 1680x1050 and beyond.

[14.] All three-dimensional games, graphics, and movie animation is done by using the (Z) coordinate (3-D) additional dimension and using various mathematical procedures to move pixels in an apparent three dimensions on a two-dimensional surface.

If something is getting father away, think of it as the (Z) dimension increasing, just as an increase in the (X) dimension typically moves something to the right and an increase in the (Y) dimension typically moves something up. Think of the upper-right quadrant of a cartesian coordinate plane, and this is your typical computer display.

[15.] Computer memory stores nothing more than instances of (1)s and (0)s in sequences that represent bytes (8 bits is a byte), bytes which represent characters, and characters which represent sounds, images, text documents, and programs.

[16.] Object-Oriented programming refers to languages that are broken up into conceptual parts and depend on functional architecture more complex than simple lists or GOTO statements that call a line rather than an object.

[17.] Perhaps one of the most fascinating examples of computers doing things we can not do is the creation of microprocessors that are no more than forests of transistors, so tightly packed and arranged, that no human could possibly accomplish it without the aid of robots.

[18.] The possibilities for the complexity of data structures in and with computers is infinite and is limited to only the memory and time and space the computer occupies.

 



Unless otherwise noted, all content on this site is by Anthony Peter Iannini, copyright 2011+ email: anthony@artbyai.com