2 Assignment of Ict
2 Assignment of Ict
ASSIGNMENT # 2
SUBJECT
Information and communication technology
COURSE CODE
GT-203
TOPIC
Software Programming and Development
SUBMITED BY
Hafsa Ibrar
SUBMITED TO
Sir Toqeer Ali Kazmi
SUBMISSION DATE
26 November 2024
Q. What is computer program?
A computer program is a set of instructions or code that tells a computer how to perform a specific task or
solve a problem. These instructions are written in programming languages like Python, Java, C++, or
JavaScript, and they guide the computer to process data, execute operations, and interact with users or other
systems.
A computer program can be as simple as a script that adds two numbers or as complex as a system running a
website, a video game, or managing a business's inventory. Programs are executed by the computer's processor,
which follows the sequence of instructions step by step to complete the task defined by the program.
1. Application programs: These are programs designed to help users perform specific tasks, such as word
processors (Microsoft Word), web browsers (Google Chrome), or media players (VLC).
2. System programs: These include operating systems (Windows, Linux, macOS) and utility software that
manage and maintain the computer’s resources and operations.
3. Development tools: These programs help developers write, test, and debug other programs, such as
compilers, debuggers, and integrated development environments (IDEs).
HARDWARE/SOFTWARE INTERACTION:
The interaction between hardware and software is fundamental to how computers function. Here's an
overview of how the two work together:
1. Hardware
Hardware refers to the physical components of a computer system, including the processor (CPU), memory
(RAM), storage devices (hard drives or SSDs), input/output devices (keyboard, mouse, monitor), and more.
2. Software
Software refers to the programs and operating systems that run on the hardware. It is the non-physical part of
the computer that tells the hardware how to perform specific tasks. Software includes:
System Software: Operating systems (like Windows, macOS, or Linux) that manage the hardware
resources and provide an environment for applications to run.
Application Software: Programs like word processors, games, web browsers, etc., which are designed
to perform specific tasks for the user.
Software relies on hardware to perform its functions. For example, an application like a photo editor uses the
processor (CPU) to run its computations, RAM to temporarily store data, and a display to show the user
interface. Software needs hardware resources to function.
2. Hardware Executes Software Instructions:
When you run a program, it consists of instructions (written in programming languages) that need to be
executed by the computer. These instructions are processed by the CPU. The CPU fetches the instructions from
memory (RAM), decodes them, and executes them. For example:
Input devices (like a keyboard or mouse) send signals to the CPU, which are processed by the software
to respond with actions like typing or clicking.
Output devices (like a monitor or printer) receive data from the CPU and display or print the results
based on the software's commands.
The operating system is the key intermediary between hardware and software. It manages the hardware
resources and provides an interface for software to interact with the hardware without needing to directly
control it. For example:
The OS manages memory (RAM) allocation so that software doesn't interfere with each other.
It controls input/output devices like keyboards, mice, and printers, ensuring software can interact with
them.
4. Device Drivers:
Software often needs specific drivers to interact with hardware devices. A driver is a specialized program that
allows the operating system and applications to communicate with a particular hardware component. For
instance, a printer driver allows a computer to send print jobs to a printer.
Some software actively monitors and adjusts the hardware performance. For example:
Games can adjust the graphical settings based on the computer's GPU (graphics card) capabilities.
System monitoring tools can check hardware health (temperature, CPU usage, etc.) and adjust the
software's behavior, such as lowering resource demands if the hardware is overheating.
When you type on a keyboard: The keyboard hardware sends electrical signals to the computer. The
operating system (software) interprets these signals and passes them to the active program (like a word
processor), which then displays the typed characters on the screen.
When you click a button on a website: The mouse (hardware) sends a signal to the computer, and the
operating system sends that signal to the browser software, which then executes the corresponding
action (like navigating to a new page).
When you play a video: The video player software sends data to the graphics card hardware, which
processes and displays the video on the screen.
1. Code
In the context of computer programming, code refers to the instructions written by a programmer using a
programming language. This is the human-readable form of software that tells the computer what to do. Code
can be written in many different programming languages, such as Python, Java, C++, JavaScript, and more.
Code is ultimately transformed into machine-readable instructions for execution by the computer.
2. Machine Code
Machine code is the lowest-level programming language and consists of binary instructions (combinations of
1s and 0s) that the computer's processor (CPU) can directly execute. This is the language that the computer
understands and processes. Machine code is specific to each CPU architecture (e.g., Intel, ARM).
Example: A machine code instruction could be something like 10111011 00010001, which tells the
CPU to perform a specific operation (like adding two numbers or moving data between registers).
Machine code is very difficult for humans to read, so programmers usually write in higher-level
programming languages and rely on tools (like compilers or interpreters) to convert that code into
machine code.
3. Programming Languages
Programming languages are formal languages used by programmers to write code that expresses
computational tasks. These languages are designed to be more understandable to humans than machine code
and often provide powerful abstractions to make programming easier.
High-Level Languages: These are user-friendly languages that abstract away hardware details. They
are easier for humans to read and write. Examples include Python, Java, C++, JavaScript, and Ruby.
Low-Level Languages: These are closer to machine code, offering less abstraction and more control
over hardware. Assembly language is a type of low-level language where each instruction corresponds
directly to machine code.
4. Compilers
A compiler is a tool that translates high-level programming code (like C++, Java) into machine code (or an
intermediate code) that the computer can execute. The process of compiling converts the entire program at once,
producing a stand-alone executable file.
Process: The compiler takes the source code written by the programmer and compiles it into machine
code (also known as object code). This compiled code can then be executed by the computer.
Example: In C++, the gcc (GNU Compiler Collection) compiles source code (.cpp) into machine code
(.exe or .out).
Advantages: The compiled code runs faster because it's directly translated into machine language ahead
of time.
5. Interpreters
An interpreter is a tool that directly executes the instructions written in a high-level programming language,
without converting them to machine code beforehand. An interpreter reads the program line-by-line, translates
it, and executes it in real-time.
Process: The interpreter translates and executes the source code line by line, as the program runs. It
doesn't produce a stand-alone executable file.
Example: Python uses an interpreter to execute code. When you run a Python script (.py), the
interpreter processes the code line by line.
Advantages: Interpreters are easier for debugging since you can execute code incrementally and see
results immediately. However, the execution can be slower compared to compiled programs because of
the translation that happens during runtime.
The first step is defining the problem and understanding what needs to be solved. This involves
gathering requirements, identifying inputs (data you provide to the program), and outputs (what you
want the program to produce).
2. Designing a Solution:
Algorithms: Programs often solve problems by using algorithms, which are step-by-step procedures to
perform calculations or data manipulations. The algorithm must be efficient, clear, and cover all possible
scenarios.
Data Structures: To organize data efficiently, programs use data structures (like arrays, lists, or trees)
to store and retrieve data in a way that makes it easier to process.
3. Translating to Code:
The design is then translated into a programming language. The program’s logic (algorithm) and data
structures are written in code, which follows the syntax and rules of a specific programming language
(like Python, Java, etc.).
4. Execution:
Input: The program accepts input data from users, files, or other programs.
Processing: The program follows the algorithm, manipulating or analyzing data. It may perform
calculations, make decisions (using conditionals), loop through data, or interact with other systems.
Output: The program produces an output based on the logic it follows, which can be a result displayed
to the user, written to a file, or sent to another system.
5. Iterative Improvement:
Testing: After the program is written, it is tested with various inputs to ensure it behaves as expected
and handles edge cases (rare or extreme inputs).
Debugging: If bugs (errors) are found, they are fixed by revising the code. Programs are often tested in
cycles to ensure they solve the problem accurately and efficiently.
6. Optimization:
After the program works correctly, the solution can be optimized to use fewer resources (like memory or
processing power), especially for large or complex problems.
7. User Interaction:
Programs often involve some form of user interaction. For example, users might input data, request
outputs, or adjust settings. The program must handle these interactions smoothly and provide
appropriate feedback.
In conclusion, a computer program is a set of instructions that enables a computer to perform specific tasks, interacting with
both hardware and software.
The code written by developers is translated into machine code, which the computer can execute. This translation is handled
by compilers (which process code all at once) or interpreters (which process it line by line).
The choice of programming language affects the ease of development and control over hardware. Proper planning ensures a
program is efficient, reliable, and scalable, involving problem understanding, solution design, coding, testing, and
optimization.