You are on page 1of 97

Spring 2019

EEM 201 – Computer Concepts


and C Programming
Introduction

Faculty of Engineering,
Dayalbagh Educational Institute, Agra
Objectives
• Introduction to CCCP
• Evaluation Scheme
• Course contents
• Short Film 
Why do we need Computers?
– Almost everything we do is influenced by
computing
• one of the fastest growing segments of global economy
– Applies in all aspects of life (Example applications?)
• Democracy/Politics
• Transportations Systems
• Real time Traffic Management
• Simulating earth quakes to develop effective early
warning systems
• Modeling brain activation patterns to study mental
disorders like schizophrenia etc.
• Robotics, Image processing, security, law enforcement…
What is this course all about?
• Computer Fundamentals (20%)
– What is a computer?
– How does it matter to us?
– How do computers work?
• C Programming Language (80%)
– Learn the grammar and vocabulary of C
– Learn how to get a computer to do useful work
= Programming
Administrivia
• Two best of CT1, CT2, CA+DHA1 : 80 marks
• CA+DHA2 : 40 marks
• Additional Assignment(s) : 20 marks
• Attendance : 10 marks
– 96% & above : 10 / 10
– 91 – 95% : 08 / 10
– 81 – 90% : 06 / 10
– 71 – 80% : 04 / 10
– 61 – 70% : 02 / 10
– 60% & below :0
Administrivia
• Course Textbooks.
– Byron Gottfried, Programming in C
– Others: Y. Kanetkar (Let us C), Balagurusamy etc.
EEM 201 Syllabus
UNIT – I
• Computer System Elements: Essential computer
hardware, Software: Applications, OS
• Problem solving: Algorithms, flow charts
• Compilers, assemblers and their role in s/w dev
UNIT – II
• C Language Elements: data types, variables, pre-proc
directives, statements, general form of a C program
• Operators, expressions and associativity
EEM 201 Syllabus
UNIT – III
• Control Structures: conditional statements and loops
Modular Programming using functions, Recursion
UNIT – IV
• Arrays, Structures and Pointers
UNIT – V
• Data Files, standard C library features
Unit 1
Today’s Objectives

• Basic computer components.


• Stored Program Model / von Neumann
architecture

10
Components of a Computer

• At the most basic level, a computer is a


device consisting of three pieces/parts:
– A processor to interpret and execute programs
– A memory to store both data and programs
– An input/output mechanism for transferring data to
and from the outside world.

11
The Stored Program Model

• Scientists John Mauchley and J. Presper Eckert,


and Hungarian mathematician, John von
Neumann, developed the idea of a computer that
could store instructions in memory
– The “Stored Program” concept
• Stored-program computers a.k.a. von Neumann
computers.
– key idea behind today’s computing systems

12
The Stored Program Model

• Characteristics of stored-program computers:


– Computers are made up of three hardware subsystems:
• A central processing unit (CPU)
• A main memory system
• An I/O system
– Programs and data stored in memory
– Sequential processing (execution) of instructions
by the CPU
– A single data path between the CPU and memory.
• known as the von Neumann bottleneck.

13
How it works

• Computers use a
fetch-decode-
execute cycle to run
programs

14
How it works

• 1. The control unit (inside the CPU) fetches the next


instruction to execute from memory using the program
counter to determine where the instruction is located.

15
How it works

• 2. CPU decodes the instruction into a form that the ALU


can understand.

16
How it works

• 3. Any data operands required to execute the instruction


are fetched from memory and placed into registers
within the CPU.

17
How it works

• 4. The ALU executes the instruction and places results in


either registers or memory.

18
Main Memory

• Memory lies at the heart of the stored-program computer.


• Two types of main memory: random access memory,
RAM, and read-only-memory, ROM.
– There are two types of RAM, static and dynamic RAM
• Dynamic RAM (DRAM) consists of capacitors that slowly
leak their charge over time. Thus they must be refreshed
every few milliseconds to prevent data loss.
– DRAM is “cheap” memory owing to its simple design.
• SRAM is very fast memory and it doesn’t need to be
refreshed like DRAM does. It is used to build cache
memory. (What’s that??)
• CPU reads instructions & data from cache & main memory
19
Secondary Memory

• Secondary Storage
– SSD (recent)
– Magnetic disks
– Magnetic Tape
• All programs and data are stored permanently here.

• ROM is non-volatile storage: it remembers its


contents even when the power is turned off..
– Used in startup BIOS
• More and more Flash memory-based devices nowadays

20
Memory Hierarchy

• Generally speaking, faster memory is more


expensive than slower memory.
• To provide the best performance at the lowest cost,
memory is organized in a hierarchical fashion.
• Small, fast storage elements are kept in the CPU,
larger, slower main memory is accessed through
the data bus.
• Larger permanent storage in the form of disk and
tape drives is still further away from the CPU.

21
Memory Hierarchy

22
Memory Hierarchy

• To access a particular piece of data, the CPU first


sends a request to its nearest memory, usually
cache.
• If the data is not in cache, then main memory is
queried. If the data is not in main memory, then
the request goes to disk.
• Once the data is located, then the data, and a
number of its nearby data elements are fetched
into cache memory.

23
Cache Memory

• The purpose of cache memory is to speed up


accesses by storing recently used data closer to the
CPU, instead of storing it in main memory.
• Although cache is much smaller than main memory,
its access time is a fraction of that of main memory.
– Thus, cache memory can obtain very good speedups
as compared to main memory in terms of memory
access time
• PROVIDED we get a good number of cache hits

24
Unit 1
Today’s Objectives

• Evolution of computers.

26
Evolution of Computers

• To fully appreciate present day computers, it is


important to understand how things got the way
they are.
• The evolution of computing machinery has taken
place over several centuries.
• We usually classify computer evolution into (atleast)
four generations according to the salient technology
of the era.

27
Evolution of Computers

• Generation Zero: Mechanical Calculating Machines


(1600s – 1940s)
– Prior to the 1600s – abacus
– Calculating Clock - Wilhelm Schickard (1592 - 1635)
• First mechanical calculator
• Capable of adding / subtracting 6 digit numbers

28
Evolution of Computers

• Generation Zero: Mechanical Calculating Machines


(1600s – 1940s)
– Pascaline - Blaise Pascal (1623 – 1662)

29
Evolution of Computers

• Generation Zero: Mechanical Calculating Machines


(1600s – 1940s)
– Difference Engine - Charles Babbage (1791 - 1871),
also designed but never built the Analytical Engine.

30
Evolution of Computers

• Generation Zero: Mechanical Calculating Machines


(1600s – 1940s)
– None of these devices could be programmed
– No concept of memory
– Required manual intervention in each step of their
calculations.

31
Evolution of Computers

• The First Generation: Vacuum Tube Computers


(1930s – 1950s)
– Atanasoff-Berry Computer (ABC, 1937 - 1938)
• Solved systems of linear equations.
• First completely electronic computer: built with vacuum tubes
• John Atanasoff and Clifford Berry of Iowa State University.
– Z1 (Konrad Zuse, 1930s)
• Added electrical technology and other improvements to
Babbage’s design
• Used electromechanical relays instead of Babbage’s hand-
cranked gears.
• Z1 was programmable, had memory, arithmetic unit, control
unit.
32
Evolution of Computers

• The First Generation: Vacuum Tube Computers


(1930s – 1950s)
– Electronic Numerical Integrator and Computer (ENIAC)
– John Mauchly and J. Presper Eckert (UPenn., 1946)
– first all-electronic, general-purpose digital computer
– Specs:
• 17,468 vacuum tubes
• 1,800 square feet of floor space
• Weight: 30 tons
• Consumed 174 kilowatts of power
• Memory capacity of Twenty 10-digit decimal numbers
• Used punched cards to store data
33
The ENIAC!

34
Programming the ENIAC!

35
Evolution of Computers

• The First Generation: Vacuum Tube Computers


(1930s – 1950s)
– IBM 650: first mass-produced computer. (1955)
– UNIVAC (Universal Automatic Computer): First
commercial computer delivered to a business client
– Other major computer manufacturers of this period
include Engineering Research Associates (ERA), and
Computer Research Corporation (CRC).
° UNIVAC and ERA were bought by Remington Rand, the
ancestor of the Unisys Corporation.

36
Evolution of Computers

• The First Generation: Vacuum Tube Computers


(1930s – 1950s)
– Advantage: Fastest computing devices of their time
– Drawbacks:
• Heat, power consumption
• Bulk, Cost
• Vacuum tube blow-outs caused hardware failures => heavy
maintenance costs, down time
• Difficult to program => limited commercial applicability
– Manual / Machine language programs

37
I think there is a world market
for maybe five computers.
THOMAS J. WATSON, PRESIDENT OF IBM, 1943

38
Evolution of Computers

• The Second Generation: Transistor-based


Computers (1950s – mid 1960s)
– Transistors revolutionized the computer industry
• Smaller and consumed less power than vacuum tubes, and
worked more reliably
• So computer circuits became smaller, more reliable.
• Computers of this generation were still bulky and
expensive.
– Typically used by universities, governments, and large
businesses.
– Targetted for the atomic energy industry
• Programming in symbolic/assembly languages
39
Evolution of Computers

• The Second Generation: Transistor-based


Computers (1950s – mid 1960s): Examples
– IBM 7094 (scientific) and 1401 (business)
– Digital Equipment Corporation (DEC) PDP-1
– UNIVAC 1100
– Control Data Corporation 1604.
• The world’s first supercomputer, CDC 6600
– costed $10 million!
– 10 million instructions per second!
– 128 kilowords of main memory!
40
Evolution of Computers

• The Third Generation: Integrated Circuit


Computers (mid 1960s – late 1970s)
• Tens to hundreds of transistors on a single chip
– Electronic components were miniaturized
– Dramatic improvements in fabrication processes, costs and
efficiency of computing systems
– ICs were smaller, less expensive, more reliable, consumed less
power and heat compared to transistors
– Faster and bigger main memory & storage
• Improvements in cost and speed of main memory
• Magnetic disk storage technology developed in this era
– High level languages like COBOL, PASCAL, FORTRAN etc.
41
Evolution of Computers

• The Third Generation: Integrated Circuit


Computers (mid 1960s – late 1970s)
• Tens to hundreds of transistors on a single chip
– IBM 360
– DEC PDP-8 and PDP-11
– Cray-1 supercomputer
– . . . and many others.
• By this time, IBM had gained overwhelming
dominance in the industry.
– The major computer manufacturers of this era were IBM and
the BUNCH (Burroughs, Unisys, NCR, Control Data, and
Honeywell). 42
There is no reason anyone
would want a computer in
their home.
KEN OLSEN, FOUNDER OF DEC, 1977

43
Evolution of Computers

• The Fourth Generation: VLSI Computers


(mid 1970s - ????)
– Very large scale integrated circuits (VLSI) have
several thousands of transistors per chip.
– Enabled the creation of commercial microprocessors.
• The first of these was the 4-bit Intel 4004.
– Later versions, such as the 8080, 8086, and 8088
spawned the idea of “personal computing.”
• Early Microcomputers: Altair 8800, Apple I and
Apple II, and IBM PC.
– Eventually Desktop PCs, Laptops, PDAs etc. 44
Evolution of Computers

• The Fourth Generation: VLSI Computers


(mid 1970s - ????)
– Commercial operating systems like MS-DOS,
Windows, Unix, Linux etc.
– User friendly GUIs
• Made computers accessible to mass markets
– High level languages like C; Object Oriented
languages like Smalltalk, C++, Java, Ruby, Python…
• Enabled development of software for ever widening range
of applications

45
Evolution of Computers

• The Fifth Generation?

– Natural Language Processing, Neural Networks,


Robotics, AI in Gaming, Expert Systems
– Computers can now beat world champs in games like
Chess and Go!
– Quantum Computing
– Are we there yet?

46
Evolution of Computers

• Moore’s Law (1965)


– Gordon Moore, Intel founder
– “The density of transistors in an integrated circuit
will double every year.”
• Contemporary version:
– “The density of silicon chips doubles every 18
months.”
But this “law” cannot hold forever ...

47
Classification of Computers

• A computer is a machine that can be


programmed to manipulate symbols. Its
principal characteristics are:
– It responds to a specific set of instructions in a
well-defined manner.
– It can execute sequences of instructions
(programs).
– It can quickly store and retrieve large amounts
of data.
48
Classification of Computers

• Personal Computers
• Workstations
• Mini Computers
• Mainframe Computers
• Super Computers

Considerable overlap in these categories


49
5. Super Computers

• Broad term for some of the fastest, most powerful


computers currently available in the world.
• Very expensive
• Employed for specialized applications that require
immense amounts of mathematical calculations
– Weather forecasting, scientific simulations, (animated)
graphics, CFD, nuclear energy research etc.
– EDA, Analysis of geological data
• Cray Supercomputers, India’s PARAM Series etc.
• Which is the fastest super computer in the
world today? How fast is it?
50
4. Mainframe Computers

• Very large, expensive computer capable of


supporting hundreds, or even thousands, of users
simultaneously
• A supercomputer channels all its power into
executing a few programs as fast as possible,
whereas a typical mainframe uses its power to
execute many programs concurrently
• Less powerful compute power compared to super
computers
• Examples: IBM Mainframes like System Z9/z10,
S/390 etc., Unisys ClearPath series etc. 51
3. Mini Computers

• Mid sized, multi-processing computers, smaller in scale


as compared to a large mainframe
– Were the smallest computers of their times (1960s – 70s)
– Capability somewhat between Mainframes and
Workstations/PCs
• Distinction between small mainframes and
minicomputers is vague
• Organisations may use a mini-computer for such tasks as
managing small financial systems or databases etc.
– IBM AS/400 series during 1960s

52
2. Workstations

• Typically single-user computers used for


engineering applications (CAD/CAM), desktop
publishing, software development, and other
types of applications that require moderate
amount of computing power and relatively high
quality graphics capabilities
• Generally come with high-resolution graphics,
large amounts of RAM, built-in network support,
GUI and mass storage devices
• Examples: Dell/ Sun/ HP Workstations etc.
• Overlap with PCs nowadays 53
1. Personal Computers

• (A.K.A. Micro Computer) A small, relatively


inexpensive computer designed for an individual user.
• Based on microprocessor technology puts an entire
CPU on a single chip
• Home use, gaming, web-based applications, small
business applications
– Mostly Apple Macintosh versus IBM Clones
• Laptops, Notebooks, Palmtops, Tablet PCs…
• Distinction from workstations is fuzzy nowadays

54
Unit 1
Today’s Objectives

• Software
– Application versus System Software
– Operating Systems
• Role
• Use
• Evolution

• Multi-tasking in Operating Systems


– A bit deeper: Exactly how does an OS multi-task?
• Process versus Program
• Process Lifecycle
56
Software

• Application software
– Programs designed to perform specific tasks
that satisfy the general requirements of the
end users
• System software
– Programs that support the execution and
development of other programs
– Two major types
• Operating systems
• Translation systems (compilers, drivers etc.)
57
Application Software

• Application software made computers popular


and easy to use
• Common application software:
– (Microsoft Office) Word, PowerPoint, Excel…
– Firefox, Chrome, Internet Explorer…
– Paint , Adobe PhotoShop…
– Quick Time, VLC, WMPlayer…
– MATLAB, Octave…
– Adobe Acrobat…

58
Systems Software

• Operating Systems
– Control and manage the computing resources of the system
– Examples
• MSDOS, Windows, Unix, Linux, Minix, Android…
• Compilers/Interpreters/Linkers
– Convert high level programming language instructions into machine-
understandable form
– Examples: GNU C/C++, javac…
• Device Drivers
– Help the computer to communicate with peripheral devices
– Examples: Printer Drivers, Flash disk drivers etc.

59
What is an Operating System?

• A program that acts as an intermediary


between a user of a computer and the
computer hardware
• Key Operating System goals:
– Enable the execution of user programs and
make solving user problems easier
– Make the computer system convenient to use
– Use computer hardware in an efficient manner

60
Characteristics of
Early Operating Systems

• Early software: Assemblers,


Device Drivers, Compilers,
Linkers.
• Extremely slow I/O devices.
• Very low CPU utilization.
• But these computers were very
secure.
• OS evolved through the
generations
Simple Batch Systems

• Supported high-level languages, used magnetic


tapes.
• Jobs were batched together by type of languages.
• An operator performed the repetitive tasks of
loading and running jobs, and collecting the output
– Not possible for users to inspect
memory or debug programs directly.
• Uniprogramming
Simple Batch Systems
Drawbacks of Uni-programming

• I/O operations are exceedingly slow


(compared to instruction execution).
– A program containing even a very small
number of I/O operations will spend most
of its time waiting for them.
– Hence poor CPU usage when only one
program is present in memory.
Multiprogramming

Several jobs kept in main memory at the same time,


and the CPU multiplexed among them.
Multiprogramming

A. Frank - P. Weisberg
Multiprogramming

A. Frank - P. Weisberg
Multi-tasking

• My computer has one or two processor cores


– How am I able to
• run 6 browser windows
• 2 movie downloads
• 3 open documents
• watch a movie on vlc AND
• switch to CounterStrike when I’m bored
All at once?!!
• Ans: Multi-tasking

• Another concept: Virtual Memory


Process Concept

• A Program is passive entity stored on disk


(executable file), process is active
– Program becomes process when executable
file is loaded into (main/primary) memory
– Process = program in execution
• Execution of program may be started via
GUI mouse clicks / command line etc.
• One program can have several processes
– Multiple users executing the same program
Process State Diagram

• As a process executes, it changes state


– new: The process is being created
– running: Instructions are being executed
– waiting: The process is waiting for some
event to occur
– ready: The process is waiting to be assigned
to a processor
– terminated: The process has finished
execution
Process State Diagram
Today’s Objectives

• Programming Languages
– High level, assembly and machine language
– Compilers and how they work
– Interpreters

• Software Development: the key activities

72
What is a Programming language?
Sequence of instructions

Algorithm Program
(in human language) (in computer language)

• A programming language is a set of rules that provides a


way of telling a computer what operations to perform
– Set of rules for communicating an algorithm
– Provides a linguistic framework for describing computations
• Many programming languages exist
– Low-level: directly understandable by computer
– High-level: needs a translator
Levels of programming languages

• (Binary) Machine language


– Unintelligible to human user
• Low-level assembly language
– Mnemonic names for machine operations
– Explicit manipulation of memory addresses
– Machine-dependent
• High-level language
– Readable
– Machine-independent
Levels of programming languages
class Triangle {
...
float surface()
High-level Language Program return b*h/2;
}

LOAD r1,b
LOAD r2,h
MUL r1,r2
Low-level Language Program DIV r1,#2
RET

0001001001000101001001
Executable Machine code 001110110010101101001.
..
Types of Programming Languages

• First Generation Languages


• Second Generation Languages
• Third Generation Languages
• Fourth Generation Languages
• Fifth Generation Languages
First Generation Languages

• Machine language
– Operation codes specify the operation to
perform, like addition or subtraction.
– Operands identify the data to be processed.
– Machine language is machine dependent as it is
the only language the computer can understand.
• Core i7s and ARM Processors have different machine
languages
– Very efficient code but very difficult to write.
Second Generation Languages

• Assembly languages
– Symbolic operation codes replaced binary
operation codes.
– Assembly language programs needed to be
“assembled” for execution by the computer. Each
assembly language instruction is translated into
one machine language instruction.
– Very efficient code and easier to write.
Third Generation Languages

• Closer to English but included simple


mathematical notation.
– Programs written in source code which must be
translated into machine language programs called
object code.
– The translation of source code to object code is
accomplished by a machine language system
program called a compiler.
Third Generation Languages

• Alternative to compilation is interpretation


which is accomplished by a system program
called an interpreter.
• Common third generation languages
– FORTRAN
– COBOL
– C, C++, Java, C#
– VB, VC++
4th & 5th Generation Languages

• 4GL: Require fewer instructions to


accomplish a task than 3GLs.
– Commonly used with databases
• Query languages (example: SQL)
• 5GL: Declarative and Rule-based languages
– LISP, Prolog etc., used in AI
Examples of Programming Languages
• FORTRAN
– FORmula TRANslation
– Developed at IBM in the mid-1950s
– Designed for scientific and mathematical applications by
scientists and engineers
• COBOL
– COmmon Business Oriented Language.
– Developed in 1959.
– Designed to be common to many different computers.
– Typically used for business applications.
Examples of Programming Languages
• C
– Procedural language developed by Bell Laboratories in early 1970s.
– Provides control and efficiency of assembly language while having
third generation language features.
• Often used for system programs.
• Example: >90% of UNIX is written in C; many other OSs.
• JAVA
– An object-oriented language
– Allows a web page developer to create programs for applications,
called applets that can be used through a browser.
– Objective of JAVA developers is that it be machine, platform and
operating system independent.
• Others: Scripting languages like VBScript/Javascript;
Markup languages like HTML etc.
Programming languages are languages

• Learning to speak and use a programming language is in


many ways like learning to speak a human language
– In both kind of languages you have to learn new vocabulary,
syntax and semantics (new words, sentence structure and
meaning)
– Both kind of language require lots of practice to make perfect.
• BUT
• Computer languages lack ambiguity and vagueness
– Take a handful of sand (How much is a handful?)
– The man with the gun stood up (Who exactly?)
• In a programming language a sentence either means one
thing or it means nothing – no ambiguity
How Translators work

• Compilers
– Convert HLL statements into low-level/assembly code
• Assemblers
– Convert assembly code into machine code
• Libraries
– Collections of useful pre-compiled functions
• Linkers
– Link the relevant libraries to your compiled code to create the final
executable file (.exe)
• IDEs
– Combine all of the capabilities needed for developing software
– Examples: Microsoft VC++ IDE, Netbeans (Oracle), (Open Source) Code
Blocks, Eclipse etc.
Today’s Objectives

• Software Development
– Program versus software product
– Key SDLC activities

86
Program versus S/W Product
Program Software Product
• Small scale • Medium to large scale
• Developed quickly, without • Detailed project planning,
detailed design design and implementation
• Single/small group of • Large, possible distributed team
developers of developers
• Single user/small group of • Medium to large market of end
target users users
• No associated documentation • Proper documentation and well
or maintenance support planned maintenance phases

87
Software Development Life Cycle
• Very important to clearly identify the various
phases of the software development process
– Identify the key activities of each phase
– Define the entry/exit criteria for each phase
• Phases
– Feasibility Study
– Requirements gathering, analysis and specification
– Design
– Implementation and Unit Testing
– Integration and System Testing
88
– Maintenance
Feasibility Study
• Main aim: determine whether developing the product is
– Financially worthwhile
– Technically feasible
• Activities during Feasibility Study
– Work out an overall understanding of the problem.
– Formulate different solution strategies.
– Analyze alternate solution strategies in terms of resources
required, cost of development, and development time.
– Do cost/benefit analysis to determine which solution is best.
• Phase Outcome/Exit criterion
– Is this project a viable / profitable / feasible option for the
organization or not?
89
Requirements Analysis and Specification

• Aim of the phase:


– To understand the exact requirements of the customer,
– To document them properly.
• Consists of two distinct activities:
– requirements gathering and analysis
– requirements specification.
• Engineers doing requirements analysis and specification
are called analysts in the software industry
• Outcome/ Exit criterion
– Software Requirements Specification (SRS) Document

90
Design
• Aims/activities of the phase:
– To transform the requirements specification into a form suitable
for implementation in some programming language
– During this phase, the software architecture is derived from the
SRS document.
• Outcome
– Software architecture of the top level modules of the software
detailing the data organization and algorithms within each
module

91
Coding and Unit Testing
• Aim of the phase:
– To translate software design into source code of the chosen
programming language.
• Activities
– Each module of the design is coded
– Each module is unit tested: tested independently
– Each module is documented
• Outcome/Exit Criteria:
– A set of program modules that have been individually tested and
documented

92
Integration and System Testing

• Different modules are integrated in a planned manner


– Normally integration is carried out through a number of steps.
• During each integration step, the partially integrated
system is tested.
• After all modules have been successfully integrated and
tested, system testing is carried out.
• Goal of system testing: to ensure that the developed
system functions according to its requirements as
specified in the SRS document.

93
Maintenance Phase
• Maintenance of a software product:
– Requires much more effort than the effort to develop the
product itself.
– development effort to maintenance effort is typically 40:60.
– Adaptive, corrective and perfective maintenance

94
Relative Effort for Phases
• Maintenance of a software product:
– Requires much more effort than the effort to develop the product itself.
– development effort to maintenance effort is typically 40:60.
– Adaptive, corrective and perfective maintenance
60
Relative Effort
• Phases between feasibility 50
study and testing 40
– known as development phases.
30
• Among all life cycle phases 20
– maintenance phase consumes
maximum effort. 10

• Among development phases, 0

Maintnce
Design

Test
Coding
Req. Sp
– testing phase consumes the
maximum effort. 95
SDLC Models

• Many followed by software companies all over


the world
– Classical Waterfall Model
• Iterative Waterfall
– Evolutionary/Iterative Enhancement
– Prototyping Model
– Many others…
Why Software Engineering
is so important
• Mars Climate Orbiter crashed in September 1999 because of
wrong units in a program.
• Shooting down of Airbus A320 by USS Vincennes, 1988
– attributed to the cryptic and misleading output displayed by the
tracking software
• Ariane 5 satellite launcher malfunction cause:
– Faulty code reuse
• Knight Capital, 2012, lost $440,000,000 in 30 minutes due to
bug in trading algorithms
• Blackout in 2003 across eight US states and Canada affected 50
million people caused by a race condition bug
• World War 3 (almost) during Cold War!
• Tesla Autopilot Crash, May 2016

You might also like