Introduction To Computer Science
Introduction To Computer Science
Introduction To Computer Science
Course contents
Concept of an algorithm; termination and correctness.
Algorithms to programs: specification, top-down
development and stepwise refinement. Use of high
level programming language for the systematic
development of programs. Introduction to the design
and implementation of correct, efficient and
maintainable programs. Introduction to computer
architecture; memory, ALU, CPU, I/O devices.
Introduction to system software; operating systems,
compilers and multi-user environment.
What is a Computer?
Computer
Device capable of performing computations and making
logical decisions
Computers process data under the control of sets of
instructions called computer programs
Hardware
Various devices comprising a computer
Keyboard, screen, mouse, disks, memory, CD-ROM, and
processing units
Software
Programs that run on a computer
Computer Organization
Output unit
Outputs information (to screen, to printer, to control other devices)
Memory unit
Rapid access, low capacity, stores input information
Computer Architecture
A Computer Consists of
a central processing unit (CPU) consists of
an arithmetic/logic unit (ALU) where math and logic operations
are performed,
a control unit which directs most operations by providing timing
and control signals,
and registers that provide short-term data storage and management
facilities.
a memory unit that stores instructions and data, and
input (e.g. keyboard, mouse, microphone, disk drive, etc.) and output
(e.g. monitor, status indicator lights, speakers, disk drive, etc.) units
that are used to transmit data into and out of the computer.
ALU
A : The type of operation that the ALU needs to
perform is determined by signals from the control
unit .
B: The data can come either from the input unit, or
C: from the memory unit.
D: Results of the operation can either be
transferred back to the memory unit or
E: directly to the output unit .
Control Unit
contains logic and timing circuits that generate the appropriate signals
necessary to execute each instruction in a program.
It fetches an instruction from memory by sending an address (G) and
a read command (F) to the memory unit.
The instruction word(s) stored at the memory location specified by the
address is then transferred to the control unit (K).
After decoding this instruction, the control unit transmits the
appropriate signals to the other units in order to execute the specified
operation.
This sequence of fetch and execute is repeated by the control unit until
the computer is either powered off or reset.
Common Softwares
Operating System
Compilers
Assemblers
Interpreters
Multiprogramming
Computer resources are shared by many jobs or tasks (users still
waited a long time for their output)
Programming Language :
Definition
A vocabulary and set of grammatical rules
for instructing a computer to perform
specific tasks.
Example:
LOAD
BASEPAY
ADD
OVERPAY
STORE GROSSPAY
PL hierarchy
Assembler
Instructions written in assembly language
must be translated to machine language
instructions :
Assembler does this
Compiler
Instructions written in high-level language also
must be translated to machine language
instructions :
Compiler does this
Interpreter
An interpreter translates high-level instructions into an intermediate
form, which it then executes. In contrast, a compiler translates highlevel instructions directly into machine language.
Compiled programs generally run faster than interpreted programs.
The advantage of an interpreter, however, is that it does not need to
go through the compilation stage during which machine
instructions are generated. This process can be time-consuming if
the program is long. The interpreter, on the other hand, can
immediately execute high-level programs. For this reason,
interpreters are sometimes used during the development of a
program, when a programmer wants to add small sections at a time
and test them quickly.
Typed Languages
Type information was added to programs to
improve efficiency.
For ex. An integer addition is performed more
efficiently than floating point addition.
Hence it is more advantageous to declare the
value/variable as integer whenever it is
possible.
For example..
1. A language is strongly typed if it contains compiletime checks for type constraint violations. If all
checking is deferred to run time, it is weakly typed.
2. A language is strongly typed if it contains compileor run-time checks for type constraint violations.
If no checking is done, it is weakly typed.
3. A language is strongly typed if conversions
between different types are forbidden. If such
conversions are allowed, it is weakly typed.
More Examples..
4. A language is strongly typed if conversions
between different types must be indicated
explicitly. If implicit conversions are performed,
it is weakly typed.
5. A language is strongly typed if there is no
language-level way to disable or evade the
type system. If there are C-style casts or other
type-evasive mechanisms, it is weakly typed.
C++/Java?
C++ and Java are stronger typed than C.
Structured Programming
Structured programming
Disciplined approach to writing programs
Clear, easy to test and debug and easy to modify
Structured programming
Only the following code structures are used to
write programs:
1. Sequence of sequentially executed statements.
2. Conditional execution of statements (i.e., "if"
statements).
3. Looping.
4. Structured SubRoutine calls (e.g., 'gosub' but not
'goto').
Structured VS unstructured
Languages
Structured languages, such as Pascal, Ada
and dBASE, force the programmer to write
a structured program.
Unstructured languages such as FORTRAN,
COBOL and BASIC require discipline on
the part of the programmer to write a
structured program.
Structured VS unstructured
Languages
Unstructured languages define control flow largely in terms of a
GOTO command that transfers execution to a label in code. Structured
programming languages provide constructs (often called "if-then-else",
"switch", "unless", "while", "until", and "for") for creating a variety of
loops and conditional branches of execution, although they may also
provide a GOTO to reduce excessive nesting of cascades of "if"
structures, especially for handling exceptional conditions.
Strictly speaking, in a structured programming language, any code
structure should have only one entry point and one point of exit; many
languages such as C allow multiple paths to a structure's exit (such as
"continue", "break", and "return"), which can bring both advantages
and disadvantages in readability.
Objects