Programming
Week 9
LBSC 690
Information Technology
Outline
•	Programming

•	Javascript

•	Project description presentations

•	(if time allows) Finishing up databases

Software
•	Software models aspects of reality
–	Input and output represent the state of the world
–	Software describes how the two are related

•	Examples
–	Ballistic computations
–	Google
–	Microsoft Word
Types of Software

•	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 Vista)
–	Manages display, CPU, memory, disk, tape, 
•	Embedded program (e.g., TiVO)
–	Permanent software inside some device
Programming Languages
•	Used to specify every detail of the model

•	Special purpose
–	Able to specify an entire class of models
•	Spreadsheets (Excel, ...)
•	Databases (Access, Oracle, ...)

•	General purpose
–	Able to specify any possible model
•	JavaScript, Java, Perl, C, C++, ...
History of Programming
•	Machine language
–	Language that machine can understand
•	Assembly language
–	Assembler changes names to machine code
•	High-level languages
–	Compiler/Interpreter translates to machine language
–	FORTRAN, COBOL, C, C++, Javascript
•	Visual programming language
–	Visually arrange the interface components
–	Visual Basic, …
Programming Languages
Machine Language
•	Everything is a binary number
–	Operations
–	Data
•	For instance

00001000	ADD
00010101	first number (21)
01010110	second number (86)
Assembly Language
•	Symbolic instruction codes and addresses
–	Symbolic instruction code “ADD”
–	Symbolic address “SUM1”
•	For instance
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 the world around us
–	C++, Java, JavaScript
Programming for the Web
•	PHP [Server side]
–	Forms encode field values into a URL
–	Web server passes field values to a PHP 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
–	Web browser runs the program
Variables
•	Data types
–	Boolean: 	true, false
–	Number: 	5, 9, 3.1415926
–	String: 		“Hello World”
•	A “variable” holds a value of a specific data type
–	Represented as symbols: x, celsius
•	In JavaScript, var “declares” a variable
var b = true;	create a boolean b and set it to true
var n = 1;	create a number n and set it to 1
var s = “hello”;	create a string s and set it to “hello”
Operators
•	-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
Statements
•	In JavaScript, instructions end with a semicolon
–	If missing at end of line, it is automatically inserted

•	Simple assignment statements
celsius = 5/9 * (f-32);

•	Statements that invoke a method
Temperature.toCelsius(104);

•	Return a value from a method
return celsius;
Functions
•	Reusable code for complex “statements”
–	Takes one or more values as “parameters”
–	Returns at most one value as the “result”

Algorithms
•	A sequence of well-defined instructions designed to accomplish a certain task

•	Derived from the name of the Persian mathematician Al-Khwarizmi
Basic Control Structures
•	Sequential
–	Perform instructions one after another

•	Conditional
–	Perform instructions contingent on something

•	Repetition
–	Repeat instructions until a condition is met
Sequential Control Structure

Conditional Selection Control Structure

if (gender == “male”) {
	greeting = “Hello, Sir”
}
else {
	greeting = “Hello, Madam”
}
Generating Boolean Results
•	x == y 		true if x and y are equal
•	x != y  		true if x and y are not equal
•	x > y		true if x is greater than y
•	x <= y    		true if x is smaller than or equal  to y
•	x && y		true if both x and y are true           
•	x || y		true if either x or y is true
•	!x			true if x is false
Repetition Control Structure

Arrays
•	A set of elements
–	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 repetitions work naturally together
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/~oard/teaching/690/fall08/notes/9/firstscript.html
Placement
•	JavaScript is usually in the <head> section
Handling Events
•	Events: 
–	Actions that users perform while visiting a page

•	Use event handlers to response events
–	Event handlers triggered by events
–	Examples of event handlers in Javascript
•	onMouseover: the mouse moved over an object
•	onMouseout: the mouse moved off an object
•	onClick: the user clicked on an object

HTML “Forms”
•	Accept input and display output for JavaScript
Hands On: 
Adopt a JavaScript Program
•	Launch a Web browser
–	http://www.umiacs.umd.edu/~oard/teaching/690/fall08/hw/hw5/selector.htm

•	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
Programming Tips
•	Attention to detail!
–	Careful where you place that comma, semi-colon, etc.

•	Write a little bit of code at a time
–	Add some functionality, make sure it works, move on
–	Don’t try to write a large program all at once

•	Debug by viewing the “state” of your program
–	Print values of variables using document.write
–	Is the value what you expected?
JavaScript Resources
•	Google “javascript”
–	Tutorials: to learn to write programs
–	Code: to do things you want to do

•	Engineering and Physical Sciences Library
Term Project
•	Goal is to learn some things deeply
–	By doing something real

•	At least two key technologies
–	Web, database, programming, synchronized media

•	4-minute overview talk next week
–	3 slides (goals, mockup, scope)

•	12-minute presentation in final class session
–	Written report due by email 2 days later 
Some Details About Access
•	Joins are automatic if field names are same
–	Otherwise, drag a line between the fields
•	Sort order is easy to specify
–	Use the menu
•	Queries form the basis for reports
–	Reports give good control over layout
–	Use the report wizard - the formats are complex
•	Forms manage input better than raw tables
–	Invalid data can be identified when input
–	Graphics can be incorporated
Databases in the Real World
•	Some typical database applications:
–	Banking (e.g., saving/checking accounts)
–	Trading (e.g., stocks)
–	Airline reservations

•	Characteristics:
–	Lots of data
–	Lots of concurrent access
–	Must have fast access
–	“Mission critical”

Database Integrity
•	Registrar database must be internally consistent
–	Enrolled students must have an entry in student table
–	Courses must have a name

•	What happens:
–	When a student withdraws from the university?
–	When a course is taken off the books?

Integrity Constraints
•	Conditions that must always be true
–	Specified when the database is designed
–	Checked when the database is modified

•	RDBMS ensures integrity constraints are respected
–	So database contents remain faithful to real world
–	Helps avoid data entry errors
Referential Integrity
•	Foreign key values must exist in other table
–	If not, those records cannot be joined

•	Can be enforced when data is added
–	Associate a primary key with each foreign key

•	Helps avoid erroneous data
–	Only need to ensure data quality for primary keys
Concurrency
•	Thought experiment: You and your project partner are editing the same file…
–	Scenario 1: you both save it at the same time
–	Scenario 2: you save first, but before it’s done saving, your partner saves

Concurrency Example
•	Possible actions on a checking account
–	Deposit check (read balance, write new balance)
–	Cash check (read balance, write new balance)
•	Scenario:
–	Current balance: $500
–	You try to deposit a $50 check and someone tries to cash a $100 check at the same time
–	Possible sequences: (what happens in each case?)

Database Transactions
•	Transaction: sequence of grouped database actions
–	e.g., transfer $500 from checking to savings
•	“ACID” properties
–	Atomicity
•	All-or-nothing
–	Consistency
•	Each transaction must take the DB between consistent states.
–	Isolation:
•	Concurrent transactions must appear to run in isolation
–	Durability
•	Results of transactions must survive even if systems crash
Making Transactions
•	Idea: keep a log (history) of all actions carried out while executing transactions
–	Before a change is made to the database, the corresponding log entry is forced to a safe location

•	Recovering from a crash:
–	Effects of partially executed transactions are undone
–	Effects of committed transactions are redone
Before You Go
	On a sheet of paper, answer the following (ungraded) question (no names, please):

	What was the muddiest point in today’s class?
Before You Go!
•	On a sheet of paper (no names), answer the following question:

	What was the muddiest point in today’s class?