Course Overview

What are Computers?
•	From Outside

–	CPU box, Monitor, Keyboard, mouse and Printers

•	From inside
–	ICs, Chipsets, Hard Disks, PCB cards, Drives, Buses
–	All the above are called Computer Hardware
–	The physical engine that solves problems
Programmability
•	Unique feature of Computers
•	raw HW can not do anything on its own
•	needs programs or software to do things
•	Same hardware can be configured to do a variety of functions
•	Programs provide this ability
•	`run' or `execute' the program in the machine for this

What are Programs
•	Sequence of precise instructions or commands
•	tell the HW to read input,
•	to compute simple arithmetic functions
•	and to print outputs etc.
•	Control HW to compute a variety of tasks
•	It is the programs that provide the rich problem solving abilities
   
Programming Main focus of this course
Low-level Programming
•	Programs that can run in a computer are low-level,
•	Instructions are simple arithmetic and logical operation on binary numbers (sequences of 0 and 1)
•	specific to the machine and will not run in other machines
•	called as machine programs (assembly programs)
•	very difficult to write and understand, error prone
•	for most common applications not necessary

Example
  mov R1,R2			– move the value from R1 to R2
   add R2,R3,R4		– add R2 and R3 and store it in R4
  sto R4, #010110		– store R4 in memory
High-level programming
•	Instructions are complex operations on a variety of data objects
•	programs are independent of machines
•	closer to problem domain
•	resembles natural language statements
•	easier to write, debug and understand
•	This is the focus of this course

•	Examples
–	compute the interest for six months of Mr. Sachin's Savings a/c
–	book a tkt. for Rahul from Mumbai to Bangalore
–	Switch on the alarm when belt not fastened
Translators/Compilers
•	High level programs can not run directly on computers
•	need to be translated to low level instructions
•	compilers do this job
•	compilers are themselves programs - system programs
•	CS students learn how to write compiler software
Operating Systems
•	Compilers alone are not enough
•	Other programs required for executing application programs – Operating Systems
•	Provides a high level view of hardware
•	Efficient utilization of resources
•	various utility functions, like reading inputs, printing, etc.
•	UNIX, Windows, SunOS, Solaris,
•	GNU/Linux
A Simplified Picture
OS is the boss
•	OS gateway to the machine
•	All interaction through the OS
•	OS is in control always
•	Safety, Security and Efficiency
•	Watches for inputs (mouse,keyboard) and provides appropriate responses
–	Giving login Prompts, 
–	Reading user name and passwords
–	Allows or rejects
•	Runs the command line interpreter (window manager)
The Shell
•	The command line interface is called shell
•	Various versions of shell
–	C-shell, Bash, etc.
•	After login, user commands are interpreted by the shell and appropriate OS commands are executed
•	User commands to create/remove, edit files, compile and execute programs etc. 
•	When a user command is executed, there is a momentary transfer of control 
•	After execution, control is transferred back

Programming Languages
•	Program instructions should be precise enough to be understood by machines or other programs
•	Compilers and Raw HW are dumb
•	need precise syntactic rules  and a unique semantics
•	Programming languages define these rules and semantics
•	Hundreds of languages - FORTRAN, Algol 60, PASCAL, BASIC, C, C++, Java,

Fortran
•	We teach FORTRAN
•	First High Level Language (1954 – 57)
•	John Bachus (IBM), got Turing Award
•	Revolutionary Step
•	Grand father of all modern PL
•	Name derived from Formula translation
•	Simple idea: Mathematical formulae are high level descriptions of computations
Evolution of Fortran
•	Original Fortran very primitive, restrictive and small
•	It has evolved over the years
–	Fortran II
–	Fortran IV
–	Fortran 66, Fortran 77 
–	Fortran 90, Fortran 95
•	Fortran 90 compares with all modern languages
•	We will use FORTRAN 90
•	So, this is a course on Programming in Fortran 90

Why Fortran
•	Efficient compilers exist
•	Oldest and widely used
•	Large base of utilities and programs
•	It has all modern features
•	Fortran 90 is just a choice
•	Self-learning of Programming in C, Java or any PL possible after this
Main Focus
•	Problem solving using computers
•	Fortran for concreteness
•	Exercises in programming in a HLL
•	All languages, at your level, are equivalent
•	Obtaining a solution is more difficult
•	Representing solution in a PL require mastery over the language and comes with practice