COSC 120 (M.L.Malone's Sections)
Terms from Chapter One: Overview of Programming & Problem Solving
computer
A programmable electronic device that can store, retrieve, and process data according to instructions provided by a program.
program
An algorithm represented in a precise language that can be understood by a computer.
algorithm
A step by step procedure for solving a problem in a finite amount of time.
computer programming
The process of planning a sequence of steps for a computer to follow.
programming language
A set of rules, symbols, and special words used to construct a program.
Input device
Device which enables data and instructions to be entered into memory
Output device
Device which displays information in usable form, usually for people or other computers. Processing Unit Made up of the CPU and main memory.
CPU (Central Processing Unit)
Retrieves data and info from memory, manipulates it by performing arithmetic and logical instructions, and control activities needed to carry out these instructions.
ALU (Arithmetic-Logic Unit)
Component in the CPU which performs arithmetic & logical operations Control unit Component in the CPU which controls actions of other components so instructions will be executed in correct sequence.
Main memory
Collection of storage locations, each of which has an address, which stores data and instructions needed for the program currently running. Auxiliary (secondary) storage device Device which allows the computer to store (and later retrieve) data, programs, and info for long-term storage (not immediate use) Hardware Physical components of the computer.
Software
Set of one or more programs that tell the computer what to do.
Interactive system
One in which the user communicates directly with computer via (typically) a keyboard and screen.
Batch system
One in which all data are entered into file before the program is run. The user then waits until the program completes before accessing the output.
Operating system
Software that manages the computer's resources.
Machine language (1st generation)
A machine-dependent programming language which represents data and instructions as 1s and 0s.
Assembly language (2nd generation)
A machine-dependent programming language which allow the programmer to represent instructions using mnemonics such as "Add" and "Move". Requires an assembler to translate each instruction into the corresponding machine code.
High level language (3rd generation)
Machine-independent programming language (such as Pascal, C, C++, Basic, Ada, Fortran, COBOL) which use English-like instructions which make programming easier than with lower level languages. Requires a compiler to translate each instruction into machine code.
4th generation language (4GL)
A non-procedural "very high-level" language in which the programmer tells "what" is to be done without providing the details of how to do it.
Object-oriented language
Ex C++, Smalltalk, Eiffel, Object Pascal,... A language in which the programmer manipulates objects by sending messages to them. An object is a self-contained unit that contains both data and related operations to act on that data.
Editor (for use in programming)
(Word processor) Program which allows the programmer to create, modify, and save a program.
Compiler
Program which translates a program written in a high level language (understood by the programmer) into machine code (which the computer understands).
Analysis and specification phase of software development
Taking steps to define concisely and unambiguously WHAT the problem is and creating a specifications document to spell it out.
Design phase
Creating an algorithm to solve a problem which has already been specified.
Verifying a solution.
Confirming that the design does, indeed, solve the problem as stated in the specifications.
Implementation phase
Using a programming language to translate the algorithm into a computer program, thoroughly testing along the way.
Maintenance phase
Period when the program is in use but might be modified to meet changing needs or to fix errors which might crop up.
Divide & Conquer approach to solving problems
Looking for solutions to smaller parts of the problem, as in top-down design with stepwise refinement.
Top-down design with stepwise refinement
A divide and conquer approach to solving problems in which a problem is broken down into a small set of sub-problems and then, in turn, breaking each of them down into a small set of sub-problems and so on until the sub-problems become trivial.
Levels of abstraction
Different views of an algorithm from a high (abstract) level to a low (detailed) level.
Structure chart
Graphic way to represent an algorithm at several levels of abstraction. A tool for top-down design.
Root node
The top node in a structure chart, representing the original problem to be solved.
Leaf node
In a structure chart, a node from which no other nodes descend.