Computer software (or simply software) is the programs and procedures that enable a computer to perform a specific task, as opposed to the physical components of the system (hardware). This includes application software such as a word processor, which enables a user to perform a task, and system software such as an operating system, which enables other software to run properly, by interfacing with hardware and with other software.
The term "software" was first used in this sense by John W. Tukey in 1957. In computer science and software engineering, computer software is all information processed by computer systems, programs and data. The concept of reading different sequences of instructions into the memory of a device to control computations was invented by Charles Babbage as part of his difference engine. The theory that is the basis for most modern software was first proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem. Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. ISBN 1-86-207663-4.
Relationship to hardware
Computer software is so called in contrast to computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. In computers, software is loaded into RAM and executed in the central processing unit. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions (object code), which change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is generally written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler.
More on [ Computer software ]
Statistical Rules of Thumb, 2nd Edition Gerald van Belle Tue, 02 Sep 2008 04:00:00 -0000 Statistical Rules of Thumb, Second Edition compiles simple rules that are widely applicable, robust, and elegant, and each captures key statistical concepts. This handbook provides a framework for considering statistical questions such as sample size and design of experiments. Explaining the justification for each rule, this book conveys the various possibilities that statisticians must think of when designing and conducting a study or analyzing Read More... Workshop Statistics: Discovery with Data and Fathom 3rd Edition with Student CD & Access Code and Fathom Dynamic Data Software Set Allan J. Rossman Tue, 02 Sep 2008 04:00:00 -0000 Read More... Mathematical Logic George Tourlakis Tue, 02 Sep 2008 04:00:00 -0000 Mathematical Logic presents mathematical or "symbolic" logic as a reliable tool for deductive reasoning. It trains the student in both the established "Hilbert" style of writing proofs in mathematics, as well as in the emerging "equational" style that finds fruitful application in computer science curricula, especially in the areas of software engineering and program correctness. There are extensive sets of examples, Read More... Risk Assessment in Geotechnical Engineering Gordon A. Fenton, D. V. Griffiths Tue, 02 Sep 2008 04:00:00 -0000 The increasing sophistication of buildings and bridges demand new analytical techniques. Reliability-based design is a well established technique in the structural and mechanical engineering communities that is now gaining momentum among geotechnical engineers. This book introduces an innovative reliability-based method for risk assessment in geotechnical engineering that allows engineers to create a better model for analyzing the properties and possible Read More... Basic Math & Pre-Algebra Workbook For Dummies Mark Zegarelli Tue, 02 Sep 2008 04:00:00 -0000 When you have the right math teacher, learning math can be painless and even fun! Let Basic Math and Pre-Algebra Workbook For Dummies teach you how to overcome your fear of math and approach the subject correctly and directly. A lot of the topics that probably inspired fear before will seem simple when you realize that you can solve math problems, from basic addition to algebraic equations. Lots of students feel they got lost somewhere between learning Read More... Biostatistics: A Foundation for Analysis in the Health Sciences 8th Edition with SPSS Student Version 16.0 Set Wayne W. Daniel Tue, 02 Sep 2008 04:00:00 -0000 Read More...
The LEDA Library - LEDA is a library of the data types and algorithms of combinatorial computing.
Meta Description: [ LEDA moved to AS ]
ACE - An Algebraic Combinatorics Environment for MAPLE providing functions to work with classical structures in algebraic combinatorics. Free download.
Combinatorics Software of the Algorithms Project - Combinatorial analysis, discrete mathematics and computer algebra are the main interests of the Algorithms Projects. The packages let you define combinatorial structures; manipulate the associated generating functions, functional equations or recurrences; study their asymptotic behaviour.
Meta Description: [ (none) ]
Gato: The Graph Animation Toolbox - Software for visualizing graph algorithms. Free under GPL. Unix, Linux, MacOs ad Windows versions.
GeoSteiner - Software for computing Steiner trees. Written in ANSI C, includes the public domain LP-solver lp_solve.
GOBLIN Graph Library - C++ library of graph optimization algorithms with a GUI for editing, running and tracing the algorithms.
Meta Description: [ Weiterleitung Goblin ]
GRAPE - A GAP package for computing with graphs; primarily designed for the efficient construction and analysis of graphs related to groups, combinatorial designs and finite geometries.
Meta Description: [ Homepage of the GRAPE package for GAP. ]
Graph Coloring By DSATUR - By using the DSATUR algorithm, this php/form colors any graph in the Dimacs format.
Graph Magics - A tool for graph theory, having a generator and offering various algorithms: shortest paths, network flows, maximal clique, optimal coloring etc.
Meta Description: [ Graph Magics - an ultimate software for graph theory, having many very useful things, among which a strong graph generator and more than 15 different algorithms that one may apply to graphs (ex. Shortest Path, Network Flows, Minimum Cut, Maximum Clique, Chinese Postman Problem, Graph Center, Grap... ]
Graph Partitioners - Three algorithms written in NESL for finding separators of graphs, in order to compare the quality of the cuts.
GraphThing - Tool for investigating Graph Theory, with a GTK interface. Free under GPL. Unix, source code in C++.
JGraphT - Free Java class library that provides mathematical graph-theory objects and algorithms.
LINK: A Software System for Discrete Mathematics - A general-purpose, extendible computing environment in which discrete mathematical objects representing real world problems can be easily manipulated and visualized.
METIS: Family of Multilevel Partitioning Algorithms - Graph, mesh, and hypergraph partitioning software.
Meta Description: [ clustering, data mining, bioinformatics, graph, mesh, and hypergraph partitioning software ]
Nauty - A program for computing automorphism groups of graphs and digraphs. It can also produce a canonical labelling.
500NetworkX - NetworkX (NX) is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
plantri and fullgen - Programs for generation of certain types of planar graph, generated in such a way that exactly one member of each isomorphism class is output without the need for storing them.
Project Vega - A system for manipulating discrete mathematical structures: a Mathematica based collection of operations with interface to external packages and programs.
Scalable Libraries for Graph Partitioning - We are pursuing research in the area of new parallel methods for graph partitioning and incremental graph partitioning. Efficient methods for graph partitioning and incremental graph partitioning are important for parallelization of a large number of unstructured and/or adaptive applications.
SF, Posets and Coxeter/Weyl - John Stembridge's Maple packages for symmetric functions, posets, root systems, and finite Coxeter groups.
Some some more things I feel LIke talking about. Here is a great video also talking about what I hate. http://www.youtube ...