0% found this document useful (0 votes)
4 views

Lecture 1 Introduction Sep02 2018

Uploaded by

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

Lecture 1 Introduction Sep02 2018

Uploaded by

hams bassam
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Comp 209 - Programming

Introduction: Computers and Programming Languages


Lecture 1
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!
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 creations


Smaller, Faster,
Cheaper Sensors

• Programming develops Gene


valuable problem-solving skills, especially
ones that pertainSequencing
to analysis,
and
Biotechnology
design and implementation
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!


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?
Functional View of a Computer

Output
CPU Devices
Input
Devices

Main Secondary
Memory Memory
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,
your program and data will NOT be lost E.g., Hard Disk

Secondary
Memory
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 Secondary
Memory Memory
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 Secondary
Memory Memory
• It can directly access
information stored in main memory but not in secondary memory
Functional View of a Computer

E.g., Monitor
E.g., Keyboard Output
and mouse CPU Devices
Input
Devices

Main Secondary
Memory Memory
Functional View of a Computer
 Humans interact with computers
E.g., Monitor
via Input and Output (IO) devices
E.g., Keyboard Output
and mouse  Information from Input devices Devices
are processed by the CPU and
Input
may be shuffled off to the main or
Devices
secondary memory

 When information need to be


displayed, the CPU sends them to
one or more Output devices
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)
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
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
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 Code Machine


Compiler
(Program) Code

Running
Inputs Outputs
Program
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
Running An Outputs
Interpreter
Inputs

• E.g., Python is an interpreted language


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)
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!
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
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)
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?
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'>
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


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)
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
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

You might also like