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