Course 02 - Software
Course 02 - Software
2024-2025
1
A. GHALI
Computer Science 2024/2025
INTRODUCTION
Software is a collection of instructions and data that tell a computer how to perform specific tasks.
Unlike the physical hardware with which a computer system is built, software is intangible and
cannot be touched. It is created using programming languages and can be broadly categorized
into two types:
1. System Software: This is designed to manage and control the hardware components of a
computer system. It serves as the interface between the user applications and the hardware,
ensuring that the computer functions correctly and efficiently. Examples of system software
include:
a. Operating Systems: Such as Windows, MacOS, Linux, and Android. They manage the
computer's resources, offer services to software applications, and provide a user
interface.
b. Device Drivers: Software that facilitates communication between the operating system
and a hardware component (e.g., a printer driver).
c. Utilities: Programs that perform specific tasks related to managing computer
resources, like disk defragmenters, antivirus software, and backup tools.
2
A. GHALI
Computer Science 2024/2025
2. Application Software: This is designed for end-users to perform specific tasks on a computer,
rather than run the computer itself. Examples include:
a. Productivity Software: Such as word processors (e.g., Microsoft Word), spreadsheets
(e.g., Microsoft Excel), and presentation software (e.g., Microsoft PowerPoint).
b. Database Software: Such as Microsoft Access, Oracle, and MySQL.
c. Graphics Software: Tools like Adobe Photoshop and Illustrator.
d. Entertainment and Media Software: Including media players, video games, and
multimedia editing tools.
e. Web Browsers: Such as Google Chrome, Mozilla Firefox, and Safari.
f. Business Software: Including enterprise resource planning (ERP) and customer
relationship management (CRM) tools.
3
A. GHALI
Computer Science 2024/2025
"SOFTWARE" is a broad topic; it can be categorized based on its function and purpose. Here are
the primary types of software:
1. Programming Software:
a. Integrated Development Environments (IDEs): Platforms that provide tools for
writing, testing, and debugging code. Examples: Visual Studio, Eclipse, PyCharm.
b. Compilers: Translates high-level language code into machine code.
c. Debuggers: Used to test and debug software applications.
2. Middleware:
Acts as a bridge between the OS and the application software or between different
software applications. Middleware is essential in distributed computing environments.
Examples include database connection services, application servers, and message
queues.
4
A. GHALI
Computer Science 2024/2025
3. Embedded Software:
4. Simulation Software:
5. Network Software:
Tools or programs that allow devices to connect and share resources. Examples:
Network protocols, firewall software, network management software.
6. Firmware:
Different types of software serve various purposes and are crafted to provide specific
functionalities. The lines between some categories might blur as software becomes more complex,
and integrated solutions become more common.
5
A. GHALI
Computer Science 2024/2025
The primary differences between system software and application software are based on their
purpose, functionality, and interaction with the hardware. Here's a breakdown:
1. Purpose:
System Software: This software is designed to manage and control hardware components
and provide a platform for running application software. It acts as a bridge between
hardware and user applications.
Application Software: This is designed to perform specific tasks for the user, such as word
processing, browsing the internet, or managing spreadsheets.
System Software: Directly interacts with the hardware and provides basic functions to
allow the hardware to operate. It manages resources like memory, CPU, and storage.
Application Software: Indirectly interacts with hardware via system software. It relies on
the system software to access hardware resources.
4. Dependency:
5. Execution:
System Software: Generally, runs in the background and starts as soon as the system is
turned on. It runs until the system is shut down.
Application Software: Runs only when initiated by the user and can be closed when the
user finishes the task.
6. Installation:
System Software: Comes pre-installed with the system (like the operating system) or is
installed during system setup.
Application Software: Installed by the user based on needs and preferences.
7. Complexity:
System Software: More complex because it manages a wide range of system resources and
hardware components.
6
A. GHALI
Computer Science 2024/2025
8. User Interaction:
System Software: Minimal direct user interaction; its processes typically run behind the
scenes.
Application Software: Significant direct user interaction, as users work with the software
to perform tasks.
In summary, system software is foundational and essential for running a computer's hardware
and supporting application software, which focuses on user-specific tasks.
System software is a computer program that manages other software operations better. For a
computer program to warrant the term system software, it must be capable of effectively
managing the computer infrastructure and hardware devices for a better user interface.
7
A. GHALI
Computer Science 2024/2025
2. Device Drivers:
3. Firmware:
4. Utility Software:
These examples help manage the computer's core functions and provide the environment in
which application software operates.
Application software exists in various forms and works to help users’ complete tasks and perform
various functions. Computer programs and mobile apps are among the most popular and widely
used forms of application software due to their ease of accessibility.
8
A. GHALI
Computer Science 2024/2025
1. Productivity Software:
2. Web Browsers:
Google Chrome
Mozilla Firefox
Safari
Microsoft Edge
Opera
4. Communication Software:
MySQL
Microsoft Access
Oracle Database
SQLite
9
A. GHALI
Computer Science 2024/2025
7. Games:
Facebook
Instagram
Twitter (X)
LinkedIn
10
A. GHALI
Computer Science 2024/2025
Types of Software
Apart from the conventional system and application software, they are other software categories.
1. Freeware Software
A freeware software program is free software that any user can easily access. Any software
program that falls under this description is regarded as freeware. Most application software is
regarded as freeware as they are easily accessible by a simple download, but some system
software is also free. Note that freeware is copyrighted to limit its distribution and usage. Freeware
examples are Windows Media Player, Word Processors, and Internet Browsers.
2. Open-Source Software
Open-source software is software programs that proprietary owners of the software programs
make the source code available and easily accessible for all and sundry. There is room for the
source code to be altered into an entirely different software program. A vast majority of
application software is open sourced, but so is some system software, such as the Ubuntu system
software.
3. Proprietary Software
Unlike open-source software, proprietary software might require payment to access the software
program, depending on the owner, but its source code is unavailable to the general public.
4. Shareware Software
Unlike freeware, shareware software is limited in how long users can access the software
programs for free. Once the free trial period elapses, access to these software programs is
revoked. Other programs are Malware, Spyware, and Adware software, which comprise software
that is illegal to distribute without consent. They are designed as end-user programs.
Programming languages can be integrated across a wide range of areas and contexts, enabling the
development of both system software and application software. Here's how and where
programming languages can be used:
1. System Software Development:
11
A. GHALI
Computer Science 2024/2025
Device Drivers:
o These are typically written in C or C++ to interact directly with hardware devices
like printers, keyboards, or network cards.
Firmware:
o C and Assembly are common for writing firmware because they allow precise
control of hardware at a low level.
2. Application Software Development:
Desktop Applications:
o Languages like Java, C++, Python, and C# are commonly used to create applications
that run on operating systems (e.g., word processors, media players).
Web Applications:
o HTML, CSS, and JavaScript are essential for frontend development.
o Python (with frameworks like Django or Flask), Ruby (Ruby on Rails), PHP, and
JavaScript (Node.js) are used for backend development.
o Mobile Applications:
o Swift is used for iOS app development.
o Kotlin and Java are used for Android app development.
o React Native and Flutter are popular for cross-platform mobile apps using
JavaScript and Dart respectively.
3. Game Development:
C++ and C# are popular languages for game engines like Unreal Engine and Unity
respectively.
Python is used for scripting and game logic in certain engines (e.g., Pygame).
JavaScript (via frameworks like Phaser) can be used for web-based games.
4. Artificial Intelligence and Machine Learning:
Python is the dominant language for AI/ML because of libraries like TensorFlow, Keras,
PyTorch, and Scikit-learn.
R is also popular for statistical computing and machine learning tasks.
C++ is used in performance-critical parts of AI models.
5. Embedded Systems:
C and C++ are widely used in embedded systems development (e.g., for microcontrollers
or IoT devices) due to their performance and low-level hardware access.
Rust is gaining popularity in embedded systems for its safety features.
12
A. GHALI
Computer Science 2024/2025
6. Database Management:
SQL (Structured Query Language) is essential for interacting with relational databases like
MySQL, PostgreSQL, and SQL Server.
Python, Java, and C# are used to write database management systems (DBMS) and
integrate database functionality into applications.
7. Cloud Computing and DevOps:
Python, Go, and Ruby are used in cloud services and infrastructure automation (e.g., AWS
Lambda, Google Cloud Functions).
Shell scripting (e.g., Bash) and PowerShell are used for automation in system
administration and DevOps pipelines.
8. Data Science and Analytics:
Python and R are the primary languages for data analysis, with libraries like Pandas,
NumPy, and Matplotlib.
SQL is used for querying databases and extracting large datasets for analysis.
MATLAB is also used for numerical computations and data visualization in academic and
research contexts.
9. Network Programming:
C, C++, and Python are used to develop network protocols, socket programming, and
network tools.
Java and Node.js are often used for developing scalable network applications (e.g., chat
servers, real-time data processing systems).
10. Automation and Scripting:
Python, Bash, PowerShell, and Perl are commonly used for automating repetitive tasks,
system administration, or managing servers.
JavaScript (via tools like Puppeteer) can automate web browsing tasks.
11. Cybersecurity:
Python is used for writing penetration testing tools and automating security analysis tasks.
C and Assembly are used in reverse engineering and malware analysis.
JavaScript and SQL are important for testing vulnerabilities like cross-site scripting (XSS)
and SQL injection.
12. User Interface (UI) Development:
JavaScript (with frameworks like React, Vue, or Angular) is essential for creating interactive
web UIs.
13
A. GHALI
Computer Science 2024/2025
Solidity is used for writing smart contracts on Ethereum and other blockchain platforms.
Python and Go are used for developing blockchain infrastructure and decentralized
applications (dApps).
14. Robotics:
C++ and Python are popular in robotics, often used with frameworks like ROS (Robot
Operating System).
MATLAB is also used for robotic simulations and control algorithms.
15. Scientific Computing and Research:
Python, Fortran, and MATLAB are used for simulations, numerical computations, and
research.
C++ and Java are used in large-scale simulations and performance-intensive scientific
applications.
Summary:
Low-level programming languages like C, C++, and Assembly are often integrated into
system-level software, embedded systems, and performance-critical applications.
High-level languages like Python, Java, and JavaScript dominate application development,
automation, and web programming.
Specialized languages like SQL for databases, Solidity for blockchain, and R for data analysis
target specific domains.
Each programming language has its strengths and typical areas of integration depending on the
nature of the project or system.
14
A. GHALI