Free Softwart Downloads


SPONSOR ................

Monday, November 17, 2008

IT Center For Science Upgrades Cray Supercomputer


Finnish IT Center For Science Upgrades Cray Supercomputer To One Of Europe’s Most Powerful

ScienceDaily (Nov. 13, 2008) — Cray Inc. and CSC - IT Center for Science Ltd has announced that CSC's Cray supercomputer has been upgraded to over 85 teraflops (trillions of floating point operations per second). This makes the new Cray XT5 system at CSC the most powerful academic supercomputer in the Nordic countries and one of the fastest supercomputers in Europe.
Later this year, a second upgrade funded under the EU's Partnership for Advanced Computing in Europe (PRACE) initiative will boost the Cray system's peak performance to 100 teraflops. PRACE, which already includes 16 nations, enables European scientists and engineers to access world-class high performance computing resources. The 100-teraflops Cray supercomputer will take one-thousandth of a second to solve a problem that ESKO, the first Finnish academic computer, would have taken 50 years to solve a half century ago.

Nordic researchers will use the supercomputer to solve scientific and engineering problems in a wide range of fields including turbulence and climate change, energy research, materials science, and gene interactions and medical research.

“The first upgrade of the Cray supercomputer ensures that Finnish researchers and engineers will continue to have access to world-class computing resources. The second, PRACE upgrade confirms CSC’s strong position and influence in building European co-operation,” said Kimmo Koski, managing director of CSC. “This powerful resource strengthens Finland's position as an attractive environment for world-class research.”

“We are delighted that CSC Finland's user community and PRACE users will have access to Cray's newest supercomputer technology,” said Ulla Thiel, vice president of Cray Europe. “As one of the most prominent supercomputing centers in Europe with a broad range of computational scientific disciplines, CSC is in an excellent position to maximize the advantages of our system in doing large scale capability computing in a production supercomputer environment and in solving the most demanding scientific problems.”

AMD set to release free software

AMD set to release free software 

 

AMD has announced that it will start to release next month for download a free ATI catalyst driver update that instantly unlocks new ATI Stream acceleration capabilities already built into millions of ATI Radeon graphics cards.
 
Rick Bergman, senior VP and GM, Graphics Products Group at AMD, said ATI Stream is one of the best examples of the power of Fusion, and the announcement is the first major step in taking this important new technology mainstream. 
 
Bergman said for the millions of people that have already purchased an ATI Radeon HD 4000 series graphics card, this is one more way we’re saying thank you and helping them get more out of their investment. “For those who haven’t yet, it’s one more reason for them to go online right now and buy one,” he said.
 
ATI Stream is a set of advanced hardware and software technologies that enable AMD graphics processors (GPU), working in concert with the system’s central processor (CPU), to accelerate applications beyond just graphics. 
 
ATI Stream-enabled software titles for entertainment, gaming and productivity are being released or are under development by a growing list of independent software vendors (ISVs) including ArcSoft and CyberLink.

AT&T Takes TV Mobile With Samsung Eternity


AT&T Takes TV Mobile With Samsung Eternity

AT&T is looking to put TV in the palms of users' hands with its latest device, the Samsung Eternity. 

The Eternity is a 3G touch-screen phone, with support for AT&T Mobile TV, while also tying in a host of other multimedia features. Along with one-touch access to Mobile TV, the device offers a full-touch QWERTY keypad, access to the mobile Web, GPS, AT&T Navigator, AT&T Mobile Music with Napster Mobile and a 3 megapixel camera. 

The handheld comes in black and chrome and features a 3.2-inch touch screen. The Eternity also features haptic support, which offers subtle vibrations to confirm a user's selections while using the touch screen. Three dedicated keys on the lower portion of the device offer navigation short cuts. The Eternity also supports an accelerometer that can automatically detect motion and the orientation of the device allowing for display auto-rotation and the use of motion sensing games and photo scrolling by tilting the device. 

The device centers around Samsung's TouchWiz interface, which offers specially designed widgets to customize and personalize the phone. The drag and drop feature lets users have instant access to functions like a clock, music player, instant messaging, photos and Mobile TV by adding it to their home screens. 

Other key functions of the Samsung Eternity include the 3 megapixel camera with video capture; Video Share calling; messaging capabilities, including mobile email and instant messaging from Yahoo, Windows Life, AOL and more; Bluetooth; and a microSD memory card slot that can support up to 8 GB of memory. 

The Web browser enables navigation with the touch of a finger and supports zoom-in and zoom-out. The device also includes dual-band 3G connectivity and quad-band GSM technology for high-speed data on the go. 

AT&T Mobile TV is a service from MediaFLO USA, a wholly owned subsidiary of Qualcomm Inc. It gives users access to streaming television and sporting events from networks including CBS Mobile, CNBC, Comedy Central, ESPN Mobile TV, Fox News, Fox Mobile, NBC 2Go, MSNBC, MTV, Nickelodeon, CNN Mobile and PIX. 

AT&T said the Samsung Eternity is available through AT&T retailers and AT&T Wireless' online store for $149.99 after a $50 mail in rebate with a two-year contract. Along with debuting the device, AT&T said it will offer a 30-day free trial for new AT&T Mobile TV subscribers.

Acer Incorporated


Acer Incorporated (LSE: ACID) (traditional Chinese: 宏碁股份有限公司) is a Taiwanese multinational electronics manufacturer. It owns the largest franchised computer retail chain in Taipei, Taiwan.[2] Acer is the third largest computer manufacturer in the world (by sales) after HP and Dell Inc.[3] and its product lineup includes desktops and laptops, as well as personal digital assistants (PDAs), servers and storage, displays, peripherals, and e-business services for business, government, education, and home users.

Adobe Systems Incorporated


Adobe Systems Incorporated (pronounced a-DOE-bee IPA: /əˈdoʊbiː/) (NASDAQ: ADBE) is an American computer software company headquartered in San Jose, California, USA.

Adobe was founded in December 1982[3] by John Warnock and Charles Geschke, who established the company after leaving Xerox PARC in order to develop and sell the PostScript page description language. In 1985, Apple Computer licensed PostScript for use in its LaserWriter printers, which helped spark the desktop publishing revolution. The company name Adobe comes from Adobe Creek, which ran behind the house of one of the company's founders.[3] Adobe acquired its former competitor, Macromedia, in December 2005.


As of January 2007, Adobe Systems has 6,677 employees,[3] about 40% of whom work in San Jose. Adobe also has major development operations in Seattle, Washington; San Francisco, California; Ottawa, Ontario; Minneapolis, Minnesota; Newton, Massachusetts; San Luis Obispo, California; Hamburg, Germany; Noida, India, Bangalore, India, Bucharest, Romania.

Since 1995, Fortune has ranked Adobe as an outstanding place to work. Adobe was rated the fifth-best U.S. company to work for in 2003, sixth in 2004, 31st in 2007 and 40th in 2008.[4] In 2007 Adobe ranked 9th on the list of largest software companies in the world

Saturday, October 18, 2008

SOFTWARE ENGINEERING



What is Software Engineering?

Images of Software Engineering Items
Software Engineering deals with the engineering problems, opportunities and needs associated with the development and utilization of computer software. The discipline also addresses the design of computers, computer science and the integration of software into computer systems, as well as the applications of software systems. The software industry is growing rapidly and of increasing importance to our economy and standard of living. Software engineering is finding its way into many industries, including telecommunications, power generation, biomedical and industrial product companies.

The software engineering sector is continually advancing. New opportunities and challenges include the development of more powerful software and computers. The array of software engineering applications is growing, and ranges from special-effects software for the movie industry, through to the software controlling devices such as digital cameras and robots, to the software that drives businesses and the financial sector.

The software industry has grown dramatically over recent years and has significantly impacted the global economy. Many companies are involved in the software engineering industry across the region, province and country.

What do Software Engineers do?
Mechanical and electronic devices in automobiles, airplanes, communication equipment and manufacturing systems are being replaced or enhanced by software components to provide more adaptability and enhanced functionality. Software components are more easily adapted, integrated, and upgraded to meet future needs and are less expensive to implement. Software engineers are at the heart of such activities.

Software engineering focuses on the analysis, design, development and manufacture of software systems and computer networks. Software Engineers are increasingly found in many industries.

Some aspects of software engineering also include computer engineering and computer science and programming, as well as electronics, automation and control, so Software Engineers often interact with professionals in those areas. Maintenance, repair and testing of software designs are additional areas of employment for graduates who will be highly qualified to perform research and development, systems engineering, and economics assessments of software engineering.

Software Engineers often work closely with other members of technical teams to help find ways to enhance designs, while accounting for such factors as cost, quality and reliability.

What types of careers do Software Engineers find?
Software engineers find careers with companies that develop and design software systems, and in industries that utilize and apply software.

Examples of careers involving Software Engineers are varied. Many opportunities exist in the software industry where Software Engineers develop productivity, database, business-solution and other software. Software Engineers also serve as software consultants and produce software designs that are customized to meet the needs of users. In addition, Software Engineers find careers in industries where software is applied. For instance, software systems are used extensively in medical applications, transportation systems, and the financial system to automate important tasks. Engineers, scientists and business researchers use software to compile and evaluate information in data warehouses and to identify critical facts or trends. The banking, insurance, telecommunications and other service-oriented industries use software to automate and personalize service to their customers.

Other firms and agencies that employ software engineers include power plants, consumer goods and industrial equipment manufacturers, telecommunication and computer industries, and biomedical engineering companies. Software engineering opportunities also arise in fields such as:

Electronics, mechatronics and robotics
Wireless transmission systems
Video, image and speech signal processing
Control and automation of industrial machinery and processes
Software engineering graduates will have the expertise to work productively as engineers and to manage effectively the work of others. Graduates may also choose to pursue graduate studies or start their own business.

With the emerging need for more powerful and higher-quality software systems, the demand for software engineers continues to grow. Rapid advances in technology will likely accelerate this growth in software engineering opportunities.

Program Description
The software engineering program provides graduates with the knowledge and skills required to carry out engineering work for a wide range of software and computer companies and for the many industries that use software products.

Developed in consultation with industry, the Software Engineering curriculum provides a solid grounding in fundamentals, with significant content in engineering sciences and engineering design.

In the first year, you study mathematics, sciences, computing and technical communications. These courses represent the foundation of most engineering programs. In the second year, you cover basic engineering courses like electronics, digital systems, and introductory software design. In third and fourth year, you study a range of applied and advanced software engineering courses including computer architecture, operating systems, algorithm design, data management systems, programming languages, computer networks and security, and computer control.

State-of-the-art laboratories and facilities are being developed to support the program, including laboratories for electronics and microprocessors. Our laptop computer approach to education allows laptop computers to be used for many laboratories and tutorials in software engineering.

Complementary studies including collaborative leadership, economics, and ethics and law for professionals, promote a broader understanding of the needs of society and technology's impact on it. Students gain technical expertise along with the understanding of business and humanities required for an integrated approach to the software and computer industry.

Program Map for Software Engineering

Engineering and Management Program
Students can choose to complement their technical studies in this engineering program with business and management courses by opting for the five-year Engineering and Management program that corresponds to this discipline.

Computer science



Computer science (or computing science) is the study and the science of the theoretical foundations of information and computation and their implementation and application in computer systems.[1][2][3] Computer science has many sub-fields; some emphasize the computation of specific results (such as computer graphics), while others relate to properties of computational problems (such as computational complexity theory). Still others focus on the challenges in implementing computations. For example, programming language theory studies approaches to describing computations, while computer programming applies specific programming languages to solve specific computational problems. A further subfield, human-computer interaction, focuses on the challenges in making computers and computations useful, usable and universally accessible to people.

The early foundations of what would become computer science predate the invention of the modern digital computer. Machines for calculating fixed numerical tasks, such as the abacus, have existed since antiquity. Wilhelm Schickard built the first mechanical calculator in 1623.[4] Charles Babbage designed a difference engine in Victorian times (between 1837 and 1901)[5] helped by Ada Lovelace.[6] Around 1900, the IBM corporation sold punch-card machines.[7] However, all of these machines were constrained to perform a single task, or at best some subset of all possible tasks.

During the 1940s, as newer and more powerful computing machines were developed, the term computer came to refer to the machines rather than their human predecessors. As it became clear that computers could be used for more than just mathematical calculations, the field of computer science broadened to study computation in general. Computer science began to be established as a distinct academic discipline in the 1960s, with the creation of the first computer science departments and degree programs.[8] Since practical computers became available, many applications of computing have become distinct areas of study in their own right.

Although many initially believed it impossible that computers themselves could actually be a scientific field of study, in the late fifties it gradually became accepted among the greater academic population.[9] It is the now well-known IBM brand that formed part of the computer science revolution during this time. IBM (short for International Business Machines) released the IBM 704 and later the IBM 709 computers, which were widely used during the exploration period of such devices. "Still, working with the IBM [computer] was frustrating...if you had misplaced as much as one letter in one instruction, the program would crash, and you would have to start the whole process over again".[9] During the late 1950s, the computer science discipline was very much in its developmental stages, and such issues were commonplace.

Time has seen significant improvements in the usability and effectiveness of computer science technology. Modern society has seen a significant shift from computers being used solely by experts or professionals to a more widespread user base. By the 1990s, computers became accepted as being the norm within everyday life.

Programming language



A programming language is an artificial language that can be used to create programs which control the behavior of a machine, particularly a computer.[1] Programming languages are defined by syntactic and semantic rules which describe their structure and meaning respectively. Programming languages are also used to facilitate communication about the task of organizing and manipulating information, and to express algorithms precisely.

Many programming languages have some form of written specification of their syntax and semantics; some are defined by a specification document (for example, an ISO Standard), while others have a dominant implementation (such as Perl).

Definitions
Traits often considered important for constituting a programming language:

Function: A programming language is a language used to write computer programs, which involve a computer performing some kind of computation[2] or algorithm and possibly control external devices such as printers, robots,[3] and so on.
Target: Programming languages differ from natural languages in that natural languages are only used for interaction between people, while programming languages also allow humans to communicate instructions to machines. Some programming languages are used by one device to control another. For example PostScript programs are frequently created by another program to control a computer printer or display.
Constructs: Programming languages may contain constructs for defining and manipulating data structures or controlling the flow of execution.
Expressive power: The theory of computation classifies languages by the computations they are capable of expressing. All Turing complete languages can implement the same set of algorithms. ANSI/ISO SQL and Charity are examples of languages that are not Turing complete yet often called programming languages.[4][5]
Some authors restrict the term "programming language" to those languages that can express all possible algorithms;[6] sometimes the term "computer language" is used for more limited artificial languages.

Non-computational languages, such as markup languages like HTML or formal grammars like BNF, are usually not considered programming languages. A programming language (which may or may not be Turing complete) may be embedded in these non-computational (host) languages.

System software



System software is any computer software which manages and controls computer hardware so that application software can perform a task. Operating systems, such as Microsoft Windows, Mac OS X or Linux, are prominent examples of system software. System software contrasts with application software, which are programs that enable the end-user to perform specific, productive tasks, such as word processing or image manipulation.

System software performs tasks like transferring data from memory to disk, or rendering text onto a display device. Specific kinds of system software include loading programs, Operating systems, device drivers, programming tools, compilers, assemblers, linkers, and utility software.

Software libraries that perform generic functions also tend to be regarded as system software, although the dividing line is fuzzy; while a C runtime library is generally agreed to be part of the system, an OpenGL or database library is less obviously so.

If system software is stored on non-volatile memory such as integrated circuits, it is usually termed firmware.

System Software can be classified as operating system and language processors. Operating system creates an interface between user and the system hardware. Language processors are those which help to convert computer language (Assembly and high level Languages) to machine level language. The example of language processors are assemblers, Compilers and interpreters.

Programming

Computer programming is the iterative process of writing or editing source code. Editing source code involves testing, analyzing, and refining, and sometimes coordinating with other programmers on a jointly developed program. A person who practices this skill is referred to as a computer programmer or software developer. The sometimes lengthy process of computer programming is usually referred to as software development. The term software engineering is becoming popular as the process is seen as an engineering discipline.


[edit] Paradigms
Computer programs can be categorized by the programming language paradigm used to produce them. Two of the main paradigms are imperative and declarative.

Programs written using an imperative language specify an algorithm using declarations, expressions, and statements.[3] A declaration associates a variable name with a datatype. For example: var x: integer; . An expression yields a value. For example: 2 + 2 yields 4. Finally, a statement might assign an expression to a variable or use the value of a variable to alter the program's control flow. For example: x := 2 + 2; if x = 4 then do_something(); One criticism of imperative languages is the side-effect of an assignment statement on a class of variables called non-local variables.[4]

Programs written using a declarative language specify the properties that have to be met by the output and do not specify any implementation details. Two broad categories of declarative languages are functional languages and logical languages. The principle behind functional languages (like Haskell) is to not allow side-effects, which makes it easier to reason about programs like mathematical functions.[4] The principle behind logical languages (like Prolog) is to define the problem to be solved — the goal — and leave the detailed solution to the Prolog system itself.[5] The goal is defined by providing a list of subgoals. Then each subgoal is defined by further providing a list of its subgoals, etc. If a path of subgoals fails to find a solution, then that subgoal is backtracked and another path is systematically attempted.

The form in which a program is created may be textual or visual. In a visual language program, elements are graphically manipulated rather than textually specified.


[edit] Compilation or interpretation
A computer program in the form of a human-readable, computer programming language is called source code. Source code may be converted into an executable image by a compiler or executed immediately with the aid of an interpreter.

Compiled computer programs are commonly referred to as executables, binary images, or simply as binaries — a reference to the binary file format used to store the executable code. Compilers are used to translate source code from a programming language into either object code or machine code. Object code needs further processing to become machine code, and machine code is the Central Processing Unit's native code, ready for execution.

Interpreted computer programs are either decoded and then immediately executed or are decoded into some efficient intermediate representation for future execution. BASIC, Perl, and Python are examples of immediately executed computer programs. Alternatively, Java computer programs are compiled ahead of time and stored as a machine independent code called bytecode. Bytecode is then executed upon request by an interpreter called a virtual machine.

The main disadvantage of interpreters is computer programs run slower than if compiled. Interpreting code is slower than running the compiled version because the interpreter must decode each statement each time it is loaded and then perform the desired action. On the other hand, software development may be quicker using an interpreter because testing is immediate when the compilation step is omitted. Another disadvantage of interpreters is the interpreter must be present on the computer at the time the computer program is executed. By contrast, compiled computer programs need not have the compiler present at the time of execution.

No properties of a programming language require it to be exclusively compiled or exclusively interpreted. The categorization usually reflects the most popular method of language execution. For example, BASIC is thought of as an interpreted language and C a compiled language, despite the existence of BASIC compilers and C interpreters. Some systems use Just-in-time compilation (JIT) whereby sections of the source are compiled 'on the fly' and stored for subsequent executions.


[edit] Self-modifying programs
A computer program in execution is normally treated as being different from the data the program operates on. However, in some cases this distinction is blurred when a computer program modifies itself. The modified computer program is subsequently executed as part of the same program. Self-modifying code is possible for programs written in Machine code, Assembler, Lisp, COBOL, PL/1 and Prolog and probably many others. Sometimes self modification is used as a form of dynamic optimization where the code becomes more efficient through caching or similar techniques. The technique is also often used to nullify all overhead of already embedded debugging code after a 'one time' test decides that debugging should be 'switched off' for the run. Early mainframe operating systems allowed program overlays as a normal practice for application programs, to conserve memory.

Computer program



Computer programs (also software programs, or just programs) are instructions for a computer.[1]. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a central processor;[2] however, a program may communicate an algorithm to people without running. Computer programs are usually executable programs or the source code from which executable programs are derived (e.g., compiled).

Computer source code is often written by professional computer programmers. Source code is written in a programming language that usually follows one of two main paradigms: imperative or declarative programming. Source code may be converted into an executable file (sometimes called an executable program or a binary) by a compiler. Alternatively, computer programs may be executed by a central processing unit with the aid of an interpreter, or may be embedded directly into hardware.

Computer programs may be categorized along functional lines: system software and application software. And many computer programs may run simultaneously on a single computer, a process known as multitasking.

Software system

A software system is a system based on software forming part of a computer system (a combination of hardware and software). The term software system is often used as a synonym of computer program or software. The term software system is related to the application of systems theory approaches in software engineering context. This approach is often used to study large and complex software, because it focuses on the major components of software and their interactions. The term software system is also related to the field of software architecture.

Major categories of software systems include application software, programming software and system software, although the distinction can sometimes be difficult. Examples of software systems include computer reservations system, air traffic control software, military command and control systems, telecommunication networks, web browsers, content management systems, database management systems, expert systems, spreadsheets, theorem provers, window systems, word processors, etc. Software systems are an active area of research for groups interested in software engineering in particular and systems engineering in general.

The Journal of Systems and Software covers software systems in a software engineering context.

3D modeling




In 3D computer graphics, 3D modeling is the process of developing a mathematical, wireframe representation of any three-dimensional object (either inanimate or living) via specialized software. The product is called a 3D model. It can be displayed as a two-dimensional image through a process called 3D rendering or used in a computer simulation of physical phenomena. The model can also be physically created using 3D Printing devices.

Models may be created automatically or manually. The manual modeling process of preparing geometric data for 3D computer graphics is similar to plastic arts such as sculpting.

Models
3D models represent a 3D object using a collection of points in 3D space, connected by various geometric entities such as triangles, lines, curved surfaces, etc. Being a collection of data (points and other information), 3D models can be created by hand, algorithmically (procedural modeling), or scanned.

3D models are widely used anywhere 3D graphics are used. Actually, their use predates the widespread use of 3D graphics on personal computers. Many computer games used pre-rendered images of 3D models as sprites before computers could render them in real-time.

Today, 3D models are used in a wide variety of fields. The medical industry uses detailed models of organs. The movie industry uses them as characters and objects for animated and real-life motion pictures. The video game industry uses them as assets for computer and video games. The science sector uses them as highly detailed models of chemical compounds. The architecture industry uses them to demonstrate proposed buildings and landscapes. The engineering community uses them as designs of new devices, vehicles and structures as well as a host of other uses. In recent decades the earth science community has started to construct 3D geological models as a standard practice.

Representation

A modern render of the iconic Utah teapot model developed by Martin Newell (1975). The Utah teapot is one of the most common models used in 3D graphics education.Almost all 3D models can be divided into two categories.

Solid - These models define the volume of the object they represent (like a rock). These are more realistic, but more difficult to build. Solid models are mostly used for nonvisual simulations such as medical and engineering simulations, and for specialized visual applications such as ray tracing and constructive solid geometry
Shell - these models represent the surface, not the volume (like an eggshell). These are easier to work with than solid models. Almost all visual models used in games and film are shell models.
Because the appearance of an object depends largely on the exterior of the object, boundary representations are common in computer graphics. Two dimensional surfaces are a good analogy for the objects used in graphics, though quite often these objects are non-manifold. Since surfaces are not finite, a discrete digital approximation is required: polygonal meshes (and to a lesser extent subdivision surfaces) are by far the most common representation, although point-based representations have been gaining some popularity in recent years. Level sets are a useful representation for deforming surfaces which undergo many topological changes such as fluids.

The process of transforming representations of objects, such as the middle point coordinate of a sphere and a point on its circumference into a polygon representation of a sphere, is called tessellation. This step is used in polygon-based rendering, where objects are broken down from abstract representations ("primitives") such as spheres, cones etc, to so-called meshes, which are nets of interconnected triangles. Meshes of triangles (instead of e.g. squares) are popular as they have proven to be easy to render using scanline rendering. Polygon representations are not used in all rendering techniques, and in these cases the tessellation step is not included in the transition from abstract representation to rendered scene.

3D computer graphics software



3D computer graphics software refers to programs used to create 3D computer-generated imagery. There are typically many stages in the "pipeline" that studios use to create 3D objects for film and games, and this article only covers some of the software used. Note that most of the 3D packages have a very plugin-oriented architecture, and high-end plugins costing tens or hundreds of thousands of dollars are often used by studios. Larger studios usually create enormous amounts of proprietary software to run alongside these programs

Features
Many 3D modelers are general-purpose and can be used to produce models of various real-world entities, from plants to automobiles to people. Some are specially designed to model certain objects, such as chemical compounds or internal organs.

3D modelers allow users to create and alter models via their 3D mesh. Users can add, subtract, stretch and otherwise change the mesh to their desire. Models can be viewed from a variety of angles, usually simultaneously. Models can be rotated and the view can be zoomed in and out.

3D modelers can export their models to files, which can then be imported into other applications. Many modelers allow importers and exporters to be plugged-in, so they can read and write data in the native formats of other applications.

Most 3D modelers contain a number of related features, such as ray tracers and other rendering alternatives and texture mapping facilities. Some also contain features that support or allow animation of models. Some may be able to generate full-motion video of a series of rendered scenes

Computer software



Computer software, or just software is a general term used to describe a collection of computer programs, procedures and documentation that perform some tasks on a computer system.[1] The term includes application software such as word processors which perform productive tasks for users, system software such as operating systems, which interface with hardware to provide the necessary services for application software, and middleware which controls and co-ordinates distributed systems. Software includes websites, programs, video games etc. that are coded by programming languages like C, C++, etc.

"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records
Overview
Computer software is usually regarded as anything but hardware, meaning that the "hard" are the parts that are tangible (able to hold) while the "soft" part is the intangible objects inside the computer. Software encompasses an extremely wide array of products and technologies developed using different techniques like programming languages, scripting languages etc. The types of software include web pages developed by technologies like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like Microsoft Word, OpenOffice developed by technologies like C, C++, Java, C#, etc. Software usually runs on an underlying operating system (which is a software also) like Microsoft Windows, Linux (running GNOME and KDE), Sun Solaris etc. Software also includes video games like the Super Mario, Grand Theft Auto for personal computers or video game consoles. These games can be created using CGI (computer generated imagery) that can be designed by applications like Maya, 3ds Max etc.

Also a software usually runs on a software platform which can either be provided by the Operating System or by OS independent platforms like Java and .NET. Software written for one platform is usually unable to run on other platforms so that for instance, Microsoft Windows software will not be able to run on Mac OS because of the differences relating to the platforms and their own standards. These applications can work using software porting, interpreters or re-writing the source code for that platform