Week 5 LBSC 690 Information Technology Programming Week 5 LBSC 690 Information Technology
Software Software models aspects of reality Examples Input and output represent the state of the world Software describes how the two are related Examples Ballistic computations Alta Vista Microsoft Word
Types of Software Compilers and interpreters Application programs (e.g., Powerpoint) What you normally think of as a ``program’’ Compilers and interpreters Programs used to write other programs Operating system (e.g., Windows XP) Manages display, CPU, memory, disk, tape, Embedded program (e.g., BIOS) Permanent software inside some device
Discussion Point: The Mythical Person-Month If it would take one person three months, why does it take four people SIX months? The original estimate might have been too low Partitioning strategy led to a long “critical path” Training new people takes each some time More people means more communications
Training Time Simple Example Learning the specification takes time Full time person = 2,000 hours/year Part time person = 288 hours per year No training 7 part time people With training 10 part time people Learning the specification takes time Learning organizational “rules” takes longer!
Communications Sort of like continuous training Who needs to know what I just learned? Can be minimized by good partitioning Limit the number of interfaces Can be facilitated by computers Asynchronous communication techniques Email, private newsgroups, voice mail
Estimating Completion Time Rules of thumb 1/3 specification 1/6 coding 1/2 test planning, testing, and fixing! Add time for coding to learn as you go, but don’t take time away from the other parts! Reread the section on “gutless estimating” if you are tempted
Programming Languages Used to specify every detail of the model Special purpose Able to specify an entire class of models Spreadsheets (Excell, Quatro Pro, ...) Databases (Access, Paradox, Oracle, ...) General purpose Able to specify any possible model Pascal, C, Java, JavaScript, Perl, ...
History of Programming Machine language Language that machine can understand Machine dependent Zeroes and Ones Assembly language Assembler changes names to machine code High-level languages Compiler/Interpreter translates to machine language Machine independent FORTRAN, COBOL, C, C++, Javascript
Machine Language Everything is a binary number For instance Operations Data For instance 00001000 might represent “add” 00010101 first number to add 01010110 second number to add 00001000 00010101 01010110
Assembly Language Symbolic instruction codes and addresses Symbolic instruction code “ADD” Symbolic address “SUM1” For instance ADD 42, SUM1
High level Languages Procedural (modular) Programming Group instructions into meaningful abstractions C, Pascal, Perl Object oriented programming Group “data” and “methods” into “objects” Naturally represents responses to events C++, Java, JavaScript
Object Models Represent things in the world as “objects” Simplest objects are “variables” Represented with a name (n, teacher, …) May be assigned a value (n=4, teacher=“Daqing”, …) Represent actions with “methods” Simplest methods are “operations” Represented with a symbol (+, -, *, /, …) “Classes” group objects with methods Classes model how kinds of things behave Objects are instances of classes
Data Types Boolean: true/false Numbers: 5, 9, 3.1415926 Strings: “Hello World” Variables: Temperature, F, Celsius, Class: Temperature Instance: CollegeParkTemperature Method: toCelsius(F)
Arrays A set of elements Each element is assigned an index For example, the number of days in each month Each element is assigned an index A number used to refer to that element For example, x[4] is the fifth element - count from zero Arrays and loops work naturally togther
Operations and Assignments -x reverse the sign of x (negation) 6+5 Add 6 and 5 (numeric) “Hello” + “World” Concatenate two strings 2.1 * 3 Multiply two values x++ increase value of x by 1 x = 5 set the value of x to be 5 x += y x = x + y x *= 5 x = x * 5
Comparisons x == y returns true if x and y are equal x != y returns true if x and y are not equal x > y returns true if x is greater than y x <= y returns true if x is smaller than or equal to y x && y returns true if both x and y are true x || y returns true if either x or y is true !x returns true if x is false
toCelsius? Function toCelsius(F) { Celsius = 5/9 * (F-32) return Celsius }
Statements Simple assignment statements Celsius = 5/9 * (F-32) Statements that invoke a method Temperature.toCelsius(104) Return a value from a method return Celsius
Basic Control Structures Sequential Control Structure Conditional Selection Control Structure Repetition Control Structure
Sequential Control Structure b = 3 c = a * b
Conditional Selection Control Structure if (gender == “male”) { greeting = “Hello, Sir” } else { greeting = “Hello, Madam”
Repetition Control Structure Program Example 1: n = 1 while ( n <= 10) { document.writeln(n) n++ } Program 2: For (n = 1; n <= 10; n++) {
Programming for the Web Common Gateway Interface (CGI) [Server side] Forms encode field values into a URL CGI passes field values to a Perl program Program generates a web page as a response JavaScript [Client-side, interpreted] Human-readable “source code” sent to the browser Web browser runs the program Java applets [Client-side, compiled] Machine-readable “bytecode” sent to browser
What is JavaScript Embedded in html (interpreted), not compiled To make we pages more interactive Java Script is NOT Java Minimal data typing and modularity No graphics, no formal classes
JavaScript <HTML> <HEAD> <TITLE>My first script</TITLE> </HEAD> <BODY BGCOLOR=WHITE> <H1> <SCRIPT LANGUAGE=JAVASCRIPT TYPE="TEXT/JAVASCRIPT"> document.write("Hello, world!") </SCRIPT> </H1> </BODY></HTML> Try it at http://www.umiacs.umd.edu/~daqingd/Course/firstscript.html
Handling Events Events: Use event handlers to response events actions that users perform while visiting the page Use event handlers to response events Event handlers triggered by events Examples of event handlers onMouseover: the mouse moved over an object onMouseout: the mouse moved off an object onClick: the user clicked on an object
A Simple rollover.html Click rollover.html Move mouse over and away the arrow View source arrowRed, arrowBlue are variables (“new Image”) arrowRed.src specifies the value Event handlers “onMouseover” and “onMouseoff” Name of the image is defined by NAME = “arrow” <!– Hide script from old browsers … If (document.images) { … to test browser function
Using Function Repetitive tasks => functions Load multirollover1.html and multirollover2.html View sources of the two files Function chgImg handle changing images for all Program is shorter and clearer document.textField equal to document[“textField”]
Hands on Point: Adopt a JavaScript Program Launch a web browser Internet Explorer would be the best choice http://www.glue.umd.edu/~oard/690/select.html See how it behaves if you are 13 (or 65) View source and read the program Save a local copy Make some changes and see how it works
JavaScript and Cookies cookieName=cookieValue; expires=expirationDateGMT; path=URLpath; domain=siteDomain Combine cookie and javascript can do many things Set your user name Read your user name Use cookies as counters