Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

Computer Programming

Computer programming involves writing instructions for computers, known as code, in various programming languages. Programmers are responsible for understanding project requirements, coding, testing, debugging, and documenting their solutions. Key aspects of programming include algorithmic complexity, methodologies, and ensuring quality attributes such as reliability, usability, and maintainability.

Uploaded by

midiyawaangaarif
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Computer Programming

Computer programming involves writing instructions for computers, known as code, in various programming languages. Programmers are responsible for understanding project requirements, coding, testing, debugging, and documenting their solutions. Key aspects of programming include algorithmic complexity, methodologies, and ensuring quality attributes such as reliability, usability, and maintainability.

Uploaded by

midiyawaangaarif
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

Harambee

University
Computer Programming

(CoSc1014)

3/16/2023 Shambel T Computer Science Department Head 1


What is computer programming?
 Computer programming is the process of writing
instructions that are to be executed by computers.
 These written instructions are often called “code,”
as they are written in one of several special
programming languages which the computer can
understand.
 Those who can write instructions in one of these
codes are called coders, or programmers.

3/16/2023 Shambel T Computer Science Department Head 2


Cont.…….

❑ A programmer’s tasks include understanding


project requirements, determining the right
programming language to use, designing the
solution, coding it, testing and debugging the
code, and finally writing documentation that
allows their solution to be easily understood by
other programmers.

3/16/2023 Shambel T Computer Science Department Head 3


Cont.…

 Computer programming is at the heart of computer


science and is the implementation portion of software
development, application development, and software
engineering efforts.
 It transforms ideas and theories into working
solutions.

3/16/2023 Shambel T Computer Science Department Head 4


Cont....

◼ Basic computer programming involves analyzing a


problem and developing a logical sequence of
instructions to solve it.
◼ There can be numerous paths to a solution, but
some are much faster than others.
◼ That is why the computer programmer seeks to
design the most efficient code.

3/16/2023 Shambel T Computer Science Department Head 5


Cont.…….
 Computer programming is the process of performing a
particular computation (or more generally, accomplishing a
specific computing result), usually by designing and building
an executable computer program.
 Programming involves tasks such as analysis,
generating algorithms, profiling algorithms' accuracy and
resource consumption, and the implementation of
algorithms (usually in a chosen programming language,
commonly referred to as coding).

3/16/2023 Shambel T Computer Science Department Head 6


Cont.
 The source code of a program is written in one or more
languages that are intelligible to programmers, rather
than machine code, which is directly executed by
the central processing unit.
 The purpose of programming is to find a sequence of
instructions that will automate the performance of a task
(which can be as complex as an operating system) on
a computer, often for solving a given problem.

3/16/2023 Shambel T Computer Science Department Head 7


Cont....

Proficient programming thus usually requires expertise in


several different subjects, including knowledge of
the application domain, specialized algorithms, and
formal logic.
Tasks accompanying and related to programming
include testing, debugging, source code maintenance,
implementation of build systems, and management of
derived artifacts, such as the machine code of computer
programs.

3/16/2023 Shambel T Computer Science Department Head 8


Cont.…
These might be considered part of the programming
process, but often the term software development is
used for this larger process with the
term programming, implementation, or coding reserved
for the actual writing of code.

3/16/2023 Shambel T Computer Science Department Head 9


Machine language
 Machine code was the language of early programs, written in
the instruction set of the particular machine, often
in binary notation. Assembly languages were soon developed
that let the programmer specify instruction in a text format
(e.g., ADD X, TOTAL), with abbreviations for each operation
code and meaningful names for specifying addresses.
However, because an assembly language is little more than a
different notation for a machine language, two machines
with different instruction sets also have different assembly
languages.

3/16/2023 Shambel T Computer Science Department Head 10


Compiler languages
 High-level languages made the process of developing a
program simpler and more understandable, and less bound
to the underlying hardware.
 The first compiler related tool, the A-0 System, was
developed in 1952 by Grace Hopper, who also coined the
term 'compiler’.
 FORTRAN, the first widely used high-level language to have
a functional implementation, came out in 1957, and many
other languages were soon developed in
particular, COBOL aimed at commercial data processing,
and Lisp for computer research.
3/16/2023 Shambel T Computer Science Department Head 11
Cont.……….
These compiled languages allow the programmer to write
programs in terms that are syntactically richer, and more
capable of abstracting the code, making it easy to target
for varying machine instruction sets via compilation
declarations and heuristics.
Compilers harnessed the power of computers to make
programming easier by allowing programmers to specify
calculations by entering a formula using infix notation.

3/16/2023 Shambel T Computer Science Department Head 12


Source code entry
➢ Programs were mostly entered using punched
cards or paper tape.
➢ By the late 1960s, data storage
devices and computer terminals became
inexpensive enough that programs could be
created by typing directly into the computers.
➢ Text editors were also developed that allowed
changes and corrections to be made much more
easily than with punched cards.
3/16/2023 Shambel T Computer Science Department Head 13
Quality requirements

❖ Whatever the approach to development may be, the


final program must satisfy some fundamental
properties.
❖ The following properties are among the most important:

❖ Reliability: ❖ Portability:
❖ Robustness ❖ Maintainability:
❖ Usability ❖ Efficiency/performance:

3/16/2023 Shambel T Computer Science Department Head 14


❖Reliability:
 How often the results of a program are correct.
 This depends on conceptual correctness of
algorithms and minimization of programming
mistakes, such as mistakes in resource
management (e.g., Buffer overflows and race
conditions) and logic errors (such as division by
zero or off-by-one errors).

3/16/2023 Shambel T Computer Science Department Head 15


Robustness
 how well a program anticipates problems due to
errors (not bugs).
 This includes situations such as incorrect,
inappropriate or corrupt data, unavailability of
needed resources such as memory, operating
system services, and network connections, user
error, and unexpected power outages.

3/16/2023 Shambel T Computer Science Department Head 16


Usability
 The ergonomics of a program: the ease with which a
person can use the program for its intended purpose or
in some cases even unanticipated purposes.
 Such issues can make or break its success even
regardless of other issues.
 This involves a wide range of textual, graphical, and
sometimes hardware elements that improve the clarity,
intuitiveness, cohesiveness and completeness of a
program's user interface.
3/16/2023 Shambel T Computer Science Department Head 17
Portability
 The range of computer hardware and operating
system platforms on which the source code of a
program can be compiled/interpreted and run.
 This depends on differences in the programming
facilities provided by the different platforms, including
hardware and operating system resources, expected
behavior of the hardware and operating system, and
availability of platform-specific compilers (and
sometimes libraries) for the language of the source
code.
3/16/2023 Shambel T Computer Science Department Head 18
Portability
 The ease with which A program can be modified by its
present or future developers in order to make
improvements or to customize, fix bugs and security
holes, or adapt it to new environments.
 Good practices during initial development make the
difference in this regard.
 This quality may not be directly apparent to the end user
but it can significantly affect the fate of A program over
the long term.
3/16/2023 Shambel T Computer Science Department Head 19
Portability
 Measure of system resources a program consumes
(processor time, memory space, slow devices such
as disks, network bandwidth and to some extent
even user interaction): the less, the better.
 This also includes careful management of resources,
for example cleaning up temporary files and
eliminating memory leaks.
 This is often discussed under the shadow of a chosen
programming language.
3/16/2023 Shambel T Computer Science Department Head 20
Cont.…
 Although the language certainly affects
performance, even slower languages, such
as Python, can execute programs instantly from a
human perspective.
 Speed, resource usage, and performance are
important for programs that bottleneck the
system, but efficient use of programmer time is
also important and is related to cost more
hardware may be cheaper.
3/16/2023 Shambel T Computer Science Department Head 21
Readability of source code
 In computer programming, readability refers to
the ease with which a human reader can
comprehend the purpose, control flow, and
operation of source code.
 It affects the aspects of quality above, including
portability, usability and most importantly
maintainability.

3/16/2023 Shambel T Computer Science Department Head 22


Readability of source code
 Readability is important because programmers spend
the majority of their time reading, trying to
understand, reusing and modifying existing source
code, rather than writing new source code.
Unreadable code often leads to bugs, inefficiencies,
and duplicated code.
 A study found that a few simple readability
transformations made code shorter and drastically
reduced the time to understand it
3/16/2023 Shambel T Computer Science Department Head 23
Readability of source code
 Following a consistent programming style often
helps readability. However, readability is more
than just programming style.
 Many factors, having little or nothing to do with
the ability of the computer to efficiently compile
and execute the code, contribute to readability.

3/16/2023 Shambel T Computer Science Department Head 24


Readability of source code
 Following a consistent programming style often
helps readability.
 However, readability is more than just
programming style.
 Many factors, having little or nothing to do with
the ability of the computer to efficiently compile
and execute the code, contribute to readability.

3/16/2023 Shambel T Computer Science Department Head 25


Readability of source code
❑ Some of these factors include:
➢ Different indent styles (whitespace)
➢ Comments
➢ Decomposition
➢ Naming conventions for objects (such as
variables, classes, functions, procedures, etc.)

3/16/2023 Shambel T Computer Science Department Head 26


Cont.….
 The presentation aspects of this (such as indents, line breaks,
color highlighting, and so on) are often handled by the source
code editor, but the content aspects reflect the programmer's
talent and skills.
 Various visual programming languages have also been developed
with the intent to resolve readability concerns by adopting non-
traditional approaches to code structure and display.
 Integrated development environments (IDEs) aim to integrate all
such help.
 Techniques like Code refactoring can enhance readability.

3/16/2023 Shambel T Computer Science Department Head 27


Algorithmic complexity
 The academic field and the engineering practice of
computer programming are both largely concerned
with discovering and implementing the most efficient
algorithms for a given class of problems.
 For this purpose, algorithms are classified
into orders using so-called Big O notation, which
expresses resource use, such as execution time or
memory consumption, in terms of the size of an
input.
3/16/2023 Shambel T Computer Science Department Head 28
Algorithmic complexity
 Expert programmers are familiar with a variety of well-
established algorithms and their respective complexities
and use this knowledge to choose algorithms that are
best suited to the circumstances.

3/16/2023 Shambel T Computer Science Department Head 29


Methodologies
 The first step in most formal software development
processes is requirements analysis, followed by
testing to determine value modeling,
implementation, and failure elimination (debugging).
 There exist a lot of different approaches for each of
those tasks.
 One approach popular for requirements analysis
is Use Case analysis.

3/16/2023 Shambel T Computer Science Department Head 30


Methodologies
 Many programmers use forms of Agile software
development where the various stages of formal
software development are more integrated
together into short cycles that take a few weeks
rather than years.
 There are many approaches to the Software
development process.

3/16/2023 Shambel T Computer Science Department Head 31


Methodologies
❖ Popular modeling techniques include Object-Oriented Analysis
and Design (OOAD) and Model-Driven Architecture (MDA).
❖ The Unified Modeling Language (UML) is a notation used for
both the OOAD and MDA.
❖ A similar technique used for database design is Entity-
Relationship Modeling (ER Modeling).
❖ Implementation techniques include imperative languages
(object-oriented or procedural), functional languages,
and logic languages.

3/16/2023 Shambel T Computer Science Department Head 32


Measuring language usage
❖ It is very difficult to determine what are the most popular
modern programming languages.
❖ Methods of measuring programming language popularity
include: counting the number of job advertisements that
mention the language, the number of books sold and
courses teaching the language (this overestimates the
importance of newer languages), and estimates of the
number of existing lines of code written in the language
(this underestimates the number of users of business
languages such as COBOL).
3/16/2023 Shambel T Computer Science Department Head 33
Measuring language usage
❖ Some languages are very popular for particular kinds of
applications, while some languages are regularly used to write
many different kinds of applications.
❖ For example, COBOL is still strong in corporate data
centers[22] often on large mainframe computers, Fortran in
engineering applications, scripting
languages in Web development, and C in embedded software.
❖ Many applications use a mix of several languages in their
construction and use.

3/16/2023 Shambel T Computer Science Department Head 34


Measuring language usage
❖ New languages are generally designed around the
syntax of a prior language with new functionality
added, (for example C++ adds object-orientation
to C, and Java adds memory management
and bytecode to C++, but as a result, loses
efficiency and the ability for low-level
manipulation).

3/16/2023 Shambel T Computer Science Department Head 35


Debugging
❖ Debugging is a very important task in the software development
process since having defects in a program can have significant
consequences for its users.
❖ Some languages are more prone to some kinds of faults because
their specification does not require compilers to perform as much
checking as other languages.
❖ Use of a static code analysis tool can help detect some possible
problems.
❖ Normally the first step in debugging is to attempt to reproduce the
problem.

3/16/2023 Shambel T Computer Science Department Head 36


Debugging
❖ This can be a non-trivial task, for example as with parallel
processes or some unusual software bugs.
❖ Also, specific user environment and usage history can make
it difficult to reproduce the problem.
❖ After the bug is reproduced, the input of the program may
need to be simplified to make it easier to debug.
❖ For example, when a bug in a compiler can make it crash
when parsing some large source file, a simplification of the
test case that results in only few lines from the original
source file can be sufficient to reproduce the same crash.
3/16/2023 Shambel T Computer Science Department Head 37
Next on

3/16/2023 Shambel T Computer Science Department Head 38

You might also like