Unit1 - Part1 - Computer Hardware
Unit1 - Part1 - Computer Hardware
COURSE OUTCOMES:
UNIT-1:
Computer:
Data: is a collection of raw facts or instructions that do not have much meaning to the
user.
Accuracy: Computers perform calculations with 100% accuracy. Errors may occur due
to data inconsistency or inaccuracy.
Diligence : A computer can perform millions of tasks or calculations with the same
consistency and accuracy. It doesn’t feel any fatigue or lack of concentration. Its
memory also makes it superior to that of human beings.
Reliability : A computer is reliable as it gives consistent result for similar set of data i.e.,
if we give same set of input any number of times, we will get the same result.
Automation : Computer performs all the tasks automatically i.e. it performs tasks
without manual intervention.
Memory : A computer has built-in memory called primary memory where it stores data.
Secondary storage are removable devices such as CDs, pen drives, etc., which are also
used to store data.
Hardware
The term hardware refers to mechanical device that makes up computer. Computer
hardware consists of interconnected electronic devices that we can use to control
computer’s operation, input and output. Examples of hardware are CPU, keyboard,
mouse, hard disk, etc.
Hardware Components
System software
Application software
System Software
System software operates directly on hardware devices of computer. It provides a
platform to run an application. It provides and supports user functionality. Examples of
system software include operating systems such as Windows, Linux, Unix, etc.
Application Software
An application software is designed for benefit of users to perform one or more tasks.
Examples of application software include Microsoft Word, Excel, PowerPoint, Oracle,
etc.
Generations of Computers:
The Generation of Computer Evolution is Generally Divided Into 5 Categories.
The main electronic component used in the computers of the 1940s to 1950s era were
vacuum tubes.The main memory storing units were magnetic tapes and magnetic
drums.The machine language was used as the programming language.The sizes used
to be very large which could take up entire rooms and the speed was very slow.The
only input/output devices were paper tape and punched cards.Around 100 different
vacuum tubes were used in order to produce the computers.
The Second Generation of Computers- (the 1950s-1960s):
The main electronic component used in the computers of the 1950s to 1960s era were
transistors.
The main memory storing units were magnetic tape or disk and magnetic core.
The sizes were smaller as compared to those of the first generation and they used to
consume low power and generate less heat.
The main electronic components used in the computers of the era 1060s to 1970s were
integrated circuits ICs.
The memory storing units were the magnetic disk or take and a large magnetic core.
High-level languages such as BASIC, COBOL, Pascal were used as the programming
language.
The sizes were smaller and efficient and the computers were called minicomputers.
The input/output devices were keyboards, magnetic tape monitor, printer, etc.
The main electronic components used in the fourth generation of computers are
microprocessors and very large scale integration (VLSI).
Semiconductor memory storage units such as RAM, ROM, etc were introduced.
RAM (random-access memory)- Temporarily stores the programs and data and the
contents are lost when the computer is shut down.
ROM (read-only memory)- Permanently stores the data and programs and the contents
are retained even after shutting down the computer.
High-level languages such as C#, JAVA, Python, JavaScript are used as programming
languages.The sizes are smaller and the speed has improved.
The input/output devices are a monitor, mouse, keyboard, printer, and so on.
Examples are STAR 1000, APPLE II, IBM PC, and so on.
The main electronic components that are used in the present generation of computers is
Artificial Intelligence which uses the parallel processing method and the Ultra-Large
Scale Integration (ULSI).
The speeds are really fast and the sizes are also small.
The fifth-generation computers are portable and have a huge storage capacity.
The input/output devices are keyboards, monitors, touchscreen pens, printers, light
scanners, and so on.
Generations of
S.no Time-period Evolving Hardware
Computer
Block diagram of a computer gives you the pictorial representation of a computer that
how it works inside. Or you can say that, in computer's block diagram, we will see how
computer works from feeding the data to getting the result.
Let's describe about all the parts as included in the above diagram one by one.
All major calculation and comparisons are made inside the CPU and it is also
responsible for activation and controlling the operation of other unit.
This unit consists of two major components, that are arithmetic logic unit (ALU) and
control unit (CU).
Here arithmetic logic unit performs all arithmetic operations such as addition,
subtraction, multiplication and division. It also uses logic operation for comparison.
And the control unit of a CPU controls the entire operation of a computer. It also
controls all devices such as memory, input/output devices connected to the CPU.
CU fetches instructions from memory, decodes the instruction, interprets the instruction
to know what the task are to be performed and sends suitable control signals to the
other components to perform for the necessary steps to executes the instruction.
Input/Output Unit
The input/output unit consists of devices used to transmit information between the
external world and computer memory.
The information fed through the input unit is stored in computer's memory for processing
and the final result stored in memory can be recorded or display on the output medium.
Memory Unit
The data read from the main storage or an input unit are transferred to the computer's
memory where they are available for processing.
This memory unit is used to hold the instructions to be executed and data to be
processed.
Data and instruction enters into a computer system through input device have to stored
inside the computer before actual processing start.
Two types of storage unit are primary and secondary storage unit.
Primary memory has direct link with input unit and output unit. It stores the input data,
calculation result.
The primary storage is not able to store data permanently for future use. So some other
types of storage technology is required to store the data permanently for long time, it is
called secondary or auxiliary storage.
We can infer the following characteristics of Memory Hierarchy Design from above
figure:
Capacity:
It is the global volume of information the memory can store. As we move from top to
bottom in the Hierarchy, the capacity increases.
Access Time:
It is the time interval between the read/write request and the availability of the data. As
we move from top to bottom in the Hierarchy, the access time increases.
Performance:
Earlier when the computer system was designed without Memory Hierarchy design,
the speed gap increases between the CPU registers and Main Memory due to large
difference in access time. This results in lower performance of the system and thus,
enhancement was required. This enhancement was made in the form of Memory
Hierarchy Design because of which the performance of the system increases. One of
the most significant ways to increase system performance is minimizing how far down
the memory hierarchy one has to go to manipulate data.
System Software
System software is software that directly operates the computer hardware and
provides the basic functionality to the users as well as to the other software to operate
smoothly. Or in other words, system software basically controls a computer’s internal
functioning and also controls hardware devices such as monitors, printers, and
storage devices, etc. It is like an interface between hardware and user applications, it
helps them to communicate with each other because hardware understands machine
language(i.e. 1 or 0) whereas user applications are work in human-readable
languages like English, Hindi, German, etc. so system software converts the human-
readable language into machine language and vice versa.
Features of system software :
Let us discuss some of the features of System Software:
1. System Software is closer to the computer system.
2. System Software is written in a low-level language in general.
3. System software is difficult to design and understand.
4. System software is fast in speed(working speed).
5. System software is less interactive for the users in comparison to application
software.
Types of system software:
It has two subtypes which are:
1. Operating System: It is the main program of a computer system. When the
computer system ON it is the first software that loads into the computer’s memory.
Basically, it manages all the resources such as memory, CPU, printer, hard disk,
etc., and provides an interface to the user, which helps the user to interact with the
computer system. It also provides various services to other computer software.
Examples of operating systems are Linux, Apple macOS, Microsoft Windows, etc.
2. Language Processor: As we know that system software converts the human-
readable language into a machine language and vice versa. So, the conversion is
done by the language processor. It converts programs written in high-
level programming languages like Java, C, C++, Python, etc(known as source
code), into sets of instructions that are easily readable by machines(known as
object code or machine code).
3. Device Driver: A device driver is a program or software that controls a device
and helps that device to perform its functions. Every device like a printer, mouse,
modem, etc. needs a driver to connect with the computer system eternally. So,
when you connect a new device with your computer system, first you need to
install the driver of that device so that your operating system knows how to control
or manage that device.
Application Software
Software that performs special functions or provides functions that are much more
than the basic operation of the computer is known as application software. Or in other
words, application software is designed to perform a specific task for end-users. It is a
product or a program that is designed only to fulfill end-users’ requirements. It includes
word processors, spreadsheets, database management, inventory, payroll programs,
etc.
Features of application software:
Let us discuss some of the features of Application Software:
1. An important feature of application software is it performs more specialized
tasks like word processing, spreadsheets, email, etc.
2. Mostly, the size of the software is big, so it requires more storage space.
3. Application software is more interactive for the users, so it is easy to use and
design.
4. The application software is easy to design and understand.
5. Application software is written in a high-level language in general.
Types of application software:
There are different types of application software and those are:
1. General Purpose Software: This type of application software is used for a
variety of tasks and it is not limited to performing a specific task only. For example,
MS-Word, MS-Excel, PowerPoint, etc.
2. Customized Software: This type of application software is used or designed to
perform specific tasks or functions or designed for specific organizations. For
example, railway reservation system, airline reservation system, invoice
management system, etc.
Less interactive for the users More interactive for the users
Input Devices:
Following are some of the important input devices which are used in a computer −
Keyboard
Mouse
Joy Stick
Light pen
Track Ball
Scanner
Bar Code Reader, etc
Keyboard:
Keyboard is the most common and very popular input device which helps to input
data to the computer. The layout of the keyboard is like that of traditional typewriter,
although there are some additional keys provided for performing additional functions.
Mouse:
Mouse is the most popular pointing device. It is a very famous cursor-control device
having a small palm size box with a round ball at its base, which senses the movement
of the mouse and sends corresponding signals to the CPU when the mouse buttons are
pressed.
Generally, it has two buttons called the left and the right button and a wheel is present
between the buttons. A mouse can be used to control the position of the cursor on the
screen, but it cannot be used to enter text into the computer.
Joystick:
Joystick is also a pointing device, which is used to move the cursor position on a
monitor screen. It is a stick having a spherical ball at its both lower and upper ends. The
lower spherical ball moves in a socket. The joystick can be moved in all four directions.
Light Pen:
Light pen is a pointing device similar to a pen. It is used to select a displayed menu item
or draw pictures on the monitor screen. It consists of a photocell and an optical system
placed in a small tube.
Track Ball:
Track ball is an input device that is mostly used in notebook or laptop computer, instead
of a mouse. This is a ball which is half inserted and by moving fingers on the ball, the
pointer can be moved.
Scanner:
Scanner is an input device, which works more like a photocopy machine. It is used
when some information is available on paper and it is to be transferred to the hard disk
of the computer for further manipulation.
Bar Code Reader is a device used for reading bar coded data (data in the form of light
and dark lines). Bar coded data is generally used in labelling goods, numbering the
books, etc. It may be a handheld scanner or may be embedded in a stationary scanner.
Output Devices:
Any peripheral that accepts data from a computer and prints, projects, or reproduces it
is known as an output device. The output may be audio, video, hard copy – printed
paper, etc. Output devices convert the computer data to human understandable form.
1. Monitor :
A computer’s principal output device is a monitor, often known as a Visual Display Unit
(VDU). It displays the processed data like text, images, videos, audios, etc. It makes
images by arranging microscopic dots in a rectangular pattern, known as pixels. The
sharpness of an image is determined by the number of pixels. There are two types of
monitor viewing screens:
2. Printer:
Printers are information output devices that allow you to print data on paper. Or in
other words, it is an output device that creates a hard copy of the processed data or
information. Printers are divided into two categories:
3. Plotter :
A projector is a device that allows users to project their output onto a large area, such
as a screen or a wall. It can be used to project the output of a computer and other
devices onto a screen. It magnifies texts, photos, and movies using light and lenses.
As a result, it’s an excellent output device for giving presentations or teaching big
groups of people.
5. Speakers :
Speakers are connected to computers to allow sound to be output. For the working of
speakers, sound cards are required. From simple two-speaker output devices to
surround-sound multi-channel sets, speakers come in a variety of shapes and sizes.
They take audio input from the computer’s sound card and output sound waves as
audio output.
What is a Framework?
Writing the code from scratch is a tedious task full of possible risks and errors. You
need to make the code clean, well-tested, bugs and errors free. It will be difficult for
other developers to understand the code and work on it. So, it is better to work with
the frameworks that meet your requirements. They make the development process
easy with fewer errors. It is a general template that can be used and modified as per
the requirement. It will be easy for others to understand your code as they are also
familiar with frameworks.
Frameworks provide many advantages such as:
Easy to test your code and debug it.
Clean code is much easy to understand and work with.
Reduces redundancy of code in the project.
Reduces the time and cost of the project with the enhanced application.
Features and functionalities provided by the framework can be modified and
extended.
Types of Frameworks:
A. Front-End Frameworks
Frontend web development frameworks are used to create the user interface of the
website that is seen and used by the users. They develop the client side of the
application. Some of the popular front-end web development frameworks are
Angular and Vue.js.
1. Angular
Angular is an open-source TypeScript-based framework. It is created and maintained
by Google. Angular provides many features and services that can help in developing
websites and Progressive Web Apps (PWAs). Angular makes use of TypeScript code
on websites and gives proper responses to the user’s input in less time without writing
any extra lines of code. It allows the integration of third-party tools. There are many
top companies that make use of Angular framework such as Google, PayPal, Nike,
Upwork, etc.
2. VueJS
Vue.js is an open-source JavaScript-based frontend web development framework. It is
built using HTML, CSS, and JavaScript and supports Model-View-View Model (MVVM)
architecture. It is easy to learn and understand and has large community support.
Many top companies use the Vue.js framework such as Behance, Trustpilot, etc.
3. Bootstrap
Bootstrap is an open-source CSS-based framework. It is developed with the help of
HTML, CSS, and JavaScript. It helps in creating websites that are easy and fast to
develop, highly responsive, and platform-independent. Nowadays, all websites are
suitable for all kinds of devices (desktops, smartphones, tablets) thanks to Bootstrap.
Many top companies use the Bootstrap framework such as Airbnb, Netflix, Uber, etc.
B. Back-End Frameworks
Backend web development frameworks are used on the server side of the application.
They provide backend functionalities responsible for handling requests, databases,
communicating with APIs, etc. Some of the popular backend web development
frameworks are Ruby on Rails, Django, PHP, etc.
1. Ruby on Rails
Ruby on Rails is an open-source Ruby-based framework. Ruby is responsible for
providing secure and scalable software. It is based on Model View Controller (MVC)
architecture and third-party libraries can also be integrated. There are many top
companies that make use of the Ruby on Rails framework such as CafePress, Airbnb,
etc.
2. Django
Django is an open-source Python-based web framework. It provides a speedy
development of web applications and ensures that they are scalable and flexible.
Django is based on Model Template View (MTV) architecture and is compatible with
any frontend framework. There are many top companies that make use of Django
such as YouTube, Instagram, Spotify, etc.
3. Spring Boot
Spring Boot is an open-source Java-based web framework. It enables developers to
develop production-ready and standalone applications. Spring Boot provides high
flexibility and scalability to websites. Many top companies use Spring Boot such as
Netflix, Uber, Intuit, LinkedIn, etc.
Agile
SCRUM
Design Thinking
Lean Startup
Six Sigma
Kanban
Importance of Frameworks:
Frameworks serve several important purposes across various domains:
1. Code Editor: A primary component of any IDE, the code editor provides a
platform for writing, editing, and formatting code. It often includes features such
as syntax highlighting, code completion, and code folding to enhance
productivity.
2. Compiler/Interpreter Integration: IDEs often integrate compilers or interpreters
for various programming languages, allowing developers to compile or run their
code directly within the IDE environment.
3. Debugger: Debugging tools enable developers to identify and fix errors in their
code. IDEs typically provide features such as breakpoints, variable inspection,
and step-through debugging to aid in the debugging process.
4. Version Control Integration: Many IDEs integrate with version control systems
such as Git, enabling developers to manage code repositories, track changes,
and collaborate with team members more effectively.
5. Project Management: IDEs often include project management tools to help
organize and manage software projects. This may include features such as
project templates, file organization, and build configuration.
6. Code Refactoring: IDEs offer tools for code refactoring, allowing developers to
restructure and optimize their codebase without changing its external behavior.
Common refactoring actions include renaming variables, extracting methods, and
optimizing imports.
7. Code Navigation: IDEs facilitate code navigation by providing features such as
code navigation shortcuts, symbol lookup, and context-aware search
functionality. This helps developers quickly navigate large codebases and locate
specific code elements.
8. Code Analysis: IDEs often include static code analysis tools that help identify
potential errors, inefficiencies, or code smells in the codebase. This can help
improve code quality and maintainability.
9. Integration with External Tools: IDEs typically support integration with external
development tools and utilities, such as build automation tools, dependency
management systems, and testing frameworks.
10. Customization and Extensibility: Many IDEs allow users to customize the
environment to suit their preferences and workflow. This may include customizing
keyboard shortcuts, installing plugins or extensions, and configuring code
formatting options.
11. Documentation and Help Resources: IDEs often provide built-in
documentation and help resources, including language reference documentation,
API documentation, and tutorials to assist developers in learning and using the
IDE effectively.
Types of IDEs:
IDEs come in various forms, some are designed to work for a specific language
whereas some are targeted to a particular platform like mobile devices. Hence, it
becomes equally important to choose an IDE best suited to one’s needs.
1. Desktop IDEs
This type includes the IDEs that can be configured locally. They do not need an active
internet connection to build/run programs. Desktop IDEs are highly customizable to
suit developer-specific needs and provide performance irrespective of the internet
speed. Examples: include Microsoft Visual Studio, Eclipse, Netbeans, etc.
2. Cloud IDEs
Cloud IDEs eliminate the overhead of configuring the software locally.
They run on remote servers and can be accessed through desktop
browsers. Cloud IDEs provide better accessibility and platform
independence making them accessible through the Internet Irrespective of
the Client Operating System. Cloud IDEs can be used freely or can have
pricing models with respect to the provider. Examples: Include Gitpod,
AWS Cloud 9, Replit, etc.
These IDEs are specially designed for creating mobile applications. They include
features like Emulator support and integration for developing and testing mobile
applications. Mobile Development IDEs can be in the form of Desktop IDE or Cloud
IDE. Examples: Include Android Studio, Flutlab.io, etc.
4. Database-Specific IDEs
These IDEs are specially designed for working with databases. They include features
like query builders and n for developing and testing mobile applications. Like mobile-
development IDEs, Database IDEs can also be in the form of Desktop IDE or Cloud
IDEs. Examples: Include MySQL Workbench, Oracle SQL Developer, etc.
1. Project Management: IDEs make viewing the project directory structure much
simpler which breaks down the tedious tasks of working with multiple files. Typically
IDEs also include a number of tools, such as syntax highlighting, code completion,
and code folding, which makes it easier to manage the overall project.
2. Saving plenty of time and Effort: IDEs often include a variety of tools that can not
only assist you in organizing your code but also quickly highlight the error in your
code. They also include a flexible combination of tools for compiling, building, testing,
and deploying your code, through which you can automate these tasks eliminating the
need to manually run each task.
3. Productivity: IDEs can increase your productivity by providing a centralized
location for all of your development needs, from writing and editing code to debugging
and deploying. Some of the functionality provided by IDEs can also be accomplished
with a text editor and command-line tools, but IDEs usually make the process more
convenient and user-friendly.
1. Not beginner Friendly: IDEs are complex tools and generally provide quite an
intimidating UI, which can be a little tough to comprehend for a beginner. Maximizing
their benefit generally needs a dedicated effort.
2. Frequent Updates: It’s difficult to keep up with constant updates, such as new
samples, templates, and features.
3. Only Assist in writing code: As a tool, IDEs are limited to being an assistant.
They can’t write code or automatically fix errors, one still needs the knowledge to write
clean code.
4. Cost: Some IDE is Expensive or needs additional costs to unlock some add-ons,
which can be a barrier for small-scale companies or learning Individuals.
1. Visual Studio
2. IntelliJ IDEA
3. PyCharm
4. Eclipse
5. WebStorm
6. PhpStorm, etc.
Summary for the lesson:
Computers consist of various hardware components that work together to perform
tasks. The central processing unit (CPU), memory, and storage devices are
essential functional units of computer hardware. The CPU comprises components
such as the Arithmetic Logic Unit (ALU) and the Control Unit. Memory operates
in a hierarchy, with cache memory being the fastest but most expensive, followed
by Random Access Memory (RAM), and then storage devices like Hard Disk
Drives (HDDs). Input devices, such as keyboards and mice, allow users to provide
data to the computer, while output devices, like monitors and printers, display
processed information.
On the software side, there are different categories, including system software and
application software. System software, like operating systems and utility programs,
manages hardware resources and provides essential services to other software.
Application software, such as word processors and spreadsheets, are designed for
specific tasks. Software packages are bundles of programs, while frameworks
provide tools and libraries for efficient application development. Integrated
Development Environments (IDEs) offer comprehensive tools for software
development.