The Fundamentals of Computer Science

The Concept of Linear Progression  

In spite of present day computer operations that seem to be doing several things at once, most computers can really only implement one action, or instruction, at a time.  Once a computer implements an action, it is ready to go on to the next step.  While a program may choose to change the next appropriate action, it  will still only do one instruction or command after another.  This is a simple, but important concept to keep in mind when designing and/or analyzing a given set of program code.  Each step in a program, whether a line of code, or a call to a subroutine, is just that . . . one step.

The Concept of Symbolic Representation - Data  

Very much like Algebra, a significant part of a computer's operation is centered around symbolic quantities, called variables, that can represent any of a given set of numeric or other values.  The set of values stored in a given variable may be limited to only integers, or floating point values, or a computer character set; these are called the data type of the variable.  Every student must understand that the variable can and will represent an actual value during processing.  However, during programming, the student must understand that the variable may represent any value within the constraints of its data type.

The Concept of Symbolic Representation - Actions  

Other quantities that must be abstracted, or act as symbols, are the subroutines used in computer programs.  These may be called functions, methods, routines, and so on.  The task of a subroutine is to implement some defined action with the data or resources it has been provided.  There are times a student will be told to create a subroutine, given the specific conditions, and there are times a student must use a subroutine, again given the specific conditions of the subroutine.  For using a subroutine in this kind of condition, the student will commonly not know what code is in it, or how it works.  The key to demonstrating the student's knowledge is that s/he can use the subroutine properly as a "black box", without knowledge of its inner workings..

The Concept of Decision Making  

Most computer programs would not be very effective if they repeated the same process over and over without the ability to adapt to the data or the use of the program.  Students must be able to recognize the changes of path, or branching, that a program may implement.  They must be able to analyze a program and know what logical conditions will lead to what actions, and they must be able to create their own branching conditions using appropriate logical conditions and actions.

The Concept of Repeated Operations  

The value of using a computer is that it can implement several tasks in a very short period of time.  However, a computer needs to be able to repeat given tasks several times to gain value from its innate computing speed.  Students must be able to analyze how many times a loop will iterate in a given set of code, and what the results will be when the loop has finished.  And again, students must be able to create loops that will iterate a specified number of times for the given conditions, and properly implement the appropriate task(s). 

The Concept of Data Storage and Retrieval  

Since computer programs can manage large amounts of data, and process them in short time frames, something needs to be done about storing the data that has been processed for later viewing or further processing.  Students must be able to implement data storage from a given program to a given data storage format, and they must be able to return or restore the data to the program correctly so that it can be used in whatever next process steps are to occur.

The Concept of Data Management  

Students need to recognize that data can be packaged or structured in such a way that it can provide more than just integer or floating point data.  Some data might hold arrays of characters, or strings, and be able to provide actions and/or data components related to the string data.  Some data quantities might be able to represent more "real-life" things, like fish, airplanes, or bank accounts.  These things are more complex (i.e., they have several smaller components) than simple data, but they are of great value in helping programmers create more powerful and robust programs.  Students must be able to use these tools, given only the specifications, and in some cases, students will be required to implement the creation and/or modification of these tools.

eTTe Home