Unformatted text preview:

CS 110 Lecture 1 This course has a dual purpose A The first objective of this course is to teach you the fundamental programming skills that you will need to successfully write programs We will do this in the context of learning Java B The second objective is to teach you to write code that is robust well structured and maintainable and that adheres to sound principles of software engineering I What is Software Engineering Software Engineering is a discipline within computer science concerned with the application of sound engineering principles and practices to the construction of large complex multi component multi version software systems built by a team teams of engineers with the goals that the project be correct on time fault free within budget Sommerville in his 4th edition of Software Engineering There is a difference between programming and software engineering A programmer writes a complete program programming in the small while a software engineer writes a software component programming in the large that will be combined with the components written by other software engineers to build a system Components written by one developer may be modified by another or even incorporated in a later application Programming is personal S E is a team activity In Short Software engineering S E is concerned with the processes and methodologies used to develop and maintain large software systems Throughout this course we will begin to teach you these methodologies and practices that will ultimately at the end of your degree help you to become a successful software engineer II The birth of Software engineering The birth of S E can be traced to the Software Crisis The Term S E was coined in the late 60 s at a NATO conference to discuss the software crisis Quality of software was generally unacceptably low and that deadlines and cost limits were not being met In the 1960 s it was discovered that the practices and techniques what were appropriate for programming in the small could not adequately be scaled up to large projects or product software Source of problems evolved from the fact that the capabilities of hardware advanced faster than the methodologies associated with the creation of software 1948 64 Main frames Custom Software written in house by Data processing professionals Programs were relatively simple single purpose systems Operating systems if they existed at all were generally single user o Initially in this time frame we see programs being written in machine language And computing was relegated to the science and military realms Early computers were physically enormous expensive machines run from a console 1 User at a time 1 program at a time written in machine language binary 1 s and 0 s programmer operator operates machine himself Setting a starting address of the program in memory and then entering programs in binary one word at a time via switches on the front panel of the computer Then the programmer executed the program directly from the operator s console He then pushed the appropriate buttons to begin execution of the program Program instructions were executed sequentially in the order they were encountered He could cause the program to be executed one instruction at a time by repeatedly pressing a button The program would either run until finished and produce a output or crashed and result in a dump of memory and registers As the program ran the programmer could monitor its execution by the display of lights on the console These lights could display the contents of selected registers of memory locations If errors were discovered the programmer could halt the program examine the contents of memory and registers and debug the program directly from the console DRIVING FORCES FOR CHANGE Computers were VERY expensive idle CPU time was a waste of money Cost of hardware was cost of programmer time More programmers wanting to use the computer Example of a piece of machine code for the VAX family of computers expressed in HEX rather than binary 53DBAF4E 53D3AF44 C4AF53CBAF41 o Assembly Language No longer needed to write programs in machine code Write a program in a symbolic language which could be translated into machine code for the target computer by an assembler Assembly language is a programming language in which instructions correspond closely with the individual machine instructions of a particular computer they are mnemonics for the machine instruction Symbolic names can be used for memory locations for locations of specific instructions in the program and for register locations Assembly languages provided a more effective way to program than the use of machine code and is still used in converting a program written in a high level language to an equivalent machine language program Every processor is supplied with an assembly language representing its machine code and a means to convert it to machine code Through a translator called an assembler Problems Still an open shop philosophy where a single operator programmer had complete control of the computer system Lots of CPU idle time Required the programmer to be a skilled operator A piece of an assembly language program COST BASE VAR NUM BLKF BLKF BLKF BLKL 1 1 1 1 CVTLF MULF2 ADDF3 NUM R3 VAR R3 BASE R3 COST Equivalent C code 53DBAF4E 53D3AF44 C4AF53CBAF41 COST BASE NUM VAR o Fortran The inventors of Fortran invented the first successful HLL which is still in use today and an optimizing compiler for that language that produced very efficient code In fact the Fortran I compiler held the record for optimizing code for 20 years The design of FORTRAN IBM mathematical Formula Translating system was begun in 1954 by an IBM group lead by John Backus The initial version Fortran 0 was never implemented The implementation of Fortran I began in January 1955 and the fist compiler released in April 1957 for the IBM 704 many of the instructions of Fortran 1 can be tied directly to machine instructions of the 704 Features of Fortran I include I O formatting Variable names up to 6 characters User defined subroutines although not separately compiled An IF selection statement And a DO loop All of the control statements of FORTRAN I was based on 704 instructions The design of FORTRAN 0 also contained constructs that mimicked the conditional and unconditional branch statements from assembly language The design of Fortran 0 included a logical if statement but the 704 did not contain characters used for logical comparisons Therefore the


View Full Document

WVU CS 110 - Lecture 1

Loading Unlocking...
Login

Join to view Lecture 1 and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 1 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?