Lecture
Handout
Introduction
to programming
Lecture
No. 1
Summary
o What is programming
o Why programming is important
o What skills are needed
o Develop a basic recipe for writing programs
o Points to remember
As
this course is titled “Introduction to programming”, therefore it is most
essential and
appropriate
to understand what programming really means. Let us first see a widely
known
definition of programming.
Definition:
"A
program is a precise sequence of steps to solve a particular problem.”
It
means that when we say that we have a program, it actually mean that we know
about a
complete
set activities to be performed in a particular order. The purpose of these
activities
is to solve a given problem.
Alan
Perlis, a professor at Yale University, says:
"It
goes against the grain of modern education to teach children to program. What
fun is
there
in making plans, acquiring discipline in organizing thoughts, devoting
attention to
detail
and learning to be self-critical? "
It
is a sarcastic statement about modern education, and it means that the modern
education
is not developing critical skills like planning, organizing and paying
attention
to
detail. Practically, in our day to day lives we are constantly planning,
organizing and
paying
attention to fine details (if we want our plans to succeed). And it is also fun
to do
these
activities. For example, for a picnic trip we plan where to go, what to wear,
what to
take
for lunch, organize travel details and have a good time while doing so.
When
we talk about computer programming then as Mr. Steve Summit puts it
“At
its most basic level, programming a computer simply means telling it what to
do, and
this
vapid-sounding definition is not even a joke. There are no other truly
fundamental
aspects
of computer programming; everything else we talk about will simply be the
details
of a particular, usually artificial, mechanism for telling a computer what to
do.
Sometimes
these mechanisms are chosen because they have been found to be convenient
for
programmers (people) to use; other times they have been chosen because they're
easy
for
the computer to understand. The first hard thing about programming is to learn,
become
comfortable with, and accept these artificial mechanisms, whether they make
``sense''
to you or not. “
Why Programming is important
The
question most of the people ask is why should we learn to program when there
are so
many
application software and code generators available to do the task for us. Well
the
answer
is as give by the Matthias Felleisen in the book ‘How to design programs’
“The
answer consists of two parts. First, it is indeed true that traditional
forms of
programming are useful for just a few people. But, programming as
we the authors
understand it is useful for everyone: the administrative secretary who uses
spreadsheets
as
well as the high-tech programmer. In other words, we have a broader notion of
programming
in mind than the traditional one. We explain our notion in a moment.
Second,
we teach our idea of programming with a technology that is based on the
principle
of minimal intrusion. Hence, our notion of programming teaches problem-
analysis
and problem-solving skills without
imposing the overhead of traditional
programming
notations and tools.”
Hence learning to program is important because
it develops analytical and problem
solving abilities. It is a creative activity and provides us a mean to express
abstract ideas.
Thus
programming is fun and is much more than a vocational skill. By designing
programs,
we learn many skills that are important for all professions.
Paying attention to detail
In
programming, the details matter. This is a very important skill. A good
programmer
always
analyzes the problem statement very carefully and in detail. You should pay
attention
to all the aspects of the problem. You can't be vague. You can't describe your
program
3/4th of the way, then say, "You know what I mean?'', and have the
compiler
figure
out the rest.
Furthermore
you should pay attention to the calculations involved in the program, its
flow,
and most importantly, the logic of the program. Sometimes, a grammatically
correct
sentence
does not make any sense. For example, here is a verse from poem "Through
the
Looking
Glass" written by Lewis Carol:
“Twas
brillig, and the slithy toves
Did
gyre and gimble in the wabe “
The
grammar is correct but there is no meaning. Similarly, the sentence, "Mr.
ABC
sleeps
thirty hours every day", is grammatically correct but it is illogical.
So
it may happen that a program is grammatically correct. It compiles and runs but
produces
incorrect or absurd results and does not solve the problem. It is very
important
to
pay attention to the logic of the program.
Think about the reusability
When
ever you are writing a program, always keep in mind that it could be reused at
some
other time. Also, try to write in a way that it can be used to solve some other
related
problem.
A classic example of this is:
Suppose
we have to calculate the area of a given circle. We know the area of a circle
is
(Pi
* r2). Now we have written a program which calculates the area of a circle
with given
radius.
At some later time we are given a problem to find out the area of a ring. The
area
of
the ring can be calculated by subtracting the area of outer circle from the
area of the
inner
circle. Hence we can use the program that calculates the area of a circle to
calculate
the
area of the ring.
users
know a lot of things, this is a big mistake. So never assume that the user of
your
program
is computer literate. Always provide an easy to understand and easy to use
interface
that is self explanatory.
Understand the fact that computers
are stupid
Computers
are incredibly stupid. They do exactly what
you tell them to do: no more, no
less--
unlike human beings. Computers can't think by themselves. In this sense, they
differ
from human beings. For example, if someone asks you, “What is the time?”, “Time
please?”
or just, “Time?” you understand anyway that he is asking the time but computer
is
different. Instructions to the computer should be explicitly stated. Computer
will tell
you
the time only if you ask it in the way you have programmed it.
When
you're programming, it helps to be able to "think'' as stupidly as the
computer does,
so
that you are in the right frame of mind for specifying everything in minute
detail, and
not
assuming that the right thing will happen by itself.
Comment the code liberally
Always
comment the code liberally. The comment statements do not affect the
performance
of the program as these are ignored by the compiler and do not take any
memory
in the computer. Comments are used to explain the functioning of the programs.
It
helps the other programmers as well as the creator of the program to understand
the
code.
Program design recipe
In
order to design a program effectively and properly we must have a recipe to
follow. In
the
book name ‘How to design programs’ by Matthias Felleisen.and the co-worker, the
idea
of design recipe has been stated very elegenlty as
“Learning
to design programs is like learning to play soccer. A player must learn to trap
a
ball,
to dribble with a ball, to pass, and to shoot a ball. Once the player knows
those basic
skills,
the next goals are to learn to play a position, to play certain strategies, to
choose
among
feasible strategies, and, on occasion, to create variations of a strategy
because
none
fits. “
The
author then continue to say that:
“A
programmer is also very much like an architect, a composers, or a writer. They
are
creative
people who start with ideas in their heads and blank pieces of paper. They
conceive
of an idea, form a mental outline, and refine it on paper until their writings
reflect
their mental image as much as possible. As they bring their ideas to paper,
they
employ
basic drawing, writing, and playing music to express certain style elements of
a
building,
to describe a person's character, or to formulate portions of a melody. They
can
practice
their trade because they have honed their basic skills for a long time and can
use
them
on an instinctive level.
Programmers
also form outlines, translate them into first designs, and iteratively refine
them
until they truly match the initial idea. Indeed, the best programmers edit and
rewrite
their
programs many times until they meet certain aesthetic standards. And just like
soccer
players, architects, composers, or writers, programmers must practice the basic
skills
of their trade for a long time before they can be truly creative.
Design
recipes are the equivalent of soccer ball handling techniques, writing
techniques,
arrangements,
and drawing skills. “
Hence
to design a program properly, we must:
o Analyze a problem statement, typically
expressed as a word problem.
o Express its essence, abstractly and with
examples.
o Formulate statements and comments in a precise
language.
o Evaluate and revise the activities in light of
checks and tests and
o Pay attention to detail.
All
of these are activities that are useful, not only for a programmer but also for
a
businessman,
a lawyer, a journalist, a scientist, an engineer, and many others.
Let
us take an example to demonstrate the use of design recipe:
Suppose
we have to develop a payroll system of a company. The company has permanent
staff,
contractual staff, hourly based employees and per unit making employees.
Moreover,
there are different deductions and benefits for permanent employees and there
is
a bonus for per unit making employees and overtime for contractual
employees.
We
need to analyze the above problem statement. The company has four categories of
employees;
i.e.; Permanent staff, Contractual staff, hourly based employees and per unit
making
employees. Further, permanent staff has benefits and deductions depending upon
their
designation. Bonus will be given to per unit making employees if they make more
than
10 pieces a day. Contractual employee will get overtime if they stay after
office
hours.
Now
divide the problem into small segments and calculations. Also include examples
in
all
segments. In this problem, we should take an employee with his details from
each
category.
Let’s say, Mr. Ahmad is a permanent employee working as Finance Manager.
His
salary is Rs.20000 and benefits of medical, car allowance and house rent are
Rs.4000
and
there is a deduction of Rs.1200. Similarly, we should consider employees from
other
categories.
This will help us in checking and testing the program later on.
The next step is to formulate these statements
in a precise language, i.e. we can use the
pseudo
code and flowcharting. which will be then used to develop the program using
computer
language.
Then
the program should be evaluated by testing and checking. If there are some
changes
identified,
we revise the activities and repeat the process. Thus repeating the cycle, we
achieve
a refined solution.
Post a Comment
Don't Forget To Join My FB Group VU Vicky
THANK YOU :)