Principles of Computing
Introduction: Computers and Programming
Languages
By Dr. Joydeep Chandra
Indian Institute of Technology, Patna
25/08/23 1 Indian Institute of Technology Patna
Computers and Programming
• A computer is just a machine (the hardware) for
executing programs (the software)
• Hence, the software rules the hardware!
• The process of creating software is called
programming, and it is the focus of this course
• Virtually, anyone can learn how to program
computers
• It requires only some grit!
25/08/23 2 Indian Institute of Technology Patna
Why Learn Programming?
• Computers have become commonplace in our modern life
• Understanding the strengths and limitations of computers requires some
understanding of programming
• Programming can be loads of fun! Ubiquitous
Astronomy
• It is an intellectually engaging activity that allows you to express yourself
Computing
through remarkably beautiful Smaller,
creations
Faster,
Cheaper
Sensors
• Programming developsGene valuable problem-solving skills, especially
Sequencing
ones that pertain to analysis,
and design and implementation
Biotechnology
• Programmers are in great demand!
25/08/23 3 Indian Institute of Technology Patna
Why Learn Programming?
• Computers have become commonplace in our modern life
• Applying ideas in different fields requires programming
• Programming can be loads of fun!
• It is an intellectually engaging activity that allows you to express
yourself through remarkably beautiful constructs and structures
• Programming develops valuable problem-solving skills, especially
ones that pertain to analysis, design and implementation
• Programmers are in great demand!
25/08/23 4 Indian Institute of Technology Patna
Hardware Basics
• To be a successful programmer, you need to know
some details of how computers work
• For instance, understanding the basics of hardware
will help you analyze the performance (or efficiency)
of any of your programs
• Will the data of your program fit in memory?
• If not, how would that impact the performance of your program?
• Is your program CPU-bound or IO-Bound?
• If CPU-bound, how powerful is your CPU?
• If IO-bound, how big is your disk or network bandwidth?
25/08/23 5 Indian Institute of Technology Patna
Functional View of a Computer
Output
CPU Devices
Input
Devices
Main Seconda
Memory ry
Memory
25/08/23 6 Indian Institute of Technology Patna
Functional View of a Computer
• The secondary memory is where your saved program and data
reside
• It is a non-volatile storage
• I.e., when the power is turned off, E.g., Hard Disk
your program and data will NOT be lost
Seconda
ry
Memory
25/08/23 7 Indian Institute of Technology Patna
Functional View of a Computer
• The main memory is much faster (but more expensive) than the
secondary one, however, it is volatile
• Your program and data are copied from secondary memory to main
memory for efficiency reasons
E.g., Random Access Memory (RAM)
Main Seconda
Memory ry
Memory
25/08/23 8 Indian Institute of Technology Patna
Functional View of a Computer
• The Central Processing Unit (CPU) is the “brain” of the computer
• It can at least perform:
• Arithmetic operations CPU
(e.g., adding 2 numbers)
• Logical operations
(e.g., test if 2 numbers
are equal) Main Seconda
Memory ry
Memory
• It can directly access
information stored in main memory but not in secondary memory
25/08/23 9 Indian Institute of Technology Patna
Functional View of a Computer
E.g., Monitor
E.g., Keyboard Output
and mouse CPU Devices
Input
Devices
Main Seconda
Memory ry
Memory
25/08/23 10 Indian Institute of Technology Patna
Functional View of a Computer
Humans interact with
computers via Input and
Output (IO) devices E.g., Monitor
E.g., Keyboard Output
and mouse Information from Input devices Devices
are processed by the CPU
Input
and may be shuffled off to the
Devices
main or secondary memory
When information need to be
displayed, the CPU sends
them to one or more Output
devices
25/08/23 11 Indian Institute of Technology Patna
Programming Languages
• A program is just a sequence of instructions telling the
computer what to do
• Obviously, we need to provide these instructions in a
language that computers can understand
• We refer to this kind of a language as a programming language
• Python, Java, C and C++ are examples of programming languages
• Every structure in a programming language has an
exact form (i.e., syntax) and a precise meaning (i.e.,
semantic)
25/08/23 12 Indian Institute of Technology Patna
Machine Languages
• Python, Java, C, and C++ are, indeed, examples of high-
level languages
• Strictly speaking, computer hardware can only understand
a very low-level language known as machine language
• If you want a computer to add two numbers, the instructions
that the CPU will carry out might be something like this:
Load the number from memory location 2001 into the CPU
Load the number from memory location 2002 into the CPU A Lot of
Add the two numbers in the CPU Work!
Store the result into location 2003
25/08/23 13 Indian Institute of Technology Patna
High-Level to Low-Level Languages
• In a high-level language like Python, the addition
of two numbers can be expressed more naturally:
c=a+b Much Easier!
• But, we need a way to translate the high-level
language into a machine language that a
computer can execute
• To this end, high-level language can either be compiled
or interpreted
25/08/23 14 Indian Institute of Technology Patna
Compiling a High-Level Language
• A compiler is a complex software that takes a
program written in a high-level language and
translates it into an equivalent program in the
machine language of some computer
Source
Machine
Code Compiler
(Program) Code
Running Output
Inputs
Program s
25/08/23 15 Indian Institute of Technology Patna
Interpreting a High-Level Language
• An interpreter is a software that analyzes and executes the
source code instruction-by-instruction (on-the-fly) as
necessary
Source
Code
(Program) Computer
Output
Running An
s
Interpreter
Inputs
• E.g., Python is an interpreted language
25/08/23 16 Indian Institute of Technology Patna
Compiling vs. Interpreting
• Compiling is a static (i.e., pre-execution), one-shot translation
• Once a program is compiled, it may be run over and over again
without further need for the compiler or the source code
• Interpreting is dynamic (i.e., happens during execution)
• The interpreter and the source code are needed every time the
program runs
• Compiled programs tend to be faster, while interpreted ones
lend themselves to a more flexible programming
environments (they can be developed and run interactively)
25/08/23 17 Indian Institute of Technology Patna
Note on Portability
• The translation process highlights another advantage that high-
level languages have over machine languages, namely, portability
• A program for an Intel-based machine will not run on an IBM-
based machine since each computer type has its own machine
language
• On the other hand, a program written in a high-level language
(say, a Python program) can be run on many different kinds of
computers as long as there is a suitable compiler or interpreter
• Python programs are said to be portable!
25/08/23 18 Indian Institute of Technology Patna
Writing Python Commands
• You can start the Python interpreter in an
interactive mode and type in some commands
to see what happens
• When you first start the interpreter program, you
may see something like the following:
Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 19 2015, 20:38:52)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
A Python prompt indicating that the Python interpreter is waiting for you to give it a command
25/08/23 19 Indian Institute of Technology Patna
Writing Python Commands
• Here is a sample interaction with the Python
interpreter:
print is a built-in function that >>> print("Hello")
allows displaying information Hello
on screen >>> print("Programming is fun!")
Programming is fun!
When you call the print function, >>> print(3)
the parameters in the parentheses 3
tell the function what to print >>> print(2.3)
2.3
There is only 1 parameter passed to
print here, which is a textual data (or what is referred to as a string)
25/08/23 20 Indian Institute of Technology Patna
Writing Python Commands
• Here is a sample interaction with the Python
interpreter:
>>> print("Hello")
Hello
>>> print("Programming is fun!")
Another string parameter Programming is fun!
>>> print(3)
3
An integer (int for short) parameter
>>> print(2.3)
2.3
A float parameter
How can we figure out in a program whether a value is an int, float, or
string?
25/08/23 21 Indian Institute of Technology Patna
The Type Function
• Python provides a special function called type,
which allows us to figure out the data type of any
value
>>> type("Hello")
<class 'str'>
>>> type("Programming is fun!")
<class 'str'>
>>> type(3)
<class 'int'>
>>> type(2.3)
<class 'float'>
25/08/23 22 Indian Institute of Technology Patna
Basic Coding Examples in Python
• Write a python code to add 2 and 3 and print the output.
>>> print(2+3)
5
• Print your name and print the type of your name.
>>>print(“My name is ABCD”)
My name is ABCD
>>>type(“My name is ABCD”)
<Class’str’>
25/08/23 23 Indian Institute of Technology Patna
Summary
• A computer is a universal information-processing machine, which
can carry out any process that can be described in sufficient detail
• A description of the sequence of steps for solving a particular
problem is called an algorithm
• Algorithms can be turned into software (programs) that determine
what the hardware (physical machine) can and does accomplish
• The process of creating software is called programming
25/08/23 24 Indian Institute of Technology Patna
Summary
• A basic functional view of a computer system comprises a
central processing unit (CPU), a main memory, a secondary
memory, and input and output devices
• The CPU is the brain of the computer that performs simple
arithmetic and logical operations
• Information that the CPU acts on (data and programs) are
stored in main memory (e.g., RAM), while more permanent
information are stored in secondary memory (e.g., disk)
25/08/23 25 Indian Institute of Technology Patna
Summary
• Programs are written using a formal notation known as a
programming language
• There are many different languages, but all share the property of
having a precise syntax (form) and semantics (meaning)
• Computer hardware only understands a very low-level language
known as machine language
• Programs are usually written using human-oriented high-level
languages such as Python
25/08/23 26 Indian Institute of Technology Patna
Summary
• A high-level language must either be compiled or interpreted
in order for the computer to understand it
• High-level languages are more portable than machine
languages
• Python is an interpreted language
• One way to learn about Python is to use an interactive shell
for experimentation
25/08/23 27 Indian Institute of Technology Patna
Next Lecture…
• Basic elements of Python programs (e.g.,
names, expressions, input statements, output
statements, assignment statements, etc.,)
25/08/23 28 Indian Institute of Technology Patna