CIS 111

Week 10 Notes: Software Programming and Languages Design


10.1) Programming: a Five-Step procedure
  
  Algorithm - a set of ordered steps used to solve a problem
  
  5 Steps
  
  1. Clarify the programming needs
  2. Design the program
  3. Code the program
  4. Test the program
  5. Document and maintain the program
  
  First step: Clarify the programming needs
    1) Clarify Objectives and users.
    2) Clarify desired outputs
    3) Clarify Desired inputs
    4) Clarify the Desired Processing
    5) Double check the feasibility
    6) Document the Analysis
	
	
  The second step: Design the program
    1) determine the program logic using a top down approach
    2) Design Details using Psuedocode, Flowcharts, and control structures
	   4 examples control structures
	     a) sequence
	     b) selection: If Then Else
	     c) case: compound if then else
	     d) iteration, for loop or while loop
		 
    3) structured walkthrough - formal review, scrutinize the design
	
  The third step: code the program
    Select the appropriate language
	follow the syntax
	
  The fourth step: Test the program
    desk checking - proofread the code
	Debug the program - remove errors - the first bug was a real moth, p. 10.11.
	Run Real-World Data - enter lots of data, some of which may be imperfect,
	to test the code.
	
  The fifth step
    Document and Maintain the Program
      1) user documentation
      2) operator documentation - help people who run large computers to 
	     maintain software for several users
      3) programmer documentation
      4) maintain the program
  
10.2) Five generations of Programming Languages

  First Generation, 1945 - machine language
    Basic language of the computer - binary digits - varies from machine to
	machine (not platform independent)
  
  
  Second Generation, 1950s - assembly language
    Assembly Language - assembles abbreviations - requires an assembler to run
	
  
  Third Generation, 1960s - high level languages
    Includes English like languages such as COBOL, and Basic.  Requires and 
	interpreter or a compiler
	
	Compiler - translates code into machine language BEFORE it is run.
	  pro - faster runtime
	
	Interpreter - translates code to machine language on the fly while it is
	running
	  pro - can be platform independent
	  
  
  Fourth Generation, 1970 - very high level languages
    4GL for short
	  includes Report Generators, Query languages, and Application Generators
	  

  Fifth Generation, 1980s - natural languages
    attempt to emulate human thought and speech.  Considered Artificial 
	Intelligence.
	
10.3) High Level Programming

  	Fortran - short of Formula Translator - for Math
	  Adv - can handle complex mathematical and logical expressions
	  Dis - does not handle input and output as well as other languages
	
	COBOL - COmmon Business Oriented Language - for Business
	  Adv- machine independent
	  Dis- it is very wordy and lengthy
	  
	C - for portability and scientific use
	  Adv - works well with microcomputers
	  Dis - difficult to learn.
	  
	BASIC - the Easy language
	  Adv - easy to use
	  Dis - processing is slow
	  
	Pascal - the simple language
	  Adv - easy to learn, graphics abilities, appropriate for scientific use
	  Div - limited input/output capabilities
	  
10.4) Object Oriented programming
	
	  Objects are concepts of code that can be reused for similar applications
	  It is a self-contained module.
	  
	  Methods are used to process and object.
	  
	  Encapsulation
	  Inheritance
	  Polymorphism
	  C++ is the most common object oriented language
	  
	  Visual programming - allows users to create simple program usig a GUI
	  instead of writing code
	  
10.5) Internet programming  
	  
	HTML - Hypertext Markup language
	XML - extensible markup language
	VRML - Virtual Reality Markup Language - make 3D web environments
	Java - platform independent interpreted language similar to C++
	Javascript - developed independently from Java, used in web browser
	  to create dynamic websites
	  
	ActiveX - Also for creating interactive webpages - developed by Microsoft,
	  features reusable components.  Currently in competition with Java for 
	  the next step in Web technology.
  
		

Homework 10:
Due: 4/3 
in Interactive computing book
AC Ch. 3
3.26 #1 
Checked out during lab