# Information Systems/Programming

Programming is the craft of writing useful, maintainable, and extensible source code which can be interpreted or compiled by a computing system to perform a meaningful task.

## Objectives and Skills

Objectives and skills for the programming portion of CLEP Information Systems include:
* Programming logic (Boolean, algorithmic, order of operations, SQL)
* Methodologies (object-oriented, structured)
* Data (concepts, types, structures, digital representation of data)
* File (types, structures)

## Readings

* Wikibooks: Introduction to Computer Information Systems/Program Development
* Wikipedia: Computer programming
* Wikipedia: Order of operations
* Wikipedia: Object-oriented programming
* Wikipedia: Structured programming
* Wikipedia: Data type
* Wikipedia: Computer file
* Wikipedia: SQL
* Wikipedia: Source code

## Multimedia

* Khan Academy: Introduction to Computer Programming
* YouTube: Introduction to Programming
* YouTube: How does structured programming work?
* YouTube: What is an API?
* YouTube: Programming Words
* YouTube: Software Development Lifecycle in 9 Minutes!

## Activities

* Learn programming concepts by playing a computer game at Code.org.
* Review the TIOBE: Software Index. Identify currently popular programming languages. If your organization does software development, find out what programming languages are used and where they fall on the software index. Otherwise, check programming classes available at your school and find out what languages are taught and where they fall on the software index.
* Complete one or more of the drag-and-drop programming tutorials at Code.org: Learn.
* Complete the dungeon levels of the first lesson of CodeCombat.
* Review Wikipedia: Macro (computer science) and complete the tutorial Microsoft: Save Time by Creating and Running Macros in Excel 2010 or complete one or more of the Excel Easy: VBA programming tutorials.
* Download the Visual Logic flowchart / coding tool and complete the tutorial.
* Review Wikipedia: Structured programming and Wikipedia: Diagramming software. Select a diagramming program and create a flowchart that includes examples of sequence, condition/selection, and loop/iteration structures.
* Review Wikipedia: Computer science and Wikipedia: Computer programming. Consider the differences between writing a program and designing an information system.
* Create a free account with Codecademy and start learning coding.
* Complete the Debugging JavaScript in Chrome at Google.com: JavaScript.

## Research and Discussion

* When people and computers are creating a program, users generally blame the computer. Do you think it is more likely that a computer or a person would be responsible for a serious system problem? Support your answer.
* New programming languages are developed to meet different user needs. Identify and research one new programming language that interests you. Determine the purpose of the program and what it is used for. Is this a program that would be useful for you? Why or why not.
* Describe a computer program that you use at your workplace. Does this program enhance and support your job experience? Explain.

## Lesson Summary

* Computer programming is a process that leads from an original formulation of a computing problem to executable computer programs.
* Programming involves activities such as analysis, developing understanding, generating algorithms, verification of requirements of algorithms, and implementation (commonly referred to as coding) of algorithms in a target programming language.
* Source code is written in one or more programming languages. Popular programming languages include Java, C, C++, C#, and Python.
* Programming quality is measured by:
** Reliability: how often the results of a program are correct.
** Robustness: how well a program anticipates problems due to errors (not bugs).
** Usability: the ease with which a person can use the program for its intended purpose.
** Portability: the range of computer hardware and operating system platforms on which the source code of a program can be compiled/interpreted and run.
** Maintainability: the ease with which a program can be modified by its present or future developers in order to make improvements.
** Efficiency: the amount of system resources a program consumes.
* Most programming languages follow the order of operations commonly used in mathematics of Parentheses, Exponents, Multiplication, Division, Addition, and Subtraction, or PEMDAS.
* Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.
* Most popular object-oriented programming languages are class-based, meaning that objects are instances of classes, which typically also determines their type.
* Popular object-oriented programming languages include Java, C++, C#, and Python.
* Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops—in contrast to using simple tests and jumps such as the goto statement which could lead to "spaghetti code", which is difficult both to follow and to maintain.
* Structured programming uses three control structures — sequencing, selection (conditions), and iteration (loops) — to define any program or function.
* Structured query language (SQL) is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS).
* A data type is a classification identifying one of various types of data, such as integer, floating-point number, Boolean, character, or string, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of that type are stored.
* At the machine level, data types correspond to the sizes of system memory locations and processor data containers (registers) and supporting instructions.
* A computer file is a resource for storing information, which is available to a computer program and is usually based on some kind of durable storage.

## Key Terms
### acceptance testing (beta testing/application testing/end user testing)

    A test conducted to determine if the requirements of a specification or contract are met.

### advanced business application programming (ABAP)

    A high-level programming language created by the German software company SAP SE.

### algorithm

    A self-contained step-by-step set of operations to be performed.

### applet

    Any small application that performs one specific task that runs within the scope of a dedicated widget engine or a larger program, often as a plug-in. The term is frequently used to refer to a Java applet, a program written in the Java programming language that is designed to be placed on a web page.

### assembly language

    A low-level programming language.

### Boolean

    A data type having two values (usually denoted true and false), intended to represent the truth values of logic and Boolean algebra.

### bug

    An error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.

### C

    A general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.

### C++

    A general-purpose programming language that has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation.

### compiler

    A program that reads source code, translates it into machine language, and writes the machine language to binary (object) code that can be directly loaded and executed.

### computer architecture

    A set of rules and methods that describe the functionality, organization, and implementation of computer systems.

### computer file

    a resource for storing information, which is available to a computer program and is usually based on some kind of durable storage.

### computer programming

    A process that leads from an original formulation of a computing problem to executable computer programs.

### control structure

    The order in which individual statements, instructions or function calls of an imperative program are executed or evaluated.

### data flow diagram (DFD)

    A graphical representation of the "flow" of data through an information system, modeling its process aspects.

### data structure

    A particular way of organizing data in a computer so that it can be used efficiently.

### debugging

    The process of finding and resolving defects that prevent correct operation of computer software or a system.

### decompiler

    A computer program that takes an executable file as input, and attempts to create a high level source file which can be recompiled successfully.

### deployment environment

    A computer system in which a computer program or software component is deployed and executed.

### Flowgorithm

    A graphical authoring tool which allows users to write and execute programs using flowcharts.

### hard coding

    The software development practice of embedding an input or configuration data directly into the source code of a program or other executable object, instead of obtaining that data from external sources or generating data or formatting in the program itself with the given input.

### interpreter

    A computer program that directly executes instructions written in a programming or scripting language, without previously compiling them into a machine language program.

### Java

    A general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.

### JavaScript

    A high-level, dynamic, weakly typed, object-based, multi-paradigm, and interpreted client-side programming language. It's also one of the three core technologies of World Wide Web content production alongside of HTML and CSS.

### logic error

    A bug in a program that causes it to operate incorrectly, not to terminate abnormally, but produce unintended or undesired output or other behavior, although it may not immediately be recognized as such.

### macro

    A rule or pattern that specifies how a certain input sequence (often a sequence of characters) should be mapped to a replacement output sequence (also often a sequence of characters) according to a defined procedure.

### machine language

    A set of instructions executed directly by a computer's central processing unit (CPU).

### maintainability

    the ease with which a program can be modified by its present or future developers in order to make improvements.

### methodology

    The systematic, theoretical analysis of the methods applied to a field of study.

### modular programming

    A software design technique that emphasizes separating the functionality of a program into independent and interchangeable units.

### object-oriented programming (OOP)

    A programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.

### order of operations

    A rule used to clarify which procedures should be performed first in a given mathematical expression.

### pair programming

    An agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in.

### Portability

    the range of computer hardware and operating system platforms on which the source code of a program can be compiled/interpreted and run.

### PHP

    A server-side scripting language designed primarily for web development but also used as a general-purpose programming language.

### pseudocode

    An informal high-level description of the operating principle of a computer program or other algorithm.

### program analysis

    The process of automatically examining the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness.

### programming

    Involves activities such as analysis, developing understanding, generating algorithms, verification of requirements of algorithms, and implementation (commonly referred to as coding) of algorithms in a target programming language.

### programming language

    A formal constructed language designed to communicate instructions to a machine, particularly a computer.

### Python

    A widely used general-purpose, high-level programming language that emphasizes code readability.

### query language

    Computer languages used to make queries in databases and information systems.

### reliability

    An attribute of resiliency and structural solidity.

### robustness

    ability of a system to resist change without adapting its initial stable configuration.

### run time

    The time during which a program is running (executing).

### sandbox

    A testing environment that isolates untested code changes and outright experimentation from the production environment or repository.

### scripting language

    A programming language that supports programs written for a special run-time environment that can interpret (rather than compile) and automate the execution of tasks that could alternatively be executed one-by-one by a human operator.

### software development

    The computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product.

### source code

    Any collection of computer instructions (possibly with comments) written using some human-readable computer language, usually as text.

### Spaghetti Code

    is a pejorative phrase for unstructured and difficult to maintain source code, broadly construed. Spaghetti code can be caused by several factors, such as volatile project requirements, lack of programming style rules, and insufficient ability or experience.

### SQL (Structured Query Language)

    A special-purpose programming language designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS).

### structured programming

    programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures, for and while loops—in contrast to using simple tests and jumps such as the go to statement which could lead to "spaghetti code" causing difficulty to both follow and maintain.

### subroutine

    A sequence of program instructions that perform a specific task, packaged as a unit.

### syntax error

    An error in the sequence of characters or tokens that is intended to be written in a particular programming language.

### systems development life cycle (SDLC)

    A term used to describe a process for planning, creating, testing, and deploying an information system. The concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both.

### usability

    The ease with which a person can use the program for its intended purpose.

### variable

    A storage location paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value.

### visual programming language (VPL)

    Any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation.

## Review Questions

* Computer programming is _____. Computer programming is a process that leads from an original formulation of a computing problem to executable computer programs.
* Programming involves activities such as _____. Programming involves activities such as analysis, developing understanding, generating algorithms, verification of requirements of algorithms, and implementation (commonly referred to as coding) of algorithms in a target programming language.
* Source code is written in one or more programming languages. Popular programming languages include _____. Source code is written in one or more programming languages. Popular programming languages include Java, C, C++, C#, and Python.
* Programming quality is measured by _____. Programming quality is measured by reliability, robustness, usability, portability, maintainability, and efficiency.
* Reliability is _____. Reliability is how often the results of a program are correct.
* Robustness is _____. Robustness is how well a program anticipates problems due to errors (not bugs).
* Usability is _____. Usability is the ease with which a person can use the program for its intended purpose.
* Portability is _____. Portability is the range of computer hardware and operating system platforms on which the source code of a program can be compiled/interpreted and run.
* Maintainability is _____. Maintainability is the ease with which a program can be modified by its present or future developers in order to make improvements.
* Efficiency is _____. Efficiency is the amount of system resources a program consumes.
* Most programming languages follow the order of operations commonly used in mathematics of _____. Most programming languages follow the order of operations commonly used in mathematics of Parentheses, Exponents, Multiplication, Division, Addition, and Subtraction, or PEMDAS.
* Object-oriented programming (OOP) is _____. Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.
* Most popular object-oriented programming languages are class-based, meaning _____. Most popular object-oriented programming languages are class-based, meaning that objects are instances of classes, which typically also determines their type.
* Popular object-oriented programming languages include _____. Popular object-oriented programming languages include Java, C++, C#, and Python.
* Structured programming is _____.  Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops—in contrast to using simple tests and jumps such as the goto statement which could lead to "spaghetti code", which is difficult both to follow and to maintain.
* Structured programming uses three control structures — _____, _____, and _____ — to define any program or function. Structured programming uses three control structures — sequencing, selection (conditions), and iteration (loops) — to define any program or function.
* Structured query language (SQL) is_____ Structured query language (SQL)is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS).
* A data type is _____. A data type is a classification identifying one of various types of data, such as integer, floating-point number, Boolean, character, or string, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of that type are stored.
* At the machine level, data types correspond to _____. At the machine level, data types correspond to the sizes of system memory locations and processor data containers (registers) and supporting instructions.
* Data types may be combined into _____. Data types may be combined into composite data types such as arrays and structures.
* A computer file is _____. A computer file is a resource for storing information, which is available to a computer program and is usually based on some kind of durable storage.

## Assessments

* Flashcards: Quizlet: Information Systems - Programming
* Quiz: Quizlet: Information Systems - Programming
* Game: Quizlet gravity game

## See Also

* Introduction to Programming
* Wikibooks: Introduction to Computer Information Systems
* The Next Web: Facts every computer programmer should know