<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6747850777942446682</id><updated>2012-02-16T04:17:03.659-08:00</updated><category term='SOMETHING CHANGE'/><category term='Computer Peripherals'/><category term='Mechatronics Engineering'/><category term='Computers'/><category term='Learn JAVA Programming'/><category term='Bluetooth and wireless technology'/><category term='Download / Get Lyrics'/><category term='IP Addressing'/><category term='Computer Science Engineering'/><category term='Undersea Cable'/><category term='Socket Programming Guide'/><category term='USB / Universal Serial Bus'/><category term='Download sites'/><category term='Hard Ware'/><category term='EDUCATION INFO 4 U'/><category term='Bermuda Triangle'/><title type='text'>COMPUTERS  AND  MORE</title><subtitle type='html'>Usefull information on Seminar topics for, all types , and infosearch4 all topics using google search.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-2841833919241797761</id><published>2008-08-15T02:41:00.000-07:00</published><updated>2008-08-15T02:43:41.983-07:00</updated><title type='text'></title><content type='html'>&lt;!-- Begin AdBrite Video Code --&gt;&lt;br /&gt;&lt;script src="http://files.adbrite.com/player/js/abplayerlib.js" language="javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript"&gt;&lt;br /&gt;abWritePlayer(1746507, 355, 320, "http://vid.adbrite.com/video/abplayer?");&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="355" height="320" id="abPlayerObj" align="middle"&gt;&lt;param name="movie" value="http://vid.adbrite.com/video/abplayer.swf?&amp;vid=1746507&amp;og=1" /&gt;&lt;param name="quality" value="best" /&gt;&lt;embed src="http://vid.adbrite.com/video/abplayer.swf?&amp;vid=1746507&amp;og=1" quality="best" width="355" height="320" name="abPlayerObj" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;!-- End AdBrite Video Code --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-2841833919241797761?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/2841833919241797761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=2841833919241797761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2841833919241797761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2841833919241797761'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/08/abwriteplayer1746507-355-320-httpvid.html' title=''/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-7674334937491619352</id><published>2008-05-21T05:17:00.000-07:00</published><updated>2008-05-21T05:18:14.261-07:00</updated><title type='text'>HTML Colours and Colour Values</title><content type='html'>HTML Colors&lt;br /&gt;&lt;br /&gt;Colors are displayed combining  RED, GREEN, and BLUE light sources.&lt;br /&gt; &lt;br /&gt;Color Values&lt;br /&gt;HTML colors can be defined as a hexadecimal notation for the combination of Red, Green, and Blue color values (RGB).&lt;br /&gt;The lowest value that can be given to one light source is 0 (hex #00) and the highest value is 255 (hex #FF).&lt;br /&gt;The table below shows the result of combining Red, Green, and Blue light sources:.&lt;br /&gt;Color Color HEX Color RGB&lt;br /&gt;  #000000 rgb(0,0,0)&lt;br /&gt;  #FF0000 rgb(255,0,0)&lt;br /&gt;  #00FF00 rgb(0,255,0)&lt;br /&gt;  #0000FF rgb(0,0,255)&lt;br /&gt;  #FFFF00 rgb(255,255,0)&lt;br /&gt;  #00FFFF rgb(0,255,255)&lt;br /&gt;  #FF00FF rgb(255,0,255)&lt;br /&gt;  #C0C0C0 rgb(192,192,192)&lt;br /&gt;  #FFFFFF rgb(255,255,255)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;W3C Standard Color Names&lt;br /&gt;W3C has listed 16 color names that will validate with an HTML validator.&lt;br /&gt;The color names are: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow.&lt;br /&gt; &lt;br /&gt;Cross-browser Color Names&lt;br /&gt;A collection of nearly 150 color names are supported by all major browsers.&lt;br /&gt;View the cross-browser color names&lt;br /&gt; &lt;br /&gt;Cross-browser Color Values&lt;br /&gt;Some years ago, when most computers only supported 256 different colors, a list of 216 Web Safe Colors was suggested as a Web standard. The reason for this was that the Microsoft and Mac operating system used 40 different "reserved" fixed system colors (about 20 each). &lt;br /&gt;We are not sure how important this is now, since most computers today have the ability to display millions of different colors, but the choice is left to you. &lt;br /&gt;The 216 cross-browser color palette was created to ensure that all computers would display the colors correctly when running a 256 color palette:&lt;br /&gt;000000 000033 000066 000099 0000CC 0000FF&lt;br /&gt;003300 003333 003366 003399 0033CC 0033FF&lt;br /&gt;006600 006633 006666 006699 0066CC 0066FF&lt;br /&gt;009900 009933 009966 009999 0099CC 0099FF&lt;br /&gt;00CC00 00CC33 00CC66 00CC99 00CCCC 00CCFF&lt;br /&gt;00FF00 00FF33 00FF66 00FF99 00FFCC 00FFFF&lt;br /&gt;330000 330033 330066 330099 3300CC 3300FF&lt;br /&gt;333300 333333 333366 333399 3333CC 3333FF&lt;br /&gt;336600 336633 336666 336699 3366CC 3366FF&lt;br /&gt;339900 339933 339966 339999 3399CC 3399FF&lt;br /&gt;33CC00 33CC33 33CC66 33CC99 33CCCC 33CCFF&lt;br /&gt;33FF00 33FF33 33FF66 33FF99 33FFCC 33FFFF&lt;br /&gt;660000 660033 660066 660099 6600CC 6600FF&lt;br /&gt;663300 663333 663366 663399 6633CC 6633FF&lt;br /&gt;666600 666633 666666 666699 6666CC 6666FF&lt;br /&gt;669900 669933 669966 669999 6699CC 6699FF&lt;br /&gt;66CC00 66CC33 66CC66 66CC99 66CCCC 66CCFF&lt;br /&gt;66FF00 66FF33 66FF66 66FF99 66FFCC 66FFFF&lt;br /&gt;990000 990033 990066 990099 9900CC 9900FF&lt;br /&gt;993300 993333 993366 993399 9933CC 9933FF&lt;br /&gt;996600 996633 996666 996699 9966CC 9966FF&lt;br /&gt;999900 999933 999966 999999 9999CC 9999FF&lt;br /&gt;99CC00 99CC33 99CC66 99CC99 99CCCC 99CCFF&lt;br /&gt;99FF00 99FF33 99FF66 99FF99 99FFCC 99FFFF&lt;br /&gt;CC0000 CC0033 CC0066 CC0099 CC00CC CC00FF&lt;br /&gt;CC3300 CC3333 CC3366 CC3399 CC33CC CC33FF&lt;br /&gt;CC6600 CC6633 CC6666 CC6699 CC66CC CC66FF&lt;br /&gt;CC9900 CC9933 CC9966 CC9999 CC99CC CC99FF&lt;br /&gt;CCCC00 CCCC33 CCCC66 CCCC99 CCCCCC CCCCFF&lt;br /&gt;CCFF00 CCFF33 CCFF66 CCFF99 CCFFCC CCFFFF&lt;br /&gt;FF0000 FF0033 FF0066 FF0099 FF00CC FF00FF&lt;br /&gt;FF3300 FF3333 FF3366 FF3399 FF33CC FF33FF&lt;br /&gt;FF6600 FF6633 FF6666 FF6699 FF66CC FF66FF&lt;br /&gt;FF9900 FF9933 FF9966 FF9999 FF99CC FF99FF&lt;br /&gt;FFCC00 FFCC33 FFCC66 FFCC99 FFCCCC FFCCFF&lt;br /&gt;FFFF00 FFFF33 FFFF66 FFFF99 FFFFCC FFFFFF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Colors Values.&lt;br /&gt;&lt;br /&gt;Colors are displayed combining  RED, GREEN, and BLUE light sources.&lt;br /&gt; &lt;br /&gt;Color Values&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML colors are defined using a hexadecimal notation for the combination of Red, Green, and Blue color values (RGB). The lowest value that can be given to one of the light sources is 0 (hex #00). The highest value is 255 (hex #FF). &lt;br /&gt; &lt;br /&gt;Turn Off the Red&lt;br /&gt;If you turn off the Red light completely, there are 65536 different combination of Green and Blue (256 x 256) to experiment with.&lt;br /&gt;Click here to see some of these combinations of Green and Blue. &lt;br /&gt; &lt;br /&gt;Turn On the Red&lt;br /&gt;By setting the Red parameter to its maximum value, there are still 65536 different combination of Green and Blue (256 x 256) to experiment with.&lt;br /&gt;Click here to see some of these combinations of Green and Blue. &lt;br /&gt; &lt;br /&gt;16 Million Different Colors&lt;br /&gt;The combination of Red, Green and Blue values from 0 to 255 gives a total of more than 16 million different colors to play with (256 x 256 x 256).&lt;br /&gt;Most modern monitors are capable of displaying at least 16384 different colors.&lt;br /&gt;If you look at the color table below, you will see the result of varying the red light from 0 to 255, while keeping the green and blue light at zero.&lt;br /&gt;To see a full list of 16384 different colors based on red light varying from 0 to 255, click on one of the hexadecimal or rgb values below.&lt;br /&gt;Red Light HEX RGB&lt;br /&gt;  #000000 &lt;br /&gt;rgb(0,0,0) &lt;br /&gt;&lt;br /&gt;  #080000 &lt;br /&gt;rgb(8,0,0) &lt;br /&gt;&lt;br /&gt;  #100000 &lt;br /&gt;rgb(16,0,0) &lt;br /&gt;&lt;br /&gt;  #180000 &lt;br /&gt;rgb(24,0,0) &lt;br /&gt;&lt;br /&gt;  #200000 &lt;br /&gt;rgb(32,0,0) &lt;br /&gt;&lt;br /&gt;  #280000 &lt;br /&gt;rgb(40,0,0) &lt;br /&gt;&lt;br /&gt;  #300000 &lt;br /&gt;rgb(48,0,0) &lt;br /&gt;&lt;br /&gt;  #380000 &lt;br /&gt;rgb(56,0,0) &lt;br /&gt;&lt;br /&gt;  #400000 &lt;br /&gt;rgb(64,0,0) &lt;br /&gt;&lt;br /&gt;  #480000 &lt;br /&gt;rgb(72,0,0) &lt;br /&gt;&lt;br /&gt;  #500000 &lt;br /&gt;rgb(80,0,0) &lt;br /&gt;&lt;br /&gt;  #580000 &lt;br /&gt;rgb(88,0,0) &lt;br /&gt;&lt;br /&gt;  #600000 &lt;br /&gt;rgb(96,0,0) &lt;br /&gt;&lt;br /&gt;  #680000 &lt;br /&gt;rgb(104,0,0) &lt;br /&gt;&lt;br /&gt;  #700000 &lt;br /&gt;rgb(112,0,0) &lt;br /&gt;&lt;br /&gt;  #780000 &lt;br /&gt;rgb(120,0,0) &lt;br /&gt;&lt;br /&gt;  #800000 &lt;br /&gt;rgb(128,0,0) &lt;br /&gt;&lt;br /&gt;  #880000 &lt;br /&gt;rgb(136,0,0) &lt;br /&gt;&lt;br /&gt;  #900000 &lt;br /&gt;rgb(144,0,0) &lt;br /&gt;&lt;br /&gt;  #980000 &lt;br /&gt;rgb(152,0,0) &lt;br /&gt;&lt;br /&gt;  #A00000 &lt;br /&gt;rgb(160,0,0) &lt;br /&gt;&lt;br /&gt;  #A80000 &lt;br /&gt;rgb(168,0,0) &lt;br /&gt;&lt;br /&gt;  #B00000 &lt;br /&gt;rgb(176,0,0) &lt;br /&gt;&lt;br /&gt;  #B80000 &lt;br /&gt;rgb(184,0,0) &lt;br /&gt;&lt;br /&gt;  #C00000 &lt;br /&gt;rgb(192,0,0) &lt;br /&gt;&lt;br /&gt;  #C80000 &lt;br /&gt;rgb(200,0,0) &lt;br /&gt;&lt;br /&gt;  #D00000 &lt;br /&gt;rgb(208,0,0) &lt;br /&gt;&lt;br /&gt;  #D80000 &lt;br /&gt;rgb(216,0,0) &lt;br /&gt;&lt;br /&gt;  #E00000 &lt;br /&gt;rgb(224,0,0) &lt;br /&gt;&lt;br /&gt;  #E80000 &lt;br /&gt;rgb(232,0,0) &lt;br /&gt;&lt;br /&gt;  #F00000 &lt;br /&gt;rgb(240,0,0) &lt;br /&gt;&lt;br /&gt;  #F80000 &lt;br /&gt;rgb(248,0,0) &lt;br /&gt;&lt;br /&gt;  #FF0000 &lt;br /&gt;rgb(255,0,0) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Shades of Gray&lt;br /&gt;Gray colors are displayed using an equal amount of power to all of the light sources. To make it easier for you to select the right gray color we have compiled a table of gray shades for you:&lt;br /&gt;  RGB(0,0,0)  #000000 &lt;br /&gt;  RGB(8,8,8)  #080808 &lt;br /&gt;  RGB(16,16,16)  #101010 &lt;br /&gt;  RGB(24,24,24)  #181818 &lt;br /&gt;  RGB(32,32,32)  #202020 &lt;br /&gt;  RGB(40,40,40)  #282828 &lt;br /&gt;  RGB(48,48,48)  #303030 &lt;br /&gt;  RGB(56,56,56)  #383838 &lt;br /&gt;  RGB(64,64,64)  #404040 &lt;br /&gt;  RGB(72,72,72)  #484848 &lt;br /&gt;  RGB(80,80,80)  #505050 &lt;br /&gt;  RGB(88,88,88)  #585858 &lt;br /&gt;  RGB(96,96,96)  #606060 &lt;br /&gt;  RGB(104,104,104)  #686868 &lt;br /&gt;  RGB(112,112,112)  #707070 &lt;br /&gt;  RGB(120,120,120)  #787878 &lt;br /&gt;  RGB(128,128,128)  #808080 &lt;br /&gt;  RGB(136,136,136)  #888888 &lt;br /&gt;  RGB(144,144,144)  #909090 &lt;br /&gt;  RGB(152,152,152)  #989898 &lt;br /&gt;  RGB(160,160,160)  #A0A0A0 &lt;br /&gt;  RGB(168,168,168)  #A8A8A8 &lt;br /&gt;  RGB(176,176,176)  #B0B0B0 &lt;br /&gt;  RGB(184,184,184)  #B8B8B8 &lt;br /&gt;  RGB(192,192,192)  #C0C0C0 &lt;br /&gt;  RGB(200,200,200)  #C8C8C8 &lt;br /&gt;  RGB(208,208,208)  #D0D0D0 &lt;br /&gt;  RGB(216,216,216)  #D8D8D8 &lt;br /&gt;  RGB(224,224,224)  #E0E0E0 &lt;br /&gt;  RGB(232,232,232)  #E8E8E8 &lt;br /&gt;  RGB(240,240,240)  #F0F0F0 &lt;br /&gt;  RGB(248,248,248)  #F8F8F8 &lt;br /&gt;  RGB(255,255,255)  #FFFFFF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-7674334937491619352?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/7674334937491619352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=7674334937491619352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7674334937491619352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7674334937491619352'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/html-colours-and-colour-values.html' title='HTML Colours and Colour Values'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-5949532737861266757</id><published>2008-05-21T05:16:00.000-07:00</published><updated>2008-05-21T05:17:28.361-07:00</updated><title type='text'>Adding Images Using HTML</title><content type='html'>HTML Images&lt;br /&gt;&lt;br /&gt;With HTML you can display images in a document.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;Insert images&lt;br /&gt;This example demonstrates how to display images in your Web page.&lt;br /&gt;Insert images from different locations&lt;br /&gt;This example demonstrates how to display images from another folder or another server in your Web page.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;The Image Tag and the Src Attribute &lt;br /&gt;In HTML, images are defined with the &lt;img&gt; tag.  &lt;br /&gt;The &lt;img&gt; tag is empty, which means that it contains attributes only and it has no closing tag. &lt;br /&gt;To display an image on a page, you need to use the src attribute. Src stands for "source". The value of the src attribute is the URL of the image you want to display on your page. &lt;br /&gt;The syntax of defining an image:&lt;br /&gt;&lt;img src="url"&gt;&lt;br /&gt;The URL points to the location where the image is stored. An image named "boat.gif" located in the directory "images" on "www.w3schools.com" has the URL: http://www.w3schools.com/images/boat.gif. &lt;br /&gt;The browser puts the image where the image tag occurs in the document. If you put an image tag between two paragraphs, the browser shows the first paragraph, then the image, and then the second paragraph. &lt;br /&gt; &lt;br /&gt;The Alt Attribute &lt;br /&gt;The alt attribute is used to define an "alternate text" for an image. The value of the alt attribute is an author-defined text: &lt;br /&gt;&lt;img src="boat.gif" alt="Big Boat"&gt;&lt;br /&gt;The "alt" attribute tells the reader what he or she is missing on a page if the browser can't load images. The browser will then display the alternate text instead of the image. It is a good practice to include the "alt" attribute for each image on a page, to improve the display and usefulness of your document for people who have text-only browsers. &lt;br /&gt; &lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;If an HTML file contains ten images - eleven files are required to display the page right. Loading images take time, so my best advice is: Use images carefully. &lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;Background image&lt;br /&gt;This example demonstrates how to add a background image to an HTML page.&lt;br /&gt;Aligning images&lt;br /&gt;This example demonstrates how to align an image within the text.&lt;br /&gt;Let the image float&lt;br /&gt;This example demonstrates how to let an image float to the left or right of a paragraph.&lt;br /&gt;Adjust images to different sizes&lt;br /&gt;This example demonstrates how to adjust images to different sizes.&lt;br /&gt;Display an alternate text for an image&lt;br /&gt;This example demonstrates how to display an alternate text for an image. The "alt" attribute tells the reader what he or she is missing on a page if the browser can't load images. It is a good practice to include the "alt" attribute for each image on a page.&lt;br /&gt;Make a hyperlink of an image&lt;br /&gt;This example demonstrates how to use an image as a link.&lt;br /&gt;Create an image map&lt;br /&gt;This example demonstrates how to create an image map, with clickable regions. Each of the regions is a hyperlink.&lt;br /&gt;Turn an image into an image map&lt;br /&gt;This example demonstrates how to turn an image into an image map. You will see that if you move the mouse over the image, the coordinates will be displayed on the status bar. &lt;br /&gt; &lt;br /&gt;Image Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;img&gt;&lt;br /&gt;Defines an image&lt;br /&gt;&lt;map&gt;&lt;br /&gt;Defines an image map&lt;br /&gt;&lt;area&gt;&lt;br /&gt;Defines a clickable area inside an image map&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Background In HTML&lt;br /&gt;&lt;br /&gt;A good background can make a Web site look really great.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;Good background and text color&lt;br /&gt;An example of a background color and a text color that makes the text on the page easy to read.  &lt;br /&gt;Bad background and text color&lt;br /&gt;An example of a background color and a text color that makes the text on the page difficult to read. &lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;Backgrounds&lt;br /&gt;The &lt;body&gt; tag has two attributes where you can specify backgrounds. The background can be a color or an image.&lt;br /&gt;Bgcolor&lt;br /&gt;The bgcolor attribute specifies a background-color for an HTML page. The value of this attribute can be a hexadecimal number, an RGB value, or a color name:&lt;br /&gt;&lt;body bgcolor="#000000"&gt;&lt;br /&gt;&lt;body bgcolor="rgb(0,0,0)"&gt;&lt;br /&gt;&lt;body bgcolor="black"&gt;&lt;br /&gt;The lines above all set the background-color to black. &lt;br /&gt;Background&lt;br /&gt;The background attribute specifies a background-image for an HTML page. The value of this attribute is the URL of the image you want to use. If the image is smaller than the browser window, the image will repeat itself until it fills the entire browser window.&lt;br /&gt;&lt;body background="clouds.gif"&gt;&lt;br /&gt;&lt;body background="http://www.w3schools.com/clouds.gif"&gt;&lt;br /&gt;The URL can be relative (as in the first line above) or absolute (as in the second line above).&lt;br /&gt;Note: If you want to use a background image, you should keep in mind:&lt;br /&gt;•	Will the background image increase the loading time too much? &lt;br /&gt;•	Will the background image look good with other images on the page? &lt;br /&gt;•	Will the background image look good with the text colors on the page? &lt;br /&gt;•	Will the background image look good when it is repeated on the page? &lt;br /&gt;•	Will the background image take away the focus from the text? &lt;br /&gt; &lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;The bgcolor, background, and the text attributes in the &lt;body&gt; tag are deprecated in the latest versions of HTML (HTML 4 and XHTML). The World Wide Web Consortium (W3C) has removed these attributes from its recommendations.&lt;br /&gt;Style sheets (CSS) should be used instead (to define the layout and display properties of HTML elements).&lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;Good background image&lt;br /&gt;An example of a background image and a text color that makes the text on the page easy to read.  &lt;br /&gt;Good background image 2&lt;br /&gt;An example of a background image and a text color that makes the text on the page easy to read.  &lt;br /&gt;Bad background image&lt;br /&gt;An example of a background image and a text color that makes the text on the page very difficult to read.  &lt;br /&gt; &lt;br /&gt;Computer Joke&lt;br /&gt;Support: "Type dir, space, a, colon."&lt;br /&gt;Customer: "With a space after 'space'?"&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-5949532737861266757?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/5949532737861266757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=5949532737861266757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5949532737861266757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5949532737861266757'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/adding-images-using-html.html' title='Adding Images Using HTML'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-6700354967205359913</id><published>2008-05-21T05:15:00.000-07:00</published><updated>2008-05-21T05:16:03.237-07:00</updated><title type='text'>HTML - Forms &amp; Inputs</title><content type='html'>HTML Forms &amp; Inputs&lt;br /&gt;&lt;br /&gt;HTML Forms are used to select different kinds of user input.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;Text fields&lt;br /&gt;This example demonstrates how to create text fields on an HTML page. A user can write text in a text field.&lt;br /&gt;Password fields&lt;br /&gt;This example demonstrates how to create a password field on an HTML page.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;Forms&lt;br /&gt;A form is an area that can contain form elements.&lt;br /&gt;Form elements are elements that allow the user to enter information (like text fields, textarea fields, drop-down menus, radio buttons, checkboxes, etc.) in a form.&lt;br /&gt;A form is defined with the &lt;form&gt; tag.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;  &lt;input&gt;&lt;br /&gt;  &lt;input&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Input&lt;br /&gt;The most used form tag is the &lt;input&gt; tag. The type of input is specified with the type attribute. The most commonly used input types are explained below.&lt;br /&gt;Text Fields&lt;br /&gt;Text fields are used when you want the user to type letters, numbers, etc. in a form.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;First name: &lt;br /&gt;&lt;input type="text" name="firstname"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Last name: &lt;br /&gt;&lt;input type="text" name="lastname"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;First name:  &lt;br /&gt;Last name:  &lt;br /&gt;Note that the form itself is not visible. Also note that in most browsers, the width of the text field is 20 characters by default.  &lt;br /&gt;Radio Buttons&lt;br /&gt;Radio Buttons are used when you want the user to select one of a limited number of choices.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;&lt;input type="radio" name="sex" value="male"&gt; Male&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;input type="radio" name="sex" value="female"&gt; Female&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt; Male &lt;br /&gt; Female &lt;br /&gt;Note that only one option can be chosen. &lt;br /&gt;Checkboxes &lt;br /&gt;Checkboxes are used when you want the user to select one or more options of a limited number of choices.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;I have a bike:&lt;br /&gt;&lt;input type="checkbox" name="vehicle" value="Bike"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;I have a car: &lt;br /&gt;&lt;input type="checkbox" name="vehicle" value="Car"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;I have an airplane: &lt;br /&gt;&lt;input type="checkbox" name="vehicle" value="Airplane"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;I have a bike:  &lt;br /&gt;I have a car:  &lt;br /&gt;I have an airplane:  &lt;br /&gt; &lt;br /&gt;The Form's Action Attribute and the Submit Button&lt;br /&gt;When the user clicks on the "Submit" button, the content of the form is sent to another file. The form's action attribute defines the name of the file to send the content to. The file defined in the action attribute usually does something with the received input.&lt;br /&gt;&lt;form name="input" action="html_form_action.asp"&lt;br /&gt;method="get"&gt;&lt;br /&gt;Username: &lt;br /&gt;&lt;input type="text" name="user"&gt;&lt;br /&gt;&lt;input type="submit" value="Submit"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;Username:   &lt;br /&gt;If you type some characters in the text field above, and click the "Submit" button, you will send your input to a page called "html_form_action.asp". That page will show you the received input. &lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;Checkboxes&lt;br /&gt;This example demonstrates how to create check-boxes on an HTML page. A user can select or unselect a checkbox.&lt;br /&gt;Radio buttons&lt;br /&gt;This example demonstrates how to create radio-buttons on an HTML page.&lt;br /&gt;Simple drop down box&lt;br /&gt;This example demonstrates how to create a simple drop-down box on an HTML page. A drop-down box is a selectable list.&lt;br /&gt;Another drop down box&lt;br /&gt;This example demonstrates how to create a simple drop-down box with a pre-selected value.&lt;br /&gt;Textarea&lt;br /&gt;This example demonstrates how to create a text-area (a multi-line text input control). A user can write text in the text-area. In a text-area you can write an unlimited number of characters.&lt;br /&gt;Create a button&lt;br /&gt;This example demonstrates how to create a button. On the button you can define your own text.&lt;br /&gt;Fieldset around data&lt;br /&gt;This example demonstrates how to draw a border with a caption around your data.&lt;br /&gt;Form Examples&lt;br /&gt;Form with input fields and a submit button&lt;br /&gt;This example demonstrates how to add a form to a page. The form contains two input fields and a submit button.&lt;br /&gt;Form with checkboxes&lt;br /&gt;This form contains three checkboxes, and a submit button.&lt;br /&gt;Form with radio buttons&lt;br /&gt;This form contains two radio buttons, and a submit button.&lt;br /&gt;Send e-mail from a form&lt;br /&gt;This example demonstrates how to send e-mail from a form.&lt;br /&gt; &lt;br /&gt;Form Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;form&gt;&lt;br /&gt;Defines a form for user input&lt;br /&gt;&lt;input&gt;&lt;br /&gt;Defines an input field&lt;br /&gt;&lt;textarea&gt;&lt;br /&gt;Defines a text-area (a multi-line text input control)&lt;br /&gt;&lt;label&gt;&lt;br /&gt;Defines a label to a control&lt;br /&gt;&lt;fieldset&gt;&lt;br /&gt;Defines a fieldset&lt;br /&gt;&lt;legend&gt;&lt;br /&gt;Defines a caption for a fieldset&lt;br /&gt;&lt;select&gt;&lt;br /&gt;Defines a selectable list (a drop-down box)&lt;br /&gt;&lt;optgroup&gt;&lt;br /&gt;Defines an option group&lt;br /&gt;&lt;option&gt;&lt;br /&gt;Defines an option in the drop-down box&lt;br /&gt;&lt;button&gt;&lt;br /&gt;Defines a push button&lt;br /&gt;&lt;isindex&gt;	Deprecated. Use &lt;input&gt; instead&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-6700354967205359913?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/6700354967205359913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=6700354967205359913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6700354967205359913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6700354967205359913'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/html-forms-inputs.html' title='HTML - Forms &amp; Inputs'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-6699751949040349649</id><published>2008-05-21T05:13:00.000-07:00</published><updated>2008-05-21T05:14:47.621-07:00</updated><title type='text'>HTMl- Frames, Tables, Lists</title><content type='html'>HTML Frames&lt;br /&gt;&lt;br /&gt;With frames, you can display more than one Web page in the same browser window.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;Vertical frameset&lt;br /&gt;This example demonstrates how to make a vertical frameset with three different documents. &lt;br /&gt;Horizontal frameset&lt;br /&gt;This example demonstrates how to make a horizontal frameset with three different documents.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;Frames&lt;br /&gt;With frames, you can display more than one HTML document in the same browser window. Each HTML document is called a frame, and each frame is independent of the others.&lt;br /&gt;The disadvantages of using frames are:&lt;br /&gt;•	The web developer must keep track of more HTML documents &lt;br /&gt;•	It is difficult to print the entire page &lt;br /&gt; &lt;br /&gt;The Frameset Tag&lt;br /&gt;•	The &lt;frameset&gt; tag defines how to divide the window into frames &lt;br /&gt;•	Each frameset defines a set of rows or columns &lt;br /&gt;•	The values of the rows/columns indicate the amount of screen area each row/column will occupy &lt;br /&gt; &lt;br /&gt;The Frame Tag&lt;br /&gt;•	The &lt;frame&gt; tag defines what HTML document to put into each frame &lt;br /&gt;In the example below we have a frameset with two columns. The first column is set to 25% of the width of the browser window. The second column is set to 75% of the width of the browser window. The HTML document "frame_a.htm" is put into the first column, and the HTML document "frame_b.htm" is put into the second column:&lt;br /&gt;&lt;frameset cols="25%,75%"&gt;&lt;br /&gt;   &lt;frame src="frame_a.htm"&gt;&lt;br /&gt;   &lt;frame src="frame_b.htm"&gt;&lt;br /&gt;&lt;/frameset&gt;&lt;br /&gt;Note: The frameset column size value can also be set in pixels (cols="200,500"), and one of the columns can be set to use the remaining space (cols="25%,*").&lt;br /&gt; &lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;If a frame has visible borders, the user can resize it by dragging the border. To prevent a user from doing this, you can add noresize="noresize" to the &lt;frame&gt; tag.&lt;br /&gt;Add the &lt;noframes&gt; tag for browsers that do not support frames.&lt;br /&gt;Important: You cannot use the &lt;body&gt;&lt;/body&gt; tags together with the &lt;frameset&gt;&lt;/frameset&gt; tags! However, if you add a &lt;noframes&gt; tag containing some text for browsers that do not support frames, you will have to enclose the text in &lt;body&gt;&lt;/body&gt; tags! See how it is done in the first example below.&lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;How to use the &lt;noframes&gt; tag&lt;br /&gt;This example demonstrates how to use the &lt;noframes&gt; tag. &lt;br /&gt;Mixed frameset&lt;br /&gt;This example demonstrates how to make a frameset with three documents, and how to mix them in rows and columns. &lt;br /&gt;Frameset with noresize="noresize"&lt;br /&gt;This example demonstrates the noresize attribute. The frames are not resizable. Move the mouse over the borders between the frames and notice that you can not move the borders.&lt;br /&gt;Navigation frame&lt;br /&gt;This example demonstrates how to make a navigation frame. The navigation frame contains a list of links with the second frame as the target. The file called "tryhtml_contents.htm" contains three links. The source code of the links:&lt;br /&gt;&lt;a href ="frame_a.htm" target ="showframe"&gt;Frame a&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href ="frame_b.htm" target ="showframe"&gt;Frame b&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href ="frame_c.htm" target ="showframe"&gt;Frame c&lt;/a&gt;&lt;br /&gt;The second frame will show the linked document.&lt;br /&gt;Inline frame&lt;br /&gt;This example demonstrates how to create an inline frame (a frame inside an HTML page). &lt;br /&gt;Jump to a specified section within a frame&lt;br /&gt;This example demonstrates two frames. One of the frames has a source to a specified section in a file. The specified section is made with &lt;a name="C10"&gt; in the "link.htm" file. &lt;br /&gt;Jump to a specified section with frame navigation&lt;br /&gt;This example demonstrates two frames. The navigation frame (content.htm) to the left contains a list of links with the second frame (link.htm) as a target. The second frame shows the linked document. One of the links in the navigation frame is linked to a specified section in the target file. The HTML code in the file "content.htm" looks like this: &lt;a href ="link.htm" target ="showframe"&gt;Link without Anchor&lt;/a&gt;&lt;br&gt;&lt;a href ="link.htm#C10" target ="showframe"&gt;Link with Anchor&lt;/a&gt;. &lt;br /&gt; &lt;br /&gt;Frame Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;frameset&gt;&lt;br /&gt;Defines a set of frames&lt;br /&gt;&lt;frame&gt;&lt;br /&gt;Defines a sub window (a frame)&lt;br /&gt;&lt;noframes&gt;&lt;br /&gt;Defines a noframe section for browsers that do not handle frames&lt;br /&gt;&lt;iframe&gt;&lt;br /&gt;Defines an inline sub window (frame)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML TABLES&lt;br /&gt;&lt;br /&gt;With HTML you can create tables.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;Tables&lt;br /&gt;This example demonstrates how to create tables in an HTML document.&lt;br /&gt;Table borders&lt;br /&gt;This example demonstrates different table borders.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;Tables&lt;br /&gt;Tables are defined with the &lt;table&gt; tag. A table is divided into rows (with the &lt;tr&gt; tag), and each row is divided into data cells (with the &lt;td&gt; tag). The letters td stands for "table data," which is the content of a data cell. A data cell can contain text, images, lists, paragraphs, forms, horizontal rules, tables, etc.&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	row 2, cell 2&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Tables and the Border Attribute&lt;br /&gt;If you do not specify a border attribute the table will be displayed without any borders. Sometimes this can be useful, but most of the time, you want the borders to show. &lt;br /&gt;To display a table with borders, you will have to use the border attribute:&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Headings in a Table&lt;br /&gt;Headings in a table are defined with the &lt;th&gt; tag.&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;Heading&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Another Heading&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;Heading	Another Heading&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	row 2, cell 2&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Empty Cells in a Table&lt;br /&gt;Table cells with no content are not displayed very well in most browsers.&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	&lt;br /&gt;Note that the borders around the empty table cell are missing (NB! Mozilla Firefox displays the border).&lt;br /&gt;To avoid this, add a non-breaking space (&amp;nbsp;) to empty data cells, to make the borders visible: &lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	 &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;The &lt;thead&gt;,&lt;tbody&gt; and &lt;tfoot&gt; elements are seldom used, because of bad browser support. Expect this to change in future versions of XHTML. If you have Internet Explorer 5.0 or newer, you can view a working example in our XML tutorial.&lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;Table with no border&lt;br /&gt;This example demonstrates a table with no borders.&lt;br /&gt;Headings in a table&lt;br /&gt;This example demonstrates how to display table headers.&lt;br /&gt;Empty cells&lt;br /&gt;This example demonstrates how to use "&amp;nbsp;" to handle cells that have no content.&lt;br /&gt;Table with a caption&lt;br /&gt;This example demonstrates a table with a caption.&lt;br /&gt;Table cells that span more than one row/column&lt;br /&gt;This example demonstrates how to define table cells that span more than one row or one column.&lt;br /&gt;Tags inside a table&lt;br /&gt;This example demonstrates how to display elements inside other elements.&lt;br /&gt;Cell padding&lt;br /&gt;This example demonstrates how to use cellpadding to create more white space between the cell content and its borders.&lt;br /&gt;Cell spacing&lt;br /&gt;This example demonstrates how to use cellspacing to increase the distance between the cells.&lt;br /&gt;Add a background color or a background image to a table&lt;br /&gt;This example demonstrates how to add a background to a table.&lt;br /&gt;Add a background color or a background image to a table cell&lt;br /&gt;This example demonstrates how to add a background to one or more table cells.&lt;br /&gt;Align the content in a table cell&lt;br /&gt;This example demonstrates how to use the "align" attribute to align the content of cells, to create a "nice-looking" table.&lt;br /&gt;The frame attribute&lt;br /&gt;This example demonstrates how to use the "frame" attribute to control the borders around the table.&lt;br /&gt;The frame and border attributes&lt;br /&gt;How to use the "frame" and "border" attributes to control the borders around the table.&lt;br /&gt; &lt;br /&gt;Table Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;table&gt;&lt;br /&gt;Defines a table&lt;br /&gt;&lt;th&gt;&lt;br /&gt;Defines a table header&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;Defines a table row&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Defines a table cell&lt;br /&gt;&lt;caption&gt;&lt;br /&gt;Defines a table caption&lt;br /&gt;&lt;colgroup&gt;&lt;br /&gt;Defines groups of table columns&lt;br /&gt;&lt;col&gt;&lt;br /&gt;Defines the attribute values for one or more columns in a table&lt;br /&gt;&lt;thead&gt;&lt;br /&gt;Defines a table head&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;Defines a table body &lt;br /&gt;&lt;tfoot&gt;&lt;br /&gt;Defines a table footer &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Lists&lt;br /&gt;&lt;br /&gt;HTML supports ordered, unordered and definition lists.&lt;br /&gt; &lt;br /&gt;Examples&lt;br /&gt;An unordered list&lt;br /&gt;This example demonstrates an unordered list.&lt;br /&gt;An ordered list&lt;br /&gt;This example demonstrates an ordered list.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt; &lt;br /&gt;Unordered Lists&lt;br /&gt;An unordered list is a list of items. The list items are marked with bullets (typically small black circles).&lt;br /&gt;An unordered list starts with the &lt;ul&gt; tag. Each list item starts with the &lt;li&gt; tag.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Coffee&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Milk&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;•	Coffee &lt;br /&gt;•	Milk &lt;br /&gt;Inside a list item you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt; &lt;br /&gt;Ordered Lists&lt;br /&gt;An ordered list is also a list of items. The list items are marked with numbers.&lt;br /&gt;An ordered list starts with the &lt;ol&gt; tag. Each list item starts with the &lt;li&gt; tag.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Coffee&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Milk&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;1.	Coffee &lt;br /&gt;2.	Milk &lt;br /&gt;Inside a list item you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt; &lt;br /&gt;Definition Lists&lt;br /&gt;A definition list is not a list of items. This is a list of terms and explanation of the terms.&lt;br /&gt;A definition list starts with the &lt;dl&gt; tag. Each definition-list term starts with the &lt;dt&gt; tag. Each definition-list definition starts with the &lt;dd&gt; tag.&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;Coffee&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Black hot drink&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;Milk&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;White cold drink&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;Coffee &lt;br /&gt;Black hot drink &lt;br /&gt;Milk &lt;br /&gt;White cold drink &lt;br /&gt;Inside a definition-list definition (the &lt;dd&gt; tag) you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt; &lt;br /&gt;More Examples&lt;br /&gt;Different types of ordered lists&lt;br /&gt;This example demonstrates different types of ordered lists.&lt;br /&gt;Different types of unordered Lists&lt;br /&gt;This example demonstrates different types of unordered lists.&lt;br /&gt;Nested list&lt;br /&gt;This example demonstrates how you can nest lists.&lt;br /&gt;Nested list 2&lt;br /&gt;This example demonstrates a more complicated nested list.&lt;br /&gt;Definition list&lt;br /&gt;This example demonstrates a definition list.&lt;br /&gt; &lt;br /&gt;List Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;Defines an ordered list&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;Defines an unordered list&lt;br /&gt;&lt;li&gt;&lt;br /&gt;Defines a list item&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;Defines a definition list&lt;br /&gt;&lt;dt&gt;&lt;br /&gt;Defines a definition term&lt;br /&gt;&lt;dd&gt;&lt;br /&gt;Defines a definition description&lt;br /&gt;&lt;dir&gt;&lt;br /&gt;Deprecated. Use &lt;ul&gt; instead&lt;br /&gt;&lt;menu&gt;&lt;br /&gt;Deprecated. Use &lt;ul&gt; instead&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-6699751949040349649?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/6699751949040349649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=6699751949040349649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6699751949040349649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6699751949040349649'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/html-frames-tables-lists.html' title='HTMl- Frames, Tables, Lists'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4026082541232994957</id><published>2008-05-21T05:10:00.000-07:00</published><updated>2008-05-21T05:12:10.626-07:00</updated><title type='text'>HTML text Formatting</title><content type='html'>HTML Text Formatting&lt;br /&gt;&lt;br /&gt;HTML defines a lot of elements for formatting output, like bold or italic text.&lt;br /&gt;Below are a lot of examples that you can try out yourself:&lt;br /&gt;Examples&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_formattingch" target="_blank"&gt;Text formatting&lt;/a&gt;This example demonstrates how you can format text in an HTML document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_pre" target="_blank"&gt;Preformatted text&lt;/a&gt;This example demonstrates how you can control the line breaks and spaces with the pre tag.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_computeroutput" target="_blank"&gt;"Computer output" tags&lt;/a&gt;This example demonstrates how different "computer output" tags will be displayed.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_address" target="_blank"&gt;Address&lt;/a&gt;This example demonstrates how to write an address in an HTML document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_abbr" target="_blank"&gt;Abbreviations and acronyms&lt;/a&gt;This example demonstrates how to handle an abbreviation or an acronym.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_bdo" target="_blank"&gt;Text direction&lt;/a&gt;This example demonstrates how to change the text direction.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_q" target="_blank"&gt;Quotations&lt;/a&gt;This example demonstrates how to handle long and short quotations.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_del" target="_blank"&gt;Deleted and inserted text&lt;/a&gt;This example demonstrates how to mark a text that is deleted or inserted to a document.&lt;br /&gt;How to View HTML Source&lt;br /&gt;Have you ever seen a Web page and wondered "Hey! How did they do that?"&lt;br /&gt;To find out, click the VIEW option in your browser's toolbar and select SOURCE or PAGE SOURCE. This will open a window that shows you the HTML code of the page.&lt;br /&gt;Text Formatting Tags&lt;br /&gt;Tag&lt;br /&gt;Description&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&lt;b&gt;&lt;/a&gt;&lt;br /&gt;Defines bold text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&lt;big&gt;&lt;/a&gt;&lt;br /&gt;Defines big text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;em&gt;&lt;/a&gt;&lt;br /&gt;Defines emphasized text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&lt;i&gt;&lt;/a&gt;&lt;br /&gt;Defines italic text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&lt;small&gt;&lt;/a&gt;&lt;br /&gt;Defines small text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;strong&gt;&lt;/a&gt;&lt;br /&gt;Defines strong text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_sup.asp"&gt;&lt;sub&gt;&lt;/a&gt;&lt;br /&gt;Defines subscripted text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_sup.asp"&gt;&lt;sup&gt;&lt;/a&gt;&lt;br /&gt;Defines superscripted text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_ins.asp"&gt;&lt;ins&gt;&lt;/a&gt;&lt;br /&gt;Defines inserted text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_del.asp"&gt;&lt;del&gt;&lt;/a&gt;&lt;br /&gt;Defines deleted text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_strike.asp"&gt;&lt;s&gt;&lt;/a&gt;&lt;br /&gt;Deprecated. Use &lt;del&gt; instead&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_strike.asp"&gt;&lt;strike&gt;&lt;/a&gt;&lt;br /&gt;Deprecated. Use &lt;del&gt; instead&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_u.asp"&gt;&lt;u&gt;&lt;/a&gt;&lt;br /&gt;Deprecated. Use styles instead&lt;br /&gt;"Computer Output" Tags&lt;br /&gt;Tag&lt;br /&gt;Description&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;code&gt;&lt;/a&gt;&lt;br /&gt;Defines computer code text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;kbd&gt;&lt;/a&gt;&lt;br /&gt;Defines keyboard text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;samp&gt;&lt;/a&gt;&lt;br /&gt;Defines sample computer code&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&lt;tt&gt;&lt;/a&gt;&lt;br /&gt;Defines teletype text&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;var&gt;&lt;/a&gt;&lt;br /&gt;Defines a variable&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_pre.asp"&gt;&lt;pre&gt;&lt;/a&gt;&lt;br /&gt;Defines preformatted text&lt;br /&gt;&lt;listing&gt;&lt;br /&gt;Deprecated. Use &lt;pre&gt; instead&lt;br /&gt;&lt;plaintext&gt;&lt;br /&gt;Deprecated. Use &lt;pre&gt; instead&lt;br /&gt;&lt;xmp&gt;&lt;br /&gt;Deprecated. Use &lt;pre&gt; instead&lt;br /&gt;Citations, Quotations, and Definition Tags&lt;br /&gt;Tag&lt;br /&gt;Description&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_abbr.asp"&gt;&lt;abbr&gt;&lt;/a&gt;&lt;br /&gt;Defines an abbreviation&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_acronym.asp"&gt;&lt;acronym&gt;&lt;/a&gt;&lt;br /&gt;Defines an acronym&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_address.asp"&gt;&lt;address&gt;&lt;/a&gt;&lt;br /&gt;Defines an address element&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_bdo.asp"&gt;&lt;bdo&gt;&lt;/a&gt;&lt;br /&gt;Defines the text direction&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_blockquote.asp"&gt;&lt;blockquote&gt;&lt;/a&gt;&lt;br /&gt;Defines a long quotation&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_q.asp"&gt;&lt;q&gt;&lt;/a&gt;&lt;br /&gt;Defines a short quotation&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;cite&gt;&lt;/a&gt;&lt;br /&gt;Defines a citation&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&lt;dfn&gt;&lt;/a&gt;&lt;br /&gt;Defines a definition term&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Character Entities&lt;br /&gt;&lt;br /&gt;Some characters like the &lt; character, have a special meaning in HTML, and therefore cannot be used in the text.&lt;br /&gt;To display a less than sign (&lt;) in HTML, we have to use a character entity.&lt;br /&gt;Character Entities&lt;br /&gt;Some characters have a special meaning in HTML, like the less than sign (&lt;) that defines the start of an HTML tag. If we want the browser to actually display these characters we must insert character entities in the HTML source.&lt;br /&gt;A character entity has three parts: an ampersand (&amp;amp;), an entity name or a # and an entity number, and finally a semicolon (;).&lt;br /&gt;To display a less than sign in an HTML document we must write: &amp;lt; or &amp;#60;&lt;br /&gt;The advantage of using a name instead of a number is that a name is easier to remember. The disadvantage is that not all browsers support the newest entity names, while the support for entity numbers is very good in almost all browsers.&lt;br /&gt;Note that the entities are case sensitive.&lt;br /&gt;This example lets you experiment with character entities: &lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_entities" target="_blank"&gt;Character Entities&lt;/a&gt;&lt;br /&gt;Non-breaking Space&lt;br /&gt;The most common character entity in HTML is the non-breaking space.&lt;br /&gt;Normally HTML will truncate spaces in your text. If you write 10 spaces in your text HTML will remove 9 of them. To add spaces to your text, use the   character entity.&lt;br /&gt;The Most Common Character Entities:&lt;br /&gt;Result&lt;br /&gt;Description&lt;br /&gt;Entity Name&lt;br /&gt;Entity Number&lt;br /&gt;&lt;br /&gt;non-breaking space&lt;br /&gt;&lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;&lt;br /&gt;less than&lt;br /&gt;&amp;lt;&lt;br /&gt;&amp;#60;&lt;br /&gt;&gt;&lt;br /&gt;greater than&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;#62;&lt;br /&gt;&amp;amp;&lt;br /&gt;ampersand&lt;br /&gt;&amp;amp;&lt;br /&gt;&amp;#38;&lt;br /&gt;"&lt;br /&gt;quotation mark&lt;br /&gt;&amp;quot;&lt;br /&gt;&amp;#34;&lt;br /&gt;'&lt;br /&gt;apostrophe&lt;br /&gt;&amp;apos; (does not work in IE)&lt;br /&gt;&amp;#39;&lt;br /&gt;Some Other Commonly Used Character Entities:&lt;br /&gt;Result&lt;br /&gt;Description&lt;br /&gt;Entity Name&lt;br /&gt;Entity Number&lt;br /&gt;¢&lt;br /&gt;cent&lt;br /&gt;&amp;cent;&lt;br /&gt;&amp;#162;&lt;br /&gt;£&lt;br /&gt;pound&lt;br /&gt;&amp;pound;&lt;br /&gt;&amp;#163;&lt;br /&gt;¥&lt;br /&gt;yen&lt;br /&gt;&amp;yen;&lt;br /&gt;&amp;#165;&lt;br /&gt;€&lt;br /&gt;euro&lt;br /&gt;&amp;euro;&lt;br /&gt;&amp;#8364;&lt;br /&gt;§&lt;br /&gt;section&lt;br /&gt;&amp;sect;&lt;br /&gt;&amp;#167;&lt;br /&gt;©&lt;br /&gt;copyright&lt;br /&gt;&amp;copy;&lt;br /&gt;&amp;#169;&lt;br /&gt;®&lt;br /&gt;registered trademark&lt;br /&gt;&amp;reg;&lt;br /&gt;&amp;#174;&lt;br /&gt;×&lt;br /&gt;multiplication&lt;br /&gt;&amp;times;&lt;br /&gt;&amp;#215;&lt;br /&gt;÷&lt;br /&gt;division&lt;br /&gt;&amp;divide;&lt;br /&gt;&amp;#247;&lt;br /&gt;To see a full list of HTML character entities go to our &lt;a href="http://www.w3schools.com/tags/ref_entities.asp"&gt;HTML Entities Reference&lt;/a&gt;.&lt;br /&gt;HTML Links&lt;br /&gt;&lt;br /&gt;HTML uses a hyperlink to link to another document on the Web.&lt;br /&gt;Examples&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_links" target="_blank"&gt;Create hyperlinks&lt;/a&gt;This example demonstrates how to create links in an HTML document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_imglink" target="_blank"&gt;An image as a link&lt;/a&gt;This example demonstrates how to use an image as a link.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt;The Anchor Tag and the Href Attribute&lt;br /&gt;HTML uses the &lt;a&gt; (anchor) tag to create a link to another document.&lt;br /&gt;An anchor can point to any resource on the Web: an HTML page, an image, a sound file, a movie, etc.&lt;br /&gt;The syntax of creating an anchor:&lt;br /&gt;&lt;a href="url"&gt;Text to be displayed&lt;/a&gt;&lt;br /&gt;The &lt;a&gt; tag is used to create an anchor to link from, the href attribute is used to address the document to link to, and the words between the open and close of the anchor tag will be displayed as a hyperlink.&lt;br /&gt;This anchor defines a link to W3Schools:&lt;br /&gt;&lt;a href="http://www.w3schools.com/"&gt;Visit W3Schools!&lt;/a&gt;&lt;br /&gt;The line above will look like this in a browser:&lt;br /&gt;&lt;a href="http://www.w3schools.com/"&gt;Visit W3Schools!&lt;/a&gt;&lt;br /&gt;The Target Attribute&lt;br /&gt;With the target attribute, you can define where the linked document will be opened.&lt;br /&gt;The line below will open the document in a new browser window:&lt;br /&gt;&lt;a href="http://www.w3schools.com/" target="_blank"&gt;Visit W3Schools!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Anchor Tag and the Name Attribute&lt;br /&gt;The name attribute is used to create a named anchor. When using named anchors we can create links that can jump directly into a specific section on a page, instead of letting the user scroll around to find what he/she is looking for.&lt;br /&gt;Below is the syntax of a named anchor:&lt;br /&gt;&lt;a name="label"&gt;Text to be displayed&lt;/a&gt;&lt;br /&gt;The name attribute is used to create a named anchor. The name of the anchor can be any text you care to use.&lt;br /&gt;The line below defines a named anchor:&lt;br /&gt;&lt;a name="tips"&gt;Useful Tips Section&lt;/a&gt;&lt;br /&gt;You should notice that a named anchor is not displayed in a special way.&lt;br /&gt;To link directly to the "tips" section, add a # sign and the name of the anchor to the end of a URL, like this:&lt;br /&gt;&lt;a href="http://www.w3schools.com/html_links.asp#tips"&gt;Jump to the Useful Tips Section&lt;/a&gt;&lt;br /&gt;A hyperlink to the Useful Tips Section from WITHIN the file "html_links.asp" will look like this:&lt;br /&gt;&lt;a href="#tips"&gt;Jump to the Useful Tips Section&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;Always add a trailing slash to subfolder references. If you link like this: href="http://www.w3schools.com/html", you will generate two HTTP requests to the server, because the server will add a slash to the address and create a new request like this: href="http://www.w3schools.com/html/"&lt;br /&gt;Named anchors are often used to create "table of contents" at the beginning of a large document. Each chapter within the document is given a named anchor, and links to each of these anchors are put at the top of the document.&lt;br /&gt;If a browser cannot find a named anchor that  has been specified, it goes to the top of the document. No error occurs.&lt;br /&gt;More Examples&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_link_target" target="_blank"&gt;Open a link in a new browser window&lt;/a&gt;This example demonstrates how to link to another page by opening a new window, so that the visitor does not have to leave your Web site.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_link_locations" target="_blank"&gt;Link to a location on the same page&lt;/a&gt;This example demonstrates how to use a link to jump to another part of a document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_frame_getfree" target="_blank"&gt;Break out of a frame&lt;/a&gt;This example demonstrates how to break out of a frame, if your site is locked in a frame.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_mailto" target="_blank"&gt;Create a mailto link&lt;/a&gt;This example demonstrates how to link to a mail message (will only work if you have mail installed).&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_mailto2" target="_blank"&gt;Create a mailto link 2&lt;/a&gt;This example demonstrates a more complicated mailto link.&lt;br /&gt;Link Tags&lt;br /&gt;Tag&lt;br /&gt;Description&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_a.asp"&gt;&lt;a&gt;&lt;/a&gt;&lt;br /&gt;Defines an anchor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4026082541232994957?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4026082541232994957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4026082541232994957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4026082541232994957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4026082541232994957'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/html-text-formatting.html' title='HTML text Formatting'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-2411285258253060411</id><published>2008-05-21T04:51:00.000-07:00</published><updated>2008-05-21T05:08:38.915-07:00</updated><title type='text'>Learnig HTML - Introduction, Elements, etc</title><content type='html'>What is an HTML File?&lt;br /&gt;HTML stands for Hyper Text Markup Language&lt;br /&gt;An HTML file is a text file containing small markup tags&lt;br /&gt;The markup tags tell the Web browser how to display the page&lt;br /&gt;An HTML file must have an htm or html file extension&lt;br /&gt;An HTML file can be created using a simple text editor&lt;br /&gt;Learning Starts HERE&lt;br /&gt;&lt;br /&gt;If you are running Windows, start Notepad.&lt;br /&gt;If you are on a Mac, start SimpleText.&lt;br /&gt;In OSX start TextEdit and change the following preferences: Open the "Format" menu and select "Plain text" instead of "Rich text". Then open the "Preferences" window under the "Text Edit" menu and select "Ignore rich text commands in HTML files". Your HTML code will probably not work if you do not change the preferences above!&lt;br /&gt;Type in the following text:&lt;br /&gt;This is my first homepage. &lt;b&gt;This text is bold&lt;/b&gt;&lt;br /&gt;Save the file as "mypage.htm".&lt;br /&gt;Start your Internet browser. Select "Open" (or "Open Page") in the File menu of your browser. A dialog box will appear. Select "Browse" (or "Choose File") and locate the HTML file you just created - "mypage.htm" - select it and click "Open". Now you should see an address in the dialog box, for example "C:\MyDocuments\mypage.htm". Click OK, and the browser will display the page.&lt;br /&gt;Example Explained&lt;br /&gt;The first tag in your HTML document is . This tag tells your browser that this is the start of an HTML document. The last tag in your document is . This tag tells your browser that this is the end of the HTML document.&lt;br /&gt;The text between the tag and the tag is header information. Header information is not displayed in the browser window.&lt;br /&gt;The text between the This is my first homepage. &lt;b&gt;This text is bold&lt;/b&gt;&lt;br /&gt;This is an HTML element:&lt;br /&gt;&lt;b&gt;This text is bold&lt;/b&gt;&lt;br /&gt;The HTML element starts with a start tag: &lt;b&gt;The content of the HTML element is: This text is boldThe HTML element ends with an end tag: &lt;/b&gt;&lt;br /&gt;The purpose of the &lt;b&gt;tag is to define an HTML element that should be displayed as bold.&lt;br /&gt;This is also an HTML element:&lt;br /&gt;This is my first homepage. &lt;b&gt;This text is bold&lt;/b&gt;&lt;br /&gt;This HTML element starts with the start tag , and ends with the end tag .&lt;br /&gt;The purpose of the tag is to define the HTML element that contains the body of the HTML document.&lt;br /&gt;Why do We Use Lowercase Tags?&lt;br /&gt;We have just said that HTML tags are not case sensitive: &lt;b&gt;means the same as &lt;b&gt;. If you surf the Web, you will notice that plenty of web sites use uppercase HTML tags in their source code. We always use lowercase tags. Why?&lt;br /&gt;If you want to follow the latest web standards, you should always use lowercase tags. The World Wide Web Consortium (W3C) recommends lowercase tags in their HTML 4 recommendation, and XHTML (the next generation HTML) demands lowercase tags.&lt;br /&gt;BASIC TAGS&lt;br /&gt;&lt;br /&gt;The most important tags in HTML are tags that define headings, paragraphs and line breaks.&lt;br /&gt;The best way to learn HTML is to work with examples. We have created a very nice HTML editor for you. With this editor, you can edit the HTML source code if you like, and click on a test button to view the result.&lt;br /&gt;Try it Yourself - Examples&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_basic" target="_blank"&gt;A very simple HTML document&lt;/a&gt;This example is a very simple HTML document, with only a minimum of HTML tags. It demonstrates how the text inside a body element is displayed in the browser.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_paragraphs1" target="_blank"&gt;Simple paragraphs&lt;/a&gt;This example demonstrates how the text inside paragraph elements is displayed in the browser.&lt;br /&gt;(You can find more examples at the bottom of this page)&lt;br /&gt;Headings&lt;br /&gt;Headings are defined with the &lt;h1&gt;to &lt;h6&gt;tags. &lt;h1&gt;defines the largest heading. &lt;h6&gt;defines the smallest heading.&lt;br /&gt;&lt;h1&gt;This is a heading&lt;/h1&gt;&lt;h2&gt;This is a heading&lt;/h2&gt;&lt;h3&gt;This is a heading&lt;/h3&gt;&lt;h4&gt;This is a heading&lt;/h4&gt;&lt;h5&gt;This is a heading&lt;/h5&gt;&lt;h6&gt;This is a heading&lt;/h6&gt;&lt;br /&gt;HTML automatically adds an extra blank line before and after a heading.&lt;br /&gt;Paragraphs&lt;br /&gt;Paragraphs are defined with the &lt;p&gt;tag.&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;/p&gt;&lt;p&gt;This is another paragraph&lt;/p&gt;&lt;br /&gt;HTML automatically adds an extra blank line before and after a paragraph.&lt;br /&gt;Don't Forget the Closing Tag&lt;br /&gt;You might have noticed that paragraphs can be written without end tags &lt;p&gt;&lt;/p&gt;:&lt;br /&gt;&lt;p&gt;This is a paragraph &lt;p&gt;This is another paragraph&lt;br /&gt;The example above will work in most browsers, but don't rely on it. Future version of HTML will not allow you to skip ANY end tags.&lt;br /&gt;Closing all HTML elements with an end tag is a future-proof way of writing HTML. It also makes the code easier to understand (read and browse) when you mark both where an element starts and where it ends.&lt;br /&gt;Line Breaks&lt;br /&gt;The&lt;br /&gt;tag is used when you want to break a line, but don't want to start a new paragraph. The&lt;br /&gt;tag forces a line break wherever you place it.&lt;br /&gt;&lt;p&gt;This&lt;br /&gt;is a para&lt;br /&gt;graph with line breaks&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_paragraphs" target="_blank"&gt;Try it yourself&lt;/a&gt;&lt;br /&gt;The&lt;br /&gt;tag is an empty tag. It has no end tag like&lt;br /&gt;, since a closing tag doesn't make any sense.&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;More and more often you will see the&lt;br /&gt;tag written like this:&lt;br /&gt;&lt;br /&gt;Because the&lt;br /&gt;tag has no end tag (or closing tag), it breaks one of the rules for future HTML (the XML based XHTML), namely that all elements must be closed.&lt;br /&gt;Writing it like&lt;br /&gt;is a future proof way of closing (or ending) the tag inside the opening tag, accepted by both HTML and XML.&lt;br /&gt;Comments in HTML&lt;br /&gt;The comment tag is used to insert a comment in the HTML source code. A comment will be ignored by the browser. You can use comments to explain your code, which can help you when you edit the source code at a later date.&lt;br /&gt;&lt;!-- This is a comment --&gt;&lt;br /&gt;Note that you need an exclamation point after the opening bracket, but not before the closing bracket.&lt;br /&gt;Recap on HTML Elements&lt;br /&gt;Each HTML element has an element name (body, h1, p, br)&lt;br /&gt;The start tag is the name surrounded by angle brackets: &lt;h1&gt;&lt;br /&gt;The end tag is a slash and the name surrounded by angle brackets &lt;/h1&gt;&lt;br /&gt;The element content occurs between the start tag and the end tag&lt;br /&gt;Some HTML elements have no content&lt;br /&gt;Some HTML elements have no end tag&lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;When you write HTML text, you can never be sure how the text is displayed in another browser. Some people have large computer displays, some have small. The text will be reformatted every time the user resizes his window. Never try to format the text in your editor by adding empty lines and spaces to the text.&lt;br /&gt;HTML will truncate the spaces in your text. Any number of spaces count as one. Some extra information: In HTML a new line counts as one space.&lt;br /&gt;Using empty paragraphs &lt;p&gt;to insert blank lines is a bad habit. Use the&lt;br /&gt;tag instead. (But don't use the&lt;br /&gt;tag to create lists. Wait until you have learned about HTML lists.)&lt;br /&gt;HTML automatically adds an extra blank line before and after some elements, like before and after a paragraph, and before and after a heading.&lt;br /&gt;We use a horizontal rule (the &lt;hr /&gt;&lt;br /&gt;tag), to separate the sections in our tutorials.&lt;br /&gt;More Examples&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_paragraphs2" target="_blank"&gt;More paragraphs&lt;/a&gt;This example demonstrates some of the default behaviors of paragraph elements.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_paragraphs" target="_blank"&gt;Line breaks&lt;/a&gt;This example demonstrates the use of line breaks in an HTML document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_poem" target="_blank"&gt;Poem problems&lt;/a&gt;This example demonstrates some problems with HTML formatting.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_headers" target="_blank"&gt;Headings&lt;/a&gt;This example demonstrates the tags that display headings in an HTML document.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_hr" target="_blank"&gt;Horizontal rule&lt;/a&gt;This example demonstrates how to insert a horizontal rule.&lt;br /&gt;&lt;a href="http://www.w3schools.com/Html/tryit.asp?filename=tryhtml_comment" target="_blank"&gt;Hidden comments&lt;/a&gt;This example demonstrates how to insert a hidden comment in the HTML source code.&lt;br /&gt;Basic HTML Tags&lt;br /&gt;If you lookup the basic HTML tags in the reference below, you will see that the reference contains additional information about tag attributes.&lt;br /&gt;You will learn more about HTML tag attributes in the next chapter of this tutorial.&lt;br /&gt;Tag&lt;br /&gt;Description&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_html.asp"&gt;&lt;/a&gt;&lt;br /&gt;Defines an HTML document&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_body.asp"&gt;&lt;/a&gt;&lt;br /&gt;Defines the document's body&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_hn.asp"&gt;&lt;h1&gt;to &lt;h6&gt;&lt;/a&gt;&lt;br /&gt;Defines header 1 to header 6&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_p.asp"&gt;&lt;p&gt;&lt;/a&gt;&lt;br /&gt;Defines a paragraph&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_br.asp"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Inserts a single line break&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_hr.asp"&gt;&lt;hr /&gt;&lt;/a&gt;&lt;br /&gt;Defines a horizontal rule&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/tag_comment.asp"&gt;&lt;!--&gt;&lt;/a&gt;&lt;br /&gt;Defines a comment&lt;br /&gt;&lt;br /&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;h1&gt;&lt;h6&gt;&lt;h1&gt;&lt;h6&gt;&lt;h1&gt;&lt;h6&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/h6&gt;&lt;/h1&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-2411285258253060411?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/2411285258253060411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=2411285258253060411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2411285258253060411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2411285258253060411'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/learnig-html-introduction-elements-etc.html' title='Learnig HTML - Introduction, Elements, etc'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-6755916091222116549</id><published>2008-05-21T04:29:00.000-07:00</published><updated>2008-05-21T04:43:26.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Learn JAVA Programming'/><title type='text'>Concurrent JAVA</title><content type='html'>Writing correct programs is hard; writing correct concurrent programs is harder.  There are simply more things that can go wrong in a concurrent program than in a sequential one. "  (Brian Goetz)&lt;br /&gt;Java supports concurrent programming with multiple threads directly by means of built-in language features.  This is one of the many reasons why  Java programmers need to grasp the essence of concurrent programming. &lt;br /&gt;Threads can simplify the development of complex systems by breaking down one complex activity into several smaller concurrent activities.  It is often more desirable to write several tasks that each perform a single activities and coordinate them rather than to write a single task that performs all theactivities.&lt;br /&gt;Threads are the easiest way to exploit the computing power of multiprocessor systems.  With the increasing availability of multicore processors a growing number of programs need to avoid sequential execution and seek parallelism by means of multiple threads. &lt;br /&gt;In the IT industry we observe a trend to asynchronous and parallel computing that aims to increase throughput and  scalability. Modern software architectures circle around asynchrony:  NIO with its asynchronous non-blocking i/o, JMS (Java messaging system), message-driven beans in EJB, MOM (message oriented middleware), AJAX (asynchronous JavaScript and XML), SOA (service oriented architecture), just to name a few.&lt;br /&gt;In essence, Java programmers are or will shortly be confronted with concurrent programming and all its issues of thread safety, synchronization, dead locks, thread control, task scheduling, etc.  Even advanced issues such as JMM, the Java Memory Model, grow in relevance as more and more programs run on multicore architectures where sophisticated caching strategies on the processor level are likely to reveal yet undetected bugs related to visibility of memory accesses and re-ordering of actions in general.&lt;br /&gt;&lt;br /&gt;This seminar aims to give a sound and comprehensive introduction into concurrent programming in Java, exposes students to programming techniques and idioms that have been proven useful in practice, and alerts them to commonly known pitfalls.&lt;br /&gt;&lt;br /&gt;Prerequisite Courses  and Skills:&lt;br /&gt;Basic knowledge of Java (introductory course or equivalent practical experience).&lt;br /&gt;Duration:&lt;br /&gt;4 days&lt;br /&gt;This is a course for Java programmers who intend to build applications that are executed concurrently in multiple threads.&lt;br /&gt;The seminar is equally relevant to programmers who do not actively create threads, but have to prepare their classes for use in multi-threaded environments.   &lt;br /&gt;OBJECTIVES&lt;br /&gt;&lt;br /&gt;Understand concurrency control issues in general&lt;br /&gt;&lt;br /&gt;Know the instruments available in Java&lt;br /&gt;&lt;br /&gt;Avoid common errors and pitfalls&lt;br /&gt;&lt;br /&gt;Understand concurrency control idioms&lt;br /&gt;The course is designed by Klaus Kreft &amp;amp; Angelika Langer and backed by years of experience in teaching and more than a decade of practical experience in industrial software development both in C++ and Java.&lt;br /&gt;Angelika Langer is a freelance trainer/mentor in the area of object-oriented software development in C++ and Java. &lt;br /&gt;Klaus Kreft is a senior consultant for more than 20 years and has served as the lead architect on several successful industry projects. He has been working in C++ for many year and works in Java since 1995. &lt;br /&gt;Both are recognized speakers at OO oonference and author of numerous articles on C++ and Java topics in various computer magazines worldwide. Together they write a column for the German Java magazine JavaSpektrum and are authors of the  book "Standard C++ IOStreams and Locales" and the Online FAQ on Java Generics.. &lt;br /&gt; &lt;a name="Overview"&gt;&lt;/a&gt;&lt;br /&gt;COURSE OVERVIEW&lt;br /&gt;&lt;br /&gt;Multi-Threading Basics&lt;br /&gt;Synchronization Basics&lt;br /&gt;Thread Safety&lt;br /&gt;Thread Creation Concurrency Control&lt;br /&gt;Synchronization &amp;amp; Design &lt;br /&gt;Implicit and Explicit Locks&lt;br /&gt;State-Dependent Operations&lt;br /&gt;Read-Write-Locks&lt;br /&gt;Synchronizers &lt;br /&gt;Blocking Queues&lt;br /&gt;Synchronized vs. Concurrent Collections&lt;br /&gt;Thread-Local Memory&lt;br /&gt;Atomic Variables&lt;br /&gt;Thread and Task Control&lt;br /&gt;Multithreading &amp;amp; Design&lt;br /&gt;Thread States, Scheduling, Groups, Priorities&lt;br /&gt;Thread Completion&lt;br /&gt;Thread Interruption&lt;br /&gt;Threads And Exceptions&lt;br /&gt;Thread Pool Basics&lt;br /&gt;Task Execution&lt;br /&gt;Schedules Tasks&lt;br /&gt;Thread Pool Configuration&lt;br /&gt;Fork-Join-Framework Advanced Topics&lt;br /&gt;JMM - Java Memory Model &lt;br /&gt;Double Checked Locking&lt;br /&gt;Details of Atomic Variables&lt;br /&gt;Lock-Free Programming&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-6755916091222116549?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/6755916091222116549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=6755916091222116549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6755916091222116549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6755916091222116549'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/concurrent-java.html' title='Concurrent JAVA'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3803798919277901197</id><published>2008-05-05T04:08:00.000-07:00</published><updated>2008-05-05T04:11:08.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Sorting Algorithms, Introduction</title><content type='html'>&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Sorting Algorithms: Introduction&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Lists and Arrays)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Sorting&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; has been analyzed by computer scientists for &lt;b&gt;decades&lt;/b&gt;, and thus it is an ideal subject to begin with when studying computer science. Sorting is done with &lt;b&gt;algorithms&lt;/b&gt;, which are a set of specific commands that are followed in a certain order to complete a task. A cooking recipe is an algorithm, but we usually reserve the word algorithm for mathematics or science related topics.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;To study sorting, you must first be comfortable with &lt;b&gt;iteration&lt;/b&gt; and &lt;b&gt;recursion&lt;/b&gt;. These two terms designate the ways tasks are repeatedly performed. A jolly old programmer might give you this definition of recursion:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;re-cur-sion&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; (&lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;ri-&lt;/st1:place&gt;&lt;/st1:State&gt;'ker-zhen) &lt;i&gt;n&lt;/i&gt; See &lt;b&gt;recursion&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;If you don't know what iteration and recursion are and how they are different, look up a book on a &lt;b&gt;common programming language&lt;/b&gt; like C++ and it should tell you. Or, you can go to Cprogramming.com, which has tutorials on C++ with a section on recursion.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Note:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; in most of these algorithms, two elements of an array are often switched. So, to make the algorithms easier to read, we have written a function called &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; which takes two variables and exchanges the values in them. Here is the function code in C++:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;inline int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; swap(&lt;b&gt; int&lt;/b&gt; &amp;amp;x, &lt;b&gt;int&lt;/b&gt; &amp;amp;y )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;int&lt;/b&gt; z = x;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;x = y;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;y = z;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Note as well that we are using C++. For &lt;b&gt;all&lt;/b&gt; the example code in this site, we will be using C++, for it is a widely used and taught language that is efficient and suitable for our purposes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The &lt;b&gt;basic sorting algorithms&lt;/b&gt; are mostly iterative, and thus probably easier to understand. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The most simple algorithm, but not the most intuitive algorithm, is Bubble sort. This sort is still used a lot because it is easier and shorter to type than the other sorts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The most intuitive algorithm is Selection Sort. Humans use this sort all the time when sorting objects. This algorithm is especially useful when sorting across a network.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Radix Sort (also known as &lt;i&gt;Bin Sort&lt;/i&gt;) is a fairly fast sort that uses digits of numbers to sort arrays. Because of this, however, Radix Sort is fairly specialized, and makes it difficult to write general purpose code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;A very important sorting algorithm is Insertion Sort. This sort may not seem important, but it is used a surprising amount because it works well with almost sorted arrays.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;One of the &lt;b&gt;advanced sorting algorithms&lt;/b&gt; is the Heap Sort, which is based on the Heap Tree. You should read the two essays on Data Trees and Heap Trees before you attempt to read about this sort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Bubble Sort&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Lists and Arrays : Sorting Algorithms)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Bubble Sort&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; is by far the &lt;b&gt;simplest and shortest&lt;/b&gt; of all the sorting algorithms. Here is the code for it:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;( About Example C++ code ) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span class="codecomment1"&gt;&lt;span style="font-size: 14pt;"&gt;// By convention, 'n' is usually the size of the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span class="codecomment1"&gt;&lt;span style="font-size: 14pt;"&gt;// array to be sorted.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; bubblesort(&lt;b&gt; int&lt;/b&gt; array[], &lt;b&gt;int&lt;/b&gt; n )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;for&lt;/b&gt; ( &lt;b&gt;int&lt;/b&gt; i = 0; i &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;for&lt;/b&gt; (&lt;b&gt; int&lt;/b&gt; j = 1; j &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;b&gt;if&lt;/b&gt; ( array[j-1] &gt; array[j] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span class="codecomment1"&gt;// Note the use here of swap()&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;        &lt;/span&gt;swap( array[j-1], array[j] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;              &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;You can see why we call this a short algorithm. Even though it's short, I will explain it anyway.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Basically, this algorithm goes through the entire array and compares every adjacent pair of elements in the array starting from the first and working towards the last. This cycle is repeated over and over until the entire array is sorted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Notice that at the end of each cycle, the last element, and then the next to last element, and so on is in place. Thus, the cycle is shortened by one element each time so that we don't have to bother with the last elements which are already in place.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Let us walk through this algorithm on an example: &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 2 5 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;. Note that &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n = 5&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;First Iteration ( i = 0 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; We are considering the array &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 2 5 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;( j = 1 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 &gt; 2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 5 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 2 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 &lt;&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so nothing happens and the array is still &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 5 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 3 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;5 &gt; 4&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 4 5 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 4 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;5 &gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 4 1 5&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; is no longer strictly less than &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n - i&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we are finished with the &lt;b&gt;First Iteration&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Second Iteration ( i = 1 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; We are now considering the array &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;. (&lt;b&gt;Not&lt;/b&gt; the last one, remember? &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n - i = 4&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we only consider the first 4 elements.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;( j = 1 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 &lt;&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so nothing happens and the array is still &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 2 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 &lt;&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so nothing happens and the array is still &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 4 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 3 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;4 &gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 1 4&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; is no longer strictly less than &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n - i&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we are finished with the Second Iteration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Third Iteration ( i = 2 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; We are now considering the array &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;( j = 1 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 &lt;&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so nothing happens and the array is still &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 3 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;br /&gt;&lt;b&gt;( j = 2 ):&lt;/b&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;3 &gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 1 3&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; is no longer strictly less than &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n - i&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we are finished with the Third Iteration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Fourth Iteration ( i = 3 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; We are now considering the array &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;( j = 1 ):&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;2 &gt; 1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and the array is now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;1 2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; is no longer strictly less than &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n - i&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we are finished with the Fourth Iteration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; is no longer strictly less than &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;n-1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;, so we are finished sorting.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now that you have seen the entire sorting process written out, the algorithm will make more &lt;b&gt;sense&lt;/b&gt; to you.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;One of the problems with Bubble Sort is that even when the array is fully sorted, the sort continues. This problem, however, is easily remedied: just insert a &lt;b&gt;boolean flag&lt;/b&gt; that keeps track of whether or not the sort called &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;swap()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on anything in the last iteration. If it did not, then the sort has finished early.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Still, improving the efficiency of the Bubble Sort algorithm is really quite a useless effort. &lt;b&gt;If you want more efficiency, use another algorithm&lt;/b&gt;. The reason for using Bubble Sort is because it is easy to type, so making Bubble Sort more complex is not really all that appealing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;If you would like a usable version of the Bubble Sort algorithm, there is one below that uses templates. The only efficiency improvement to Bubble Sort is the early exit flag, since that does not add much length to the code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Selection Sort&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Lists and Arrays : Sorting Algorithms)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Selection Sort is the sort used most often by humans, since it's makes a lot of sense. The algorithm is simple:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Let's say you are sorting some index cards labeled with numbers, and you want to order them smallest to largest. Here are the index cards:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;4, 3, 1, 5, 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Scan the list and find the smallest. This is, of course, 1. Put that into the first position, switching it wih 4. We now have this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;1, 3, 4, 5, 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now, we can ignore the 1 and concentrate on the other 4 numbers. Now, we find the next smallest number (which is 2), and move it to the second position. Then we do this for the third smallest, and so on. We keep following this process until we have what we wanted: a sorted list.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;On the computer, this algorithm can be consolidated into this form:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;For every &lt;i&gt;n, ranging&lt;/i&gt; from 1 to the size of the array, start at the &lt;i&gt;n&lt;/i&gt;th element of the array and find the smallest element. Switch this element with the &lt;i&gt;n&lt;/i&gt;th element of the array.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The concept is quite simple, and therefore makes the algorithm quite easy to program. Even though Selection Sort is one of the slower algorithms, it is used because it sorts with a &lt;b&gt;minimum of data shifting&lt;/b&gt;. That is, the algorithm doesn't swap the elements of the array as many times as other algorithms do in order to sort the array. This is really useful when you're programming over a network, because sometimes transferring data can be really slow and time consuming.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Although you should be able to easily program your own version of this simple algorithm, you can study and use the commented version we have in our files:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;span style="font-size: 14pt; color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 14pt; color: rgb(0, 0, 0);"&gt; &lt;/span&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Radix Sort, Part 1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Lists and Arrays : Sorting Algorithms)&lt;br /&gt;&lt;br /&gt;[Part 1] [Part 2]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Radix Sort is a clever and intuitive little sorting algorithm. Radix Sort puts the elements in order by comparing the &lt;b&gt;digits of the numbers&lt;/b&gt;. I will explain with an example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Consider the following 9 numbers:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;493   812   715   710   195   437   582   340   385&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;We should start sorting by comparing and ordering the &lt;b&gt;one's&lt;/b&gt; digits:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;  &lt;table class="MsoNormalTable" style="width: 120pt; text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" cellspacing="1" width="160"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Digit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 78.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="105"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Sublist&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  340 710&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  812 582&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  493&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  715 195 385&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  437&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Notice that the numbers were added onto the list in the order that they were found, which is why the numbers appear to be unsorted in each of the sublists above. Now, we gather the sublists (in order from the 0 sublist to the 9 sublist) into the main list again:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;340   710   812   582   493   715   195   385   437&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Note: The &lt;b&gt;order&lt;/b&gt; in which we divide and reassemble the list is &lt;b&gt;extremely important&lt;/b&gt;, as this is one of the foundations of this algorithm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now, the sublists are created again, this time based on the &lt;b&gt;ten's&lt;/b&gt; digit:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;  &lt;table class="MsoNormalTable" style="width: 120pt; text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" cellspacing="1" width="160"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Digit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 78.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="105"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Sublist&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  710 812 715&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  437&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  340&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  582 385&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  493 195&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now the sublists are gathered in order from 0 to 9:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;710   812   715   437   340   582   385   493   195&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Finally, the sublists are created according to the &lt;b&gt;hundred's&lt;/b&gt; digit:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;  &lt;table class="MsoNormalTable" style="width: 120pt; text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" cellspacing="1" width="160"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Digit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 78.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="105"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Sublist&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  195&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  340 385&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  437 493&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  582&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  710 715&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  812&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 34.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="46"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 78.75pt;" width="105"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;At last, the list is gathered up again:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;195   340   385   437   493   582   710   715   812&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;And now we have a fully sorted array! Radix Sort is very simple, and a computer can do it fast. When it is programmed properly, Radix Sort is in fact &lt;b&gt;one of the fastest sorting algorithms&lt;/b&gt; for numbers or strings of letters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Insertion Sort&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Lists and Arrays : Sorting Algorithms)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Insertion Sort, like Selection Sort, is a fairly intuitive algorithm. Insertion Sort's advantages lie in that it works really well with &lt;b&gt;almost sorted arrays&lt;/b&gt;. In the non-computer world, it is often used by card players sorting cards that are dealt one at a time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Imagine that you have the following 5 cards dealt to you in this order (we only care about the numbers, so we'll ignore the suits): 3, 2, 4, 5, 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;First, we're dealt the card with the 3 on it. Then, we're dealt the 2, which is &lt;b&gt;inserted&lt;/b&gt; before the 3. Then, we're dealt the 4 and the 5, both of which are put at the end. When we are given the 1, it is inserted before the 2. Now, we've been dealt five cards, and so the hand been sorted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Of course, when we are sorting an array, we don't get the elements one at a time. Instead, we get them all at once, but we can still &lt;b&gt;visualize&lt;/b&gt; them as if we are being given them one at a time. We just ignore the elements that haven't been "dealt" to us yet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Here's another example: let's sort this list: 3, 5, 7, 2, 8, 1, 9, 0, 4, 6.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The sort goes something like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;  &lt;table class="MsoNormalTable" style="width: 307.5pt; text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" cellspacing="1" width="410"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Round&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 135pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="180"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Numbers "Dealt"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; background: rgb(0, 0, 204) none repeat scroll 0% 50%; width: 135pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="180"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Numbers Not "Dealt"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  5 7 2 8 1 9 0 4   6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  3 5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  7 2 8 1 9 0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  3 5 7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  2 8 1 9 0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  2 3 5 7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  8 1 9 0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  2 3 5 7 8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  1 9 0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  1 2 3 5 7 8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  9 0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  1 2 3 5 7 8 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  0 4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;8&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  0 1 2 3 5 7 8 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  4 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  0 1 2 3 4 5 7 8   9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  6&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0in; background: rgb(204, 204, 204) none repeat scroll 0% 50%; width: 37.5pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="50"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;10&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  0 1 2 3 4 5 6 7   8 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0in; width: 135pt;" width="180"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Notice that the numbers that have been "dealt" are always in order.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Easy and simple, right? Well, the way the computer does Insertion Sort isn't quite so simple.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The computer begins with the new card at the end and swaps it backwards until it is in the correct location. So, the card with the 1 would have to be swapped 4 times. This method becomes extremely long in certain cases, such as when the list begins completely backwards (5, 4, 3, 2, 1). That particular formation is the &lt;b&gt;worst case scenario&lt;/b&gt;, and for that, Insertion Sort is very, very &lt;b&gt;slow&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;So, a man by the name of Shell created a sorting algorithm called the &lt;b&gt;Diminishing-Increment Insertion Sort&lt;/b&gt;, also known simply as Shell Sort. Mr. Shell tried to get the benefits of Insertion Sort without the drawbacks. Unfortunately, Mr. Shell's Sort is far from being the fastest algorithm, and it is more complex than Insertion or Selection Sort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Still, for most cases, Insertion Sort is much faster than Selection Sort, and it is not very complicated to type, so it is used often in various computer science projects.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;There is a nicely commented, usable version of Insertion Sort that you can download at our site:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Heap Trees, Part 2&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to Basic Computer Science : Data Trees)&lt;br /&gt;&lt;br /&gt;[Part 1] [Part 2]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Heap sort&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; is one of the fastest sorting algorithms, rivaling such speed-demons as Quicksort and mergesort. The advantages of heap sort are that it does &lt;b&gt;not&lt;/b&gt; use recursion and that heap sort works just as fast for any data order. That is, there is basically no worst case scenario.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;First, since the heap we just implemented is an array, you can just convert the array into a heap with the following algorithm: (refer back to the code structure on the previous page)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Call      &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on the parent of the last element. (Halfway      back, remember?) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Moving      left, keep calling &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; of the parent of the next to last element and so      on until the end of the level is reached. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Move      up a level, and keep calling &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on the parent node in the same way. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Keep      repeating the second and third step until you've called &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on the root node. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Basically, since the heap is an array at heart anyway, you just call &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on the parent of the last child or pair of children, and then keep working your way left across the array, calling &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;shiftDown()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; on each element.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Now that you have a legitamate heap, you can sort it back into an ordered array. Heap sort works from back to front; it starts with the last element of the sorted array and then steadily works towards the front. Just keep calling &lt;/span&gt;&lt;span class="code1"&gt;&lt;span style="font-size: 14pt;"&gt;remove()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; and storing the data from back to front until the heap is empty.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Even though this sounds a bit repetative, it really is quite fast, especially for large numbers of elements. Sometimes, it can be faster than Quicksort or mergesort just because the heap sort is not recursive. Although on average heap sort is slower than Quicksort and mergesort, heap sort is more consistent in its speed. Thus, in applications where timing may be crucial, heap sort is preferred to Quicksort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The heap tree and heap sort should be much easier to implement than the binary search tree. Just follow the guidelines established above, and the programming shouldn't trouble you much. The description page for the source code file will explain how the heap sort is implemented in the code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3803798919277901197?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3803798919277901197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3803798919277901197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3803798919277901197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3803798919277901197'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/sorting-algorithms-introduction.html' title='Sorting Algorithms, Introduction'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-8503337878519543574</id><published>2008-05-05T04:07:00.001-07:00</published><updated>2008-05-05T04:11:08.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'></title><content type='html'>&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Learn Basic Algorithms and Data Structures&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;There are a variety of important algorithms and data structures that are the lingua franca of computer science. Everyone needs to know what a &lt;span style="text-decoration: none;"&gt;&lt;&gt;or &lt;/span&gt;&lt;span style="text-decoration: none;"&gt;binary tree&lt;/span&gt; is because they get used all the time. Perhaps just as important are fundamental algorithms like &lt;span style="text-decoration: none;"&gt;binary search&lt;/span&gt;, graph searching algorithms, &lt;span style="text-decoration: none;"&gt;sorting algorithms&lt;/span&gt;, and &lt;span style="text-decoration: none;"&gt;tree-based searches such as minimax&lt;/span&gt;. These algorithms and their variants show up a lot, and people will generally expect that any computer scientist will understand how they work. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Learn Basic Theory&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;There are a couple of things you should definitely be aware of: you should understand how to &lt;span style="text-decoration: none;"&gt;represent numbers in different bases&lt;/span&gt; and how to manipulate boolean expressions using boolean logic. Both of these tools will come in handy in a variety of circumstances, especially when reading other people's code or trying to clarify your own. (Boolean logic is especially useful for formulating clear conditional statements.)&lt;br /&gt;&lt;br /&gt;Even more important, you should have a good sense of the limits of current computers. In particular, it really helps to understand the ideas in &lt;span style="text-decoration: none;"&gt;algorithmic efficiency&lt;/span&gt; and &lt;span style="text-decoration: none;"&gt;Big-O notation&lt;/span&gt;. Knowing these topics makes it clearer why certain programs and algorithms will take a very long time to run, and how to spot them. It also makes it signifcantly easier to optimize your program when you know which algorithms to choose.&lt;br /&gt;&lt;br /&gt;Finally, it's useful to have a sense of the absolute &lt;span style="text-decoration: none;"&gt;limits of what computers can do&lt;/span&gt;; it turns out that there are just some things that are not possible for a computer to do. Sometimes it can be tempting to try to write a program that does just that!&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h3 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Understanding Different Base Systems&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;This essay is targeted at new students of computer programming or computer science who want to understand how base two (binary), base eight (octal), and base sixteen (hexadecimal) work.&lt;br /&gt;&lt;br /&gt;First of all, it's important to realize that each of these base systems is just another way of writing down the same number. When you convert a number between different bases, it should still have the same value. In this essay, when I want to refer to the actual value of a number (regardless of its base), I'll do it in base 10 because that's what most people are used to.&lt;br /&gt;&lt;br /&gt;It's generally easiest to understand the concept of different bases by looking at base 10. When we have a number in base 10, each digit can be referred to as the ones digit, tens digit, the hundreds digit, the thousands digit, or so forth. For instance, in the number 432, 4 is the hundreds digit, 3 is the tens digit, and 2 is the ones digit.&lt;br /&gt;&lt;br /&gt;Another way to think about this is to rewrite 432 as &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;4 x 10&lt;sup&gt;2&lt;/sup&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 3 x 10&lt;sup&gt;1&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 2 x 10&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Each digit is multiplied by the next power of ten. Numbers in other bases, such as base 16, are merely numbers where the base is not ten! For instance, we could interpret 432 as though it were in base 16 by evaluating it as &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;4 x 16&lt;sup&gt;2&lt;/sup&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 3 x 16&lt;sup&gt;1&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 2 x 10&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;This would be the same as the number 1074 in base 10.&lt;br /&gt;&lt;br /&gt;So to convert a number from a given base into base 10, all we need to do is treat each place as a power of the given base times the value of the digit in that place. Note that customarily for a given base, only digits from 0 to the base minus one are used. For instance, in decimal, we only use the digits 0 through 9. That's because we don't need any more digits to express every possible number. (But we do need at least that many; if we only had 8 digits, how would we ever express the value 9?)&lt;br /&gt;&lt;br /&gt;Now, bases greater than 10 will require more than 10 possible digits. For intsance, the number 11 in base ten can be expressed in base 16 with only a single digit because the ones place in base 16 can range from 0 to 15. Since we only have 10 digits, the letters A through F are used to stand for the "digits" 10 through 15. So, for instance, the hexadecimal number B stands for the decimal number 11.&lt;br /&gt;&lt;br /&gt;Bases less than ten will require fewer digits--for instance, binary, which works using powers of two, only needs two digits: one and zero. The binary number 1001, for instance, is the same as writing &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;1 * 2&lt;sup&gt;3&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;1 * 2&lt;sup&gt;2&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;1 * 2&lt;sup&gt;1&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;1 * 2&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;which comes out to the decimal value 9.&lt;br /&gt;&lt;br /&gt;Numbers written in octal use a base of 8 instead of 2 or 16. See if you can figure out what the number 20 written in octal would be in base ten.&lt;br /&gt;&lt;br /&gt;Because octal, hexadecimal, and decimal numbers can often share the same digits, there needs to be some way of distinguishing between them. Traditionally, octal numbers are written with a leading 0; for instance, 020 is the same thing as the number 20 in base 8. Hexadecimal numbers are written with the prefix of "0x". So 0x20 would be the number 20 in base 16; we'd interpret it the same as the decimal number 32. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Converting from decimal to octal or hexadecimal &lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;It turns out that when you wish to convert from decimal to octal or hexadecimal, there is a very easy formula that you can use. I'll give you the one for octal, and let you puzzle out the hexadecimal version (which may come quite naturally to some of you).&lt;br /&gt;&lt;br /&gt;To convert from octal to hexadecimal, all you need to do is group the binary digits into pairs of three and convert each one into the corresponding octal number. For instance, given the binary number 010011110, you would group 011 and 110 together. 010 is 2, 011 is 3 and 110 is 6. So the octal number is 0236.&lt;br /&gt;&lt;br /&gt;So why exactly does this work? Well, let's take a look at what 011110 looks like: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;0 * 2&lt;sup&gt;8&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;1 * 2&lt;sup&gt;7&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;0 * 2&lt;sup&gt;6&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;0 * 2&lt;sup&gt;5&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;4&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;3&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;2&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;1&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 0 * 2&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;That's actually the same as &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;  &lt;/span&gt;0 * 2&lt;sup&gt;2&lt;/sup&gt; * 2&lt;sup&gt;6&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;1&lt;/sup&gt; * 2&lt;sup&gt;6&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 0 * 2&lt;sup&gt;0&lt;/sup&gt; * 2&lt;sup&gt;6&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 0 * 2&lt;sup&gt;2&lt;/sup&gt; * 2&lt;sup&gt;3&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;1&lt;/sup&gt; * 2&lt;sup&gt;3&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;0&lt;/sup&gt; * 2&lt;sup&gt;3&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;2&lt;/sup&gt; * 2&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 1 * 2&lt;sup&gt;1&lt;/sup&gt; * 2&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;+ 0 * 2&lt;sup&gt;0&lt;/sup&gt; * 2&lt;sup&gt;0&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Whoa! First, notice that the far right column is actually turning into powers of 8! 2&lt;sup&gt;3&lt;/sup&gt; is 8, and 2&lt;sup&gt;6&lt;/sup&gt; is 64! So this means for each group of three digits, we have the base increasing by a factor of 8. Moreover, look at the right hand column. It can sum up to at most 7 (since 2&lt;sup&gt;0&lt;/sup&gt; + 2&lt;sup&gt;1&lt;/sup&gt; + 2&lt;sup&gt;2&lt;/sup&gt; = 1 + 2 + 4 and the binary digit just decides whether each power of two is included into the sum or not). That's exactly the same as having eight digits, 0 through 7, and once we sum them all together, we multiply the sum by a power of eight. That's just the same as making each group of three binary digits an octal digit!&lt;br /&gt;&lt;br /&gt;Knowing this, can you come up with the way to do the same thing for hexadecimal numbers?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Efficiency and the Space-Time Continuum&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;br /&gt;(Up to &lt;span style="text-decoration: none;"&gt;Basic Computer Science&lt;/span&gt;)&lt;br /&gt;Get &lt;span style="text-decoration: none;"&gt;Printable Version&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;A lot of computer science is about &lt;b&gt;efficiency&lt;/b&gt;. For instance, one frequently used mechanism for measuring the theoretical speed of algorithms is Big-O notation. What most people don't realize, however, is that often there is a trade-off between &lt;b&gt;speed&lt;/b&gt; and &lt;b&gt;memory&lt;/b&gt;: or, as I like to call it, &lt;b&gt;space&lt;/b&gt; and &lt;b&gt;time&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Think of space efficiency and time efficiency as two opposite ends on a band (a continuum). Every point in between the two ends has a certain time and space efficiency. The more time efficiency you have, the less space efficiency you have, and vice versa. The picture below illustrates this in a simple fashion:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" alt="The Space-Time Continuum" style="'width:273pt;height:21.75pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" href="http://www.aihorizon.com/images/essays/spacetime.jpg"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image001.jpg" alt="The Space-Time Continuum" shapes="_x0000_i1025" border="0" height="29" width="364" /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Algorithms like Quicksort and Mergesort are exceedingly fast, but require lots of space to do the operations. On the other side of the spectrum, &lt;span style="text-decoration: none;"&gt;Bubble Sort&lt;/span&gt; is exceedingly slow, but takes up the minimum of space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style="text-decoration: none;"&gt;Heap Sort&lt;/span&gt;, for instance, has a &lt;b&gt;very good balance&lt;/b&gt; between space and speed. The heap itself takes up about the same space as an array, and yet the speed of the sort is in the same order of magnitude as Quicksort and Mergesort (although it is slower on average than the other two). Heap Sort has the additional benefit of being quite consistent in its speed, so it is useful in programs where timing is crucial (i.e. networks).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;For data trees, &lt;span style="text-decoration: none;"&gt;2-3 trees&lt;/span&gt; and 2-3-4 trees are faster and more balanced than the normal binary search trees, but they take up an extraordinary amount of space because they usually have tons of unused variables lying around.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;The &lt;b&gt;Red-Black tree&lt;/b&gt; is a compromise between space and time. The Red-Black tree is basically a binary tree representation of a 2-3-4 tree, and so it takes up less space than the 2-3-4 tree (it doesn't have all of those empty fields), but it still retains the search efficiency of the 2-3-4 tree!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Thus, there has to be a balance in the space and time aspects of computing. Most of the research in Computer Science these days is devoted to Time efficiency, particularly the theoretical time barrier of NP-Complete problems (like the Traveling Salesman Problem). These days memory is cheap, and storage space almost seems to be given away.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;With &lt;b&gt;networking and robotics&lt;/b&gt;, however, the necessity of a balance becomes apparent. Often, memory on these machines is scarce, as is processing power. Memory has to be used conservatively, otherwise the network servers could become stalled until the operation is finished. Robots often have to function with the limited resources installed on their own structures, and thus many times they do not have the memory to be spared for vast computing speed. In these situations, a compromise must be made.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;With networking, this issue becomes mainly about topology. &lt;b&gt;Network Topology&lt;/b&gt; is basically a description of how the physical connections of a network are set up. Maybe you know the term "daisy chain": that is a kind of network topology. A daisy chain (in which all computers are connected to two others in one chain) uses the minimum of cables, but the relative speed of the connections is smaller, because if the computer on one end tries to send a signal to a computer at the other end, it must first go through every computer in between. On the other hand, if every computer were connected to every other computer (called a "fully connected mesh network"), signals would be fast, but you would use a lot more cables, and the network may become hard to maintain. So, in this case, &lt;i&gt;space&lt;/i&gt; correlates to the number of connections in a network, while &lt;i&gt;time&lt;/i&gt; refers to the speed that signals travel the network.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Thus, although it may seem a trivial issue, it is really quite important, even now, to have efficiency in both space and time. Of course, the type of compromise made depends on the situation, but generally, for most programmers, time is of the essence, while for locations in which memory is scarce, of course, space is the issue. Maybe someday we'll be able to find algorithms that are extremely efficient in both speed and memory, bridges in the &lt;b&gt;Space-Time continuum&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-8503337878519543574?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/8503337878519543574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=8503337878519543574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/8503337878519543574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/8503337878519543574'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/learn-basic-algorithms-and-data.html' title=''/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3944679700757844721</id><published>2008-05-05T04:06:00.000-07:00</published><updated>2008-05-05T04:11:46.007-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science Engineering'/><title type='text'>Software Engineering,Artificial Intelligence</title><content type='html'>&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Software engineering relies on some of the work from the programming languages community, and deals with the design and implementation of software. Often, software engineering will cover topics like defensive programming, in which the code includes apparently extraneous work to ensure that it is used correctly by others.&lt;br /&gt;&lt;br /&gt;Software engineering is generally a practical discipline, with a focus on designing and working on large-scale projects. As a result, appreciating software engineering practices often requires a fair amount of actual work on software projects. It turns out that as programs grow larger, the difficulty of managing them dramatically increases in sometimes unexpected ways. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Systems&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Systems work deals, in a nutshell, with building programs that use a lot of resources and profiling that resource usage. Systems work includes building operating systems, databases, and distributed computing, and can be closely related to networking. For instance, some might say that the structure of the internet falls in the category of systems work.&lt;br /&gt;&lt;br /&gt;The design, implementation, and profiling of databases is a major part of systems programming, with a focus on building tools that are fast enough to manage large amounts of data while still being stable enough not to lose it. Sometimes work in databases and operating systems intersects in the design of file systems to store data on disk for the operating system. For example, Microsoft has spent years working on a file system based on the relational database model.&lt;br /&gt;&lt;br /&gt;Systems work is highly practical and focused on implementation and understanding what kinds of usage a system will be able to handle. As such, systems work can involve trade-offs that require tuning for the common usage scenarios rather than creating systems that are extremely efficient in every possible case.&lt;br /&gt;&lt;br /&gt;Some recent work in systems has focused on solving the problems associated with large-scale computation (distributed computing) and making it easier to harness the power of many relatively slow computers to solve problems that are easy to parallelize. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Artificial Intelligence&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Last, but not least, is artificial intelligence, which covers a wide range of topics. AI work includes everything from planning and searching for solutions (for instance, solving problems with many constraints) to machine learning. There are areas of AI that focus on building game playing programs for chess and go. Other planning problems are of more practical significance--for instance, designing programs to diagnose and solve problems in spacecraft or medicine.&lt;br /&gt;&lt;br /&gt;AI also includes work on neural networks and machine learning, which is designed to solve difficult problems by allowing computers to discover patterns in a large set of input data. Learning can be either supervised, in which case there are training examples that have been classified into different categories (for instance, written numerals classified as being the numbers 1 through 9), or unsupervised, in which case the goal is often to cluster the data into groups that appear to have similar features (suggesting that they all belong to the same category).&lt;br /&gt;&lt;br /&gt;AI also includes work in the field of robotics (along with hardware and systems) and multiagent systems, and is focused largely on improving the ability of robotic agents to plan courses of action or strategize about how to interact with other robots or with people. Work in this area has often focused on multiagent negotiation and applying the principles of game theory (for interacting with other robots) or behavioral economics (for interacting with people).&lt;br /&gt;&lt;br /&gt;Although AI holds out some hope of creating a truly conscious machine, much of the recent work focuses on solving problems of more obvious importance. Thus, the applications of AI to research, in the form of data mining and pattern recognition, are at present more important than the more philosophical topic of what it means to be conscious. Nevertheless, the ability of computers to learn using complex algorithms provides clues about the tractability of the problems we face.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h3 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;How to Study Computer Science&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;If you're an aspiring computer science student or someone who wants to switch fields into CS, you're in luck; there's a lot of information available on the Internet. CS is a large and rapidly-expanding field; once you've become confident in your abilities to program moderate-sized projects, a lot of topics open up to you. But what do you really need to learn about, and what don't you?&lt;br /&gt;&lt;br /&gt;A lot of it depends on what you want to get out of your study. If you want to become a researcher, you'll most likely need to know more of the theory of computer science than if you want to become a programmer. There are, however, some basic skills that will help nearly everyone in the field. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Learn Multiple Programming Languages&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;No matter what you want to do in computer science, you'll likely do some of it by writing computer programs. Not all languages are created equal, but most of htem have some strengths. You'll want to learn a systems language like C or C++. This will give you several advantages: first, you'll understand memory allocation; second, you'll understand more about how the system is designed; and finally, you'll be able to communicate with other programmers more easily. you can see this article for more details on the advantage of learning C .&lt;br /&gt;&lt;br /&gt;But you want to learn a more flexible language for daily chores--for instance, a scripting language like Perl or Ruby will help you quickly create interesting programs and test ideas.&lt;br /&gt;&lt;br /&gt;Finally, once you've mastered a language or two, expand your horizons with a functional language like Scheme, ML, or Haskell. This will improve your understanding of programming languages and broaden your horizons about the possibilities.&lt;br /&gt;&lt;br /&gt;A key thing to remember when learning new languages is that all languages offer the same power--you can do anything in one language that you can in another--but some languages make it easier to do certain things. For instance, if you want to read data from a text file, Perl is a great language. If you want to write an AI engine, then you might be better off with Scheme. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Learn to Design&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Whether you want to work as a software engineer or as an academic, you're going to have to design programs in some form or another. Learning good design principles early will make your life easier. The key thing to remember about design is that the goal is to catch the problems before you've committed to a solution that won't let you fix them. You don't have to do all of your design up front, but if you don't, then you'll want to leave more flexibility later.&lt;br /&gt;&lt;br /&gt;Of course, some amount of design is absolutely crucial or you'll simply have no idea what should be flexible and what can be hard coded. Overly modular designs can be as deadly and difficult to maintain as extremely inflexible designs. One way of looking at the issue is that modularity is powerful because it makes it easier to replace a bad idea with a good one. But if you know what the good idea is going to be anyway, then modularity doesn't help you, and because it takes more effort, it can hurt you.&lt;br /&gt;&lt;br /&gt;A good way to learn design is to practice on well-known systems projects, like writing an interpreter or web server. These kind of projects have the advantage of having well-known implementions that you can look at once you realize that there are problems with your original design. Whatever you do design, you definitely want to implement at least parts of your designs or you'll never really come to understand the drawbacks in your ideas. It's running into these drawbacks that will teach you the most. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3944679700757844721?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3944679700757844721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3944679700757844721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3944679700757844721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3944679700757844721'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/software-engineeringartificial.html' title='Software Engineering,Artificial Intelligence'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-7187413431589202461</id><published>2008-05-05T04:05:00.001-07:00</published><updated>2008-05-05T04:11:46.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science Engineering'/><title type='text'>Fields of Computers Science</title><content type='html'>&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;What Work is Going Here?&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Here in the Computer Science department at the &lt;st1:place st="on"&gt;&lt;st1:placetype st="on"&gt;University&lt;/st1:PlaceType&gt; of  &lt;st1:placename st="on"&gt;Edinburgh&lt;/st1:PlaceName&gt;&lt;/st1:place&gt; we are looking at ways to optimise the computer graphics algorithms so that VR technology can be implemented on low-cost computers. There is also research on how virtual environments can be modeled and how these can be distributed over numerous different computers to reduce the computational burden and allow multiple users to participate in simulations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Fields of Computers Science&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;        &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;Computer science is often said to be neither a science nor about computers. There is certainly some truth to this claim--computers are merely the device upon which the complex and beautiful ideas in computer science are tested and implemented. And it is hardly a science of discovery, as might be physics or biology, so much as it is a discipline of mathematics or engineering. But this all depends on which branch of computer science you are involved in, and there are many: theory, hardware, networking, graphics, programming languages, software engineering, systems, and of course, AI. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; font-weight: normal; text-align: justify; color: rgb(0, 0, 0);"&gt;Theory&lt;/h4&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Computer science theory is often highly mathematical, concerning itself with questions about the limits of computation. Some of the major results in CS theory include what can be computed and how fast certain problems can be solved. Some things are simply imposible to figure out! Other things are merely difficult, meaning they take a long time. The long-standing question of whether "P=NP" lies in the realm of theory.&lt;br /&gt;&lt;br /&gt;A subsection of theory is algorithm development. For instance, theorists might work to develop better algorithms for graph coloring, and theorists have been involved in improving algorithms used by the human genome project to produce faster algorithms for predicting DNA similarity.&lt;br /&gt;&lt;br /&gt;Cryptography is another booming area of the theory section of computer science, with applications from e-commerce to privacy and data security. This work usually involves higher-level mathematics, including number theory. Even given all of the work in the field, algorithms such as RSA encryption have yet to be proven totally secure.&lt;br /&gt;&lt;br /&gt;Work in theory even includes some aspects of machine learning, including developing new and better learning algorithms and coming up with bounds on what can be learned and under what conditions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; font-weight: normal; text-align: justify; color: rgb(0, 0, 0);"&gt;Hardware&lt;/h4&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Computer hardware deals with building circuits and chips. Hardware design lies in the realm of engineering, and covers topics such as chip architecture, but also more general electrical engineering-style circuit design. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; font-weight: normal; text-align: justify; color: rgb(0, 0, 0);"&gt;Networking&lt;/h4&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Networking covers topics dealing with device interconnection, and is closely related to systems. Network design deals with anything from laying out a home network to figuring out the best way to link together military installations.&lt;br /&gt;&lt;br /&gt;Networking also covers a variety of practical topics such as resource sharing and creating better protocols for transmitting data in order to guarantee delivery times or reduce network traffic.&lt;br /&gt;&lt;br /&gt;Other work in networking includes algorithms for peer-to-peer networks to allow resource detection, scalable searching of data, and load balancing to prevent network nodes from exploiting or damaging the network.&lt;br /&gt;&lt;br /&gt;Networking often relies on results from theory for encryption and routing algorithms and from systems for building efficient, low-power network nodes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; font-weight: normal; text-align: justify; color: rgb(0, 0, 0);"&gt;Graphics&lt;/h4&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The field of graphics has become well-known for work in making amazing animated movies, but it also covers topics such as data visualization, which make it easier to understand and analyse complex data. You may be most familiar with the work in computer graphics because of the incredible strides that have been made in creating graphical 3D worlds! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; font-weight: normal; text-align: justify; color: rgb(0, 0, 0);"&gt;Programming Languages&lt;/h4&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Programming languages are the heart of much work in computer science; most non-theory areas are dependent on good programming languages to get the job done. Programming language works focuses on several topics. One area of work is optimization--it's often said that it's better to let the compiler figure out how to speed up your program instead of hand-coding assembly. And these days, that's probably true because compiler optimizations can do amazing things.&lt;br /&gt;&lt;br /&gt;Proving program correctness is another aspect of programming language study, which has led to a class of "functional" programming languages. Much recent work has focused on optimizing functional languages, which turn out to be easier to analyze mathematically and prove correct, and also sometimes more elegant for expressing complex ideas in a compact way.&lt;br /&gt;&lt;br /&gt;Other work in programming languages deals with programmer productivity, such as designing new language paradigms or simply better implementations of current programming paradigms (for instance, one could see Java as an example of a cleaner object-oriented implementation than C++) or simply adding new features, such as garbage collection or the ability to create new functions dynamically, to languages and studying how this improves the programmer's productivity.&lt;br /&gt;&lt;br /&gt;Recently, language-based security has become more interesting, as questions of how to make "safer" languages that make it easier to write secure code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-7187413431589202461?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/7187413431589202461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=7187413431589202461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7187413431589202461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7187413431589202461'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/fields-of-computers-science.html' title='Fields of Computers Science'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3510104164150801841</id><published>2008-05-05T04:04:00.001-07:00</published><updated>2008-05-05T04:11:08.988-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'></title><content type='html'>&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Parallel Algorithm Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The parallel algorithm for a given problem attempts to divide it into sub-problems which can then be solved &lt;i&gt;concurrently&lt;/i&gt; on the different processors of a parallel computer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The design of a parallel algorithm can be viewed as consisting of four stages - &lt;b&gt;Partitioning&lt;/b&gt;, &lt;b&gt;Communication Analysis&lt;/b&gt;, &lt;b&gt;Granularity Control&lt;/b&gt; and &lt;b&gt;Mapping&lt;/b&gt;. The following simple example illustrates some of the issues involved in each of the stages. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Consider the following scenario: &lt;i&gt;n&lt;/i&gt; answer-scripts have to be marked, each of which contains the answers to &lt;i&gt;m&lt;/i&gt; questions. The scripts could be viewed as the &lt;i&gt;data&lt;/i&gt;, and the marking process itself as the &lt;i&gt;computation&lt;/i&gt; to be performed on it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In order to design a parallel solution to this problem, it must first be decomposed into smaller tasks which can be executed simultaneously. This is referred to as the &lt;b&gt;partitioning&lt;/b&gt; stage. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;This can be done in one of two ways. Each script could be marked by a different marker - this would require &lt;i&gt;n&lt;/i&gt; markers. Alternatively, marking each question could be viewed as a task. This would result in &lt;i&gt;m&lt;/i&gt; such tasks, each of which could be tackled by a separate marker, implying that every script passes through every marker. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In the first approach, the &lt;i&gt;data&lt;/i&gt; (scripts) is first decomposed and then the &lt;i&gt;computation&lt;/i&gt; (marking) is associated with it. This technique is called &lt;i&gt;domain decomposition&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In the second approach, the &lt;i&gt;computation&lt;/i&gt; to be performed (marking) is first decomposed and then the &lt;i&gt;data&lt;/i&gt; (scripts) is associated with it. This technique is called &lt;i&gt;functional decomposition&lt;/i&gt;. The partitioning technique that will be chosen often depends on the nature of the problem. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Suppose one needs to compute the average mark of the &lt;i&gt;n&lt;/i&gt; scripts. If domain decomposition was chosen, then the marks from each of the markers would be required. If the markers are at different physical locations, then some form of communication is needed, in order to obtain the sum of the marks. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The nature of the information flow is specified in the &lt;b&gt;communication analysis&lt;/b&gt; stage of the design. In this case, each marker can proceed independently and communicate the marks at the end. However, other situations would require communication between two concurrent tasks before computation can proceed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;It may be the case that the time to communicate the marks between two markers is much greater than the time to mark a question. In which case, it is more efficient to reduce the number of markers and have a marker work on a number of scripts, thereby decreasing the amount of communication. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Effectively, several small tasks are combined to produce larger ones, which results in a more efficient solution. This is called &lt;b&gt;granularity control&lt;/b&gt;. For example, &lt;i&gt;k&lt;/i&gt; markers could mark &lt;i&gt;n/k&lt;/i&gt; scripts each. The problem here is to determine the best value of &lt;i&gt;k&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The &lt;b&gt;mapping&lt;/b&gt; stage specifies where each task is to execute. In this example, all tasks are of equal size and the communication is uniform, so any task can be &lt;i&gt;mapped&lt;/i&gt; to any marker. However, in more complex situations, mapping strategies may not be obvious, requiring the use of more sophisticated techniques. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Parallel algorithm design is an interesting and challenging area of computer science which requires a combination of creative and analytical skills. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Recursion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;A definition is said to be recursive if the name of the concept being defined &lt;i&gt;recurs&lt;/i&gt; within its definition. Put in other words, a process or a function is recursive if it can re-activate itself. You can find out about recursion here. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_s1026" type="#_x0000_t75" alt="" style="'position:absolute;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" title="walking_anim"&gt;  &lt;o:lock ext="edit" cropping="t"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif" shapes="_x0000_s1026" align="left" height="166" width="221" /&gt;&lt;span style="font-size: 14pt;"&gt;An unusual use of recursion in a definition comes from Professor Seymour Papert, Professor of Media Technology, at MIT (The Massachusetts Institute of Technology) and the inventor of the graphical programming language LOGO. Here are Papert's instructions on how to make a circle. First, take a step forward, then turn a little to the right, then make a circle. His description is a very unusual one because it describes a circle as a &lt;em&gt;process&lt;/em&gt; rather than as a static geometric shape. His description is recursive because making a circle is defined in terms of making a circle. Recursion is often used to define functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Factorial&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The factorial of a number &lt;i&gt;n&lt;/i&gt;, written &lt;i&gt;n&lt;/i&gt;!, is the product of the numbers between it and zero. A function to compute factorials can be defined like this. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;0! = 1&lt;br /&gt;&lt;i&gt;n&lt;/i&gt;! = &lt;i&gt;n&lt;/i&gt; * (&lt;i&gt;n&lt;/i&gt; - 1)! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="2" name="expr" type="text"&gt;         &lt;i&gt;n&lt;/i&gt;!: &lt;input name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Fibonacci&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In the fibonacci sequence, each number is the sum of its predecessors. The first two numbers are both one. The fibonacci function is defined like this. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;fib&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(0) = 1&lt;br /&gt;&lt;i&gt;fib&lt;/i&gt;(1) = 1&lt;br /&gt;&lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) = &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt; - 1) + &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt; - 2) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="2" name="expr" type="text"&gt;         &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;): &lt;input name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Greatest Common Divisor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Just to emphasize that recursion is not a new idea, here is a method for calculating the &lt;em&gt;greatest common divisor&lt;/em&gt; [or &lt;em&gt;highest common factor&lt;/em&gt;] of two numbers. The method was invented by the Greek mathematician Euclid of Alexandria who lived between [approximately] 330BC and 275BC. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;gcd&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;y&lt;/i&gt;, if &lt;i&gt;x&lt;/i&gt; is zero&lt;br /&gt;&lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt;, &lt;i&gt;x&lt;/i&gt;), if &lt;i&gt;y&lt;/i&gt; &lt; &lt;i&gt;x&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt; mod &lt;i&gt;x&lt;/i&gt;, &lt;i&gt;x&lt;/i&gt;), otherwise &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use this function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;x&lt;/i&gt;: &lt;input size="4" name="x" type="text"&gt;     Enter &lt;i&gt;y&lt;/i&gt;: &lt;input size="4" name="y" type="text"&gt;         &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;): &lt;input size="4" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Prime Factors&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The function for finding the prime factors of a number &lt;i&gt;n&lt;/i&gt; is relatively straightforward. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;1.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is even, one factor is 2, then find the prime factors of &lt;i&gt;n&lt;/i&gt;/2. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;2.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 3, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;3.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 5, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;4.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 7, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;5.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;It might seem that we must first calculate the prime numbers so that we may perform steps 2, 3 and subsequently. In fact, just using the odd numbers will be enough since an apparent factor of 15 will be removed as a factor of 3 and a factor of 5. Our recursive definition uses two functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;pfr&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(&lt;i&gt;n&lt;/i&gt;) = 2 and &lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;/2), if &lt;i&gt;n&lt;/i&gt; is even&lt;br /&gt;&lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) = &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;), if &lt;i&gt;n&lt;/i&gt; is odd &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The &lt;i&gt;pf&lt;/i&gt; function uses &lt;i&gt;m&lt;/i&gt; as the odd number counter. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;pf&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(1, &lt;i&gt;m&lt;/i&gt;) = none&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;n&lt;/i&gt;, if &lt;i&gt;n&lt;/i&gt; &lt; &lt;i&gt;m&lt;/i&gt;²&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;m&lt;/i&gt; and &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;/&lt;i&gt;m&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;), if &lt;i&gt;m&lt;/i&gt; divides &lt;i&gt;n&lt;/i&gt;&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt; + 2), otherwise &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="4" name="expr" type="text"&gt;    &lt;br /&gt;&lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;):   &lt;input size="30" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Base conversion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;To convert a number from one base to another is simple if the number can be represented as a single digit; you simply write down the digit. If the number cannot be represented in a single digit then divide by the base, convert the result to the other base and after it simply write down the digit which represents the remainder, even if the remainder is zero. You can try this below. You can enter bases such as those shown below but the method described above cannot be used to calculate unary representations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      01 for binary (Base 2); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      012 for ternary (Base 3); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      01234567 for octal (Base 8); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      0123456789ABCDEF for hexadecimal (Base 16). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="4" name="x" type="text"&gt;   Enter base: &lt;input name="base" type="text"&gt;   &lt;br /&gt;Result:   &lt;input size="40" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Recursion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;A definition is said to be recursive if the name of the concept being defined &lt;i&gt;recurs&lt;/i&gt; within its definition. Put in other words, a process or a function is recursive if it can re-activate itself. You can find out about recursion here. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_s1027" type="#_x0000_t75" alt="" style="'position:absolute;margin-left:-90pt;margin-top:-279.4pt;width:165.75pt;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" title="walking_anim"&gt;  &lt;o:lock ext="edit" cropping="t"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif" shapes="_x0000_s1027" align="left" height="166" width="221" /&gt;&lt;span style="font-size: 14pt;"&gt;An unusual use of recursion in a definition comes from Professor Seymour Papert, Professor of Media Technology, at MIT (The Massachusetts Institute of Technology) and the inventor of the graphical programming language LOGO. Here are Papert's instructions on how to make a circle. First, take a step forward, then turn a little to the right, then make a circle. His description is a very unusual one because it describes a circle as a &lt;em&gt;process&lt;/em&gt; rather than as a static geometric shape. His description is recursive because making a circle is defined in terms of making a circle. Recursion is often used to define functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Factorial&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The factorial of a number &lt;i&gt;n&lt;/i&gt;, written &lt;i&gt;n&lt;/i&gt;!, is the product of the numbers between it and zero. A function to compute factorials can be defined like this. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;0! = 1&lt;br /&gt;&lt;i&gt;n&lt;/i&gt;! = &lt;i&gt;n&lt;/i&gt; * (&lt;i&gt;n&lt;/i&gt; - 1)! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="2" name="expr" type="text"&gt;         &lt;i&gt;n&lt;/i&gt;!: &lt;input name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Fibonacci&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In the fibonacci sequence, each number is the sum of its predecessors. The first two numbers are both one. The fibonacci function is defined like this. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;fib&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(0) = 1&lt;br /&gt;&lt;i&gt;fib&lt;/i&gt;(1) = 1&lt;br /&gt;&lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) = &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt; - 1) + &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt; - 2) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="2" name="expr" type="text"&gt;         &lt;i&gt;fib&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;): &lt;input name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Greatest Common Divisor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Just to emphasize that recursion is not a new idea, here is a method for calculating the &lt;em&gt;greatest common divisor&lt;/em&gt; [or &lt;em&gt;highest common factor&lt;/em&gt;] of two numbers. The method was invented by the Greek mathematician Euclid of Alexandria who lived between [approximately] 330BC and 275BC. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;gcd&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;y&lt;/i&gt;, if &lt;i&gt;x&lt;/i&gt; is zero&lt;br /&gt;&lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt;, &lt;i&gt;x&lt;/i&gt;), if &lt;i&gt;y&lt;/i&gt; &lt; &lt;i&gt;x&lt;/i&gt;&lt;br /&gt;&lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;) = &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt; mod &lt;i&gt;x&lt;/i&gt;, &lt;i&gt;x&lt;/i&gt;), otherwise &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use this function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;x&lt;/i&gt;: &lt;input size="4" name="x" type="text"&gt;     Enter &lt;i&gt;y&lt;/i&gt;: &lt;input size="4" name="y" type="text"&gt;         &lt;i&gt;gcd&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;, &lt;i&gt;y&lt;/i&gt;): &lt;input size="4" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Prime Factors&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The function for finding the prime factors of a number &lt;i&gt;n&lt;/i&gt; is relatively straightforward. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;1.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is even, one factor is 2, then find the prime factors of &lt;i&gt;n&lt;/i&gt;/2. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;2.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 3, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;3.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 5, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;4.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;If &lt;i&gt;n&lt;/i&gt; is divisible by 7, remove this factor and then find the prime factors of the remainder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; font-family: times new roman; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;5.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;It might seem that we must first calculate the prime numbers so that we may perform steps 2, 3 and subsequently. In fact, just using the odd numbers will be enough since an apparent factor of 15 will be removed as a factor of 3 and a factor of 5. Our recursive definition uses two functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;pfr&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(&lt;i&gt;n&lt;/i&gt;) = 2 and &lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;/2), if &lt;i&gt;n&lt;/i&gt; is even&lt;br /&gt;&lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) = &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;), if &lt;i&gt;n&lt;/i&gt; is odd &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The &lt;i&gt;pf&lt;/i&gt; function uses &lt;i&gt;m&lt;/i&gt; as the odd number counter. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="font-size: 14pt;"&gt;pf&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 14pt;"&gt;(1, &lt;i&gt;m&lt;/i&gt;) = none&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;n&lt;/i&gt;, if &lt;i&gt;n&lt;/i&gt; &lt; &lt;i&gt;m&lt;/i&gt;²&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;m&lt;/i&gt; and &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;/&lt;i&gt;m&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;), if &lt;i&gt;m&lt;/i&gt; divides &lt;i&gt;n&lt;/i&gt;&lt;br /&gt;&lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt;) = &lt;i&gt;pf&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;, &lt;i&gt;m&lt;/i&gt; + 2), otherwise &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;You can use the function below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="4" name="expr" type="text"&gt;    &lt;br /&gt;&lt;i&gt;pfr&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;):   &lt;input size="30" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;h2 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Base conversion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;To convert a number from one base to another is simple if the number can be represented as a single digit; you simply write down the digit. If the number cannot be represented in a single digit then divide by the base, convert the result to the other base and after it simply write down the digit which represents the remainder, even if the remainder is zero. You can try this below. You can enter bases such as those shown below but the method described above cannot be used to calculate unary representations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      01 for binary (Base 2); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      012 for ternary (Base 3); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      01234567 for octal (Base 8); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter      0123456789ABCDEF for hexadecimal (Base 16). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;form style="font-family: times new roman;"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Enter &lt;i&gt;n&lt;/i&gt;: &lt;input size="4" name="x" type="text"&gt;   Enter base: &lt;input name="base" type="text"&gt;   &lt;br /&gt;Result:   &lt;input size="40" name="result" type="text"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/form&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Systems Administration&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Most modern computing facilities are based on a wide variety of different hardware, ranging in size from portable PCs to powerful workstations and servers. These machines are usually interconnected as part of a complex network with many different protocols and software packages used to provide the required services. The job of integrating, developing and managing these complex systems is called &lt;em&gt;Systems Administration&lt;/em&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="width: 100%; font-family: times new roman; text-align: left; margin-left: 0px; margin-right: 0px;" border="0" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1055" type="#_x0000_t75" alt="" style="'width:118.5pt;height:1in'"&gt;    &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" href="http://www.dcs.ed.ac.uk/home/stg/pub/S/left.gif"&gt;   &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif" shapes="_x0000_i1055" border="0" height="96" width="158" /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;If you have a Postscript viewer, you can   look at a diagram   of the Computer Science Department network, or you can see a list of the departmental   machines and look at their specifications. This is a typical installation   with around 300 machines of various types, 1500 users and 400 different   software packages. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Systems Administration has not been   traditionally regarded as an academic discipline and is not yet widely   offered as a taught course. However, the department has considerable   experience in this area and projects are often undertaken as part of an   undergraduate or MSc course. Students can also gain experience of systems   administration through the Tardis   Project which is hosted by the department. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1056" type="#_x0000_t75" alt="" style="'width:159pt;height:84pt'"&gt;    &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" href="http://www.dcs.ed.ac.uk/home/stg/pub/S/right.gif"&gt;   &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif" shapes="_x0000_i1056" border="0" height="112" width="212" /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Some typical questions that might concern a systems administrator include: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;With      400 software packages on the system, there will be constant changes and      updates required. How can we arrange for 300 machines to always have the      same up-to-date version? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In      a network of several hundred machines, there will nearly always be at      least one machine which is down. How can we be sure that this doesn't      always disrupt hundreds of other machines on the network? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;How      can we ensure that valid users have easy access to information on the      network, while still keeping this information secure against unauthorised      access? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;If      it takes one person to install and maintain a single machine, how can we      avoid requiring 300 people to install and maintain 300 machines? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;How      can we arrange for a user to log on to any one of hundreds of machines and      still have access to the same files and programs? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;How      can we design the network so that tens of extra machines can be easily      added without overloading, or requiring a major re-configuration, of      existing systems? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;More information about the departmental systems is available here. A good starting point for further information on Systems Administration in general, is the web page for the Systems Administrators Guild (SAGE). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Virtual Reality&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Virtual reality (VR) is a technology which allows users to participate in, and interact with, a 3D computer-generated world, or virtual environment (VE). In essence, VR aims to provide a new and more natural means of Human-Computer Interaction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;How Does It Work?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;There are two flavours of virtual reality: &lt;i&gt;Desktop&lt;/i&gt; and &lt;i&gt;Immersive&lt;/i&gt;. Desktop VR simply requires a standard computer monitor to display the 3D world, e.g. popular games on the PC like Doom, Descent etc. can be considered Desktop VR because they allow the player to explore and interact within a 3D environment. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_s1028" type="#_x0000_t75" alt="Head-Mounted Display" style="'position:absolute;margin-left:-90pt;margin-top:-502.9pt;width:180.75pt;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" title="hmd"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif" alt="Head-Mounted Display" shapes="_x0000_s1028" align="left" height="180" width="241" /&gt;&lt;span style="font-size: 14pt;"&gt;By comparison, Immersive VR requires the use of special display devices to make the user feel more enclosed in the virtual environment. We can do this by either making the displays much bigger (e.g. projection screen systems) or by bringing the displays closer to the eyes (e.g. head-mounted displays, like the one opposite). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;We may also use new input devices to allow the user to interact with the world in a natural manner. For example, the person on the right is using a glove device so that they can directly manipulate and select objects in the virtual environment with their hands. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;In order to use the head-mounted display to look inside a virtual world, or a glove to interact with that world, we need some form of tracking technology which can monitor 6 degrees of freedom. That is, track the position (&lt;i&gt;x,y,z&lt;/i&gt;) and orientation (&lt;i&gt;yaw,pitch,roll&lt;/i&gt;) of your head or hand in 3D space. With this information, the computer knows when you move your body part and can update the image of the virtual world accordingly. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="30%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;What Is VR Used For?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;VR arguably provides the most natural means of communicating with a computer because it allows us to use our inherent 3D spatial skills that have evolved over thousands of years (such as walking, gesturing, looking, grabbing etc.) There is a therefore a vast range of potential applications for VR. Below is a small cross-section of some of the uses which VR technology has already been used for: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Architectural Design&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;:      Architects can now use VR technology to designing and walking through a      building or room. E.g. here is the UNC      Walkthrough Project . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Art&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: VR is a new medium      for artists to express their visions. For example, take a look at the VR-ART Virtual Gallery .      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Education&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: Systems have      been designed to help disabled children, allow the visualisation of      mathematical concepts, perform virtual lectures &amp;amp; conferences etc. For      example, here is the Virtual      Reality and Education Laboratory and the VIRART      Educational Applications of VR page. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Medicine&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: There is much      interest in the possibility of for virtual surgery and the provision of      other aids for the surgeon, e.g. in the fields of ultrasonic imaging, MRI,      drug design etc. For example, how do you fancy attending the Virtual Clinic ? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Training&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: VR can be used      to safely train personnel for high-risk activities. For example, VR      technology was used by NASA for their Hubble Space      Telescope Repair Training System . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Scientific Visualisation&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;:      Scientific visualisation is the use of computers to understand complex      phenomenon. For example, manipulating and viewing complex molecules or      computational fluid dynamics models. E.g. click here to see the NASA Ames'      Virtual      Windtunnel . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Entertainment&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: There are      of course a number of VR games available in arcades and for your home      computer. Here is the Atlantis VR      Entertainment Resource Guide . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Virtual Prototyping&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;:      Creating a computer-generated prototype is quicker, cheaper and also      easier to modify. The Virtual      Manufacturing project at &lt;st1:place st="on"&gt;&lt;st1:placename st="on"&gt;Bath&lt;/st1:PlaceName&gt;       &lt;st1:placetype st="on"&gt;University&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; is an      example of this. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;VRML&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;: The Virtual      Reality Modeling Language (VRML) is a developing standard for describing      interactive 3D scenes delivered across the Internet. Click here for the VRML Repository . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;If you want to find more information about virtual reality on the World Wide Web, then you can take a look at Toni Emerson's Internet Resources in Virtual Reality . &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3510104164150801841?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3510104164150801841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3510104164150801841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3510104164150801841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3510104164150801841'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/parallel-algorithm-design-parallel.html' title=''/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4699891467011459174</id><published>2008-05-05T04:03:00.001-07:00</published><updated>2008-05-05T04:11:08.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Models of Parallel Computation</title><content type='html'>&lt;h1 style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/h1&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;When we try to apply our simple ideas about parallel algorithms to real parallel computers things get much more complicated. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Think about the addition example again. Suppose that the numbers are initially distributed one per processor to 8 processors. The processors are connected into a ring, and in a single time step, each processor can either perform an addition on numbers it already stores, or can pass one of its numbers on to a neighbouring processor in the ring. How many time steps do we need to add the numbers together now? &lt;i&gt;Was it worth the effort? &lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;There are many different schemes for combining processors and memories to form a parallel computer. For example, should the processors share direct access to a common set of memory modules, or should they each have their own private memory module and share information with the others by exchanging messages through some communications medium? What should the pattern of physical connectivity be? How does the time to perform some simple computation on a processor compare with the time to access some remote piece of data? The answers to these questions have serious implications for the pragmatic utility of parallel algorithms. The temptation to design algorithms for one specific parallel computer leads to programs which are not portable as new machines emerge. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;The `holy grail' of parallel computing is to devise a `model of parallel computation' (in other words a statement of the ground rules for parallel algorithms) which is both flexible enough to allow the expression of good algorithms and which can also be mapped efficiently to any real parallel machine. In reality, it seems that any such model must represent a compromise between these conflicting goals. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Inheritance&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; allows extension without replacement. Appropriate use of a feature called &lt;b&gt;late binding&lt;/b&gt; or &lt;b&gt;virtual functions&lt;/b&gt; increases this flexibility of components. Component based interaction allows introduction of new features by adding new objects without changing existing code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;maintenance: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Objects &lt;b&gt;decouple&lt;/b&gt; parts of a system, i.e. objects are largely independent of each other. Fixing errors in a class definition fixes all objects derived from that class. Other parts of the system are unchanged. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4699891467011459174?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4699891467011459174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4699891467011459174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4699891467011459174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4699891467011459174'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/models-of-parallel-computation.html' title='Models of Parallel Computation'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-9031645296980937298</id><published>2008-05-05T04:02:00.000-07:00</published><updated>2008-05-05T04:11:46.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science Engineering'/><title type='text'>Objected oriented techniques,</title><content type='html'>&lt;span style="font-size: 14pt;"&gt;Object oriented programming and design have become the latest fashion in software construction. Unfortunately these terms are often assumed to simply mean using a particular programming language, like C++ or Smalltalk. Here we look at some ideas underlying these terms. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Object oriented analysis and design are an attempt to change software into something where &lt;em&gt;structure&lt;/em&gt; exists in a form which can be exploited to solve the problems of software construction. They seek to build software in a &lt;em&gt;component based&lt;/em&gt; fashion, in the same way that mechanical and electrical engineers operate. They address the problems listed below directly by changing the way we think about and use software. In particular the term &lt;em&gt;construction&lt;/em&gt; replaces writing as the key activity for software builders. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;The description of a type of object is written as a &lt;em&gt;class&lt;/em&gt; definition. Multiple copies of this can then be created in a program. Objects work together by activating operations in each other. These operations are often referred to as &lt;em&gt;methods&lt;/em&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Object oriented programming is used in different contexts for quite different purposes. Smalltalk is a language designed for experimental programming and rapid prototyping. It offers very few safeguards against mistakes. Other object oriented languages, like C++, provide careful checking of your program and are more suited to building large systems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;By thinking in terms of objects as components we should be able to gain the following benefits: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;productivity: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 14pt;"&gt;Systems can now be built from &lt;b&gt;reusable components&lt;/b&gt;. Most software in a particular application area will already exist. Where it does not exist in quite the right form, it will be possible to modify its behaviour through &lt;b&gt;inheritance&lt;/b&gt; without complete rewriting. True economies of scale now become possible. Also, a component based approach allows separate components to be built and tested individually, increasing economies of scale further. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;reliability: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 14pt;"&gt;Since much software will be reused, not written anew, it should be more reliable. It becomes worthwhile to invest more resource in &lt;b&gt;initial design&lt;/b&gt; of components and well used components will have been proved in use. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-size: 14pt;"&gt;extensibility: Parallelism&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The study of &lt;i&gt;parallelism&lt;/i&gt; investigates the extent to which many processors can applied to some problem in order to shorten the time required to find a solution, or to enable the solutions to larger problems to be found in the same fixed timespan. The processors are said to be working "in parallel" or "concurrently". &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;"If one woman can have a baby in nine months, why can't nine women have a baby in one month?" &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Or to put it more mundanely, what it is about certain computational tasks that makes it difficult or impossible to share the work out between &lt;i&gt;p &lt;/i&gt;processors in an attempt to get the work done &lt;i&gt;p &lt;/i&gt;times faster? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Consider the problem of adding together 8 numbers. With one processor, capable of adding two numbers in a single time step, we need 7 time steps. Make sure you see why. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Now suppose you have an unlimited number of such processors available. What is the smallest number of time steps in which the 8 numbers can be added, and how many processors are needed to achieve this effect? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;The answer is that 4 processors can do the job in 3 time steps. In the first step, each processor adds together a different pair of numbers. In the second step, two processors each add a different pair of results from the first step. In the final step, one processor adds the two results from the second step. No matter how many processors we add, we can't add the numbers in fewer steps (unless we change our definition of what can be achieved by a single processor in a single step). We can't use 7 processors to add the numbers in one time step. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;How about if you have &lt;i&gt;n &lt;/i&gt;numbers? (You might find it easiest to restrict &lt;i&gt;n &lt;/i&gt;to be a power of 2.) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Now try a similar exercise for the problem of deciding whether each of the 8 numbers is odd or even. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Some problems are more amenable to parallelised solution than others, sometimes by virtue of inherent dependencies between parts of the solution, sometimes because of restrictions imposed by the &lt;i&gt;model of parallel computation&lt;/i&gt; within which we choose (or are forced) to work. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-9031645296980937298?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/9031645296980937298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=9031645296980937298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/9031645296980937298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/9031645296980937298'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/objected-oriented-techniques.html' title='Objected oriented techniques,'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-1539515191859061551</id><published>2008-05-05T04:01:00.000-07:00</published><updated>2008-05-05T04:11:08.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Multimedia Mail</title><content type='html'>&lt;h1 style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Multimedia mail&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Electronic mail is a speedy way to transmit a message across a computer network. Messages which simply contain text may be passed from one computer system to another without much difficulty but when a message is to contain an image or sound or video clip than this attachment must be encoded in one way or another. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;At one time computer screens were able to display only a very limited range of characters and symbols, roughly those on a typewriter keyboard. When connected to a network in order to be able to send and receive electronic mail messages the same limitations would apply; the messages could only contain text. Now computer screens are much more sophisticated and are able to display images and simultaneously electronic mail has obtained a new importance because of increased availability of access. These developments have combined to lead to increased sophistication in electronic mail use and messages which contain image or sound or video files as &lt;i&gt;attachments&lt;/i&gt; are now common. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;In order to send an attachment of this kind, the sender must encode it before transmission and the recipient will decode it upon receipt. The purpose of the encoding and decoding is not to keep the contents of the message secret [it is not &lt;i&gt;encryption&lt;/i&gt;] rather the encoding is essential in order to allow the message to be transmitted at all. This method of transmission is analogous to the way in which a digital signal is sent over an analogue transmission line by having the sender modulate the signal and having the receiver de-modulate it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;On the Internet, multimedia mail is sent and received using MIME standards, one of which is Base64 encoding. According to the &lt;span style="text-decoration: none;"&gt;MIME&lt;/span&gt; Frequently Asked Questions list, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;MIME, the Multi-purpose Internet Mail Extensions, is a freely available specification that offers a way to interchange text in languages with different character sets, and multi-media e-mail among many different computer systems that use Internet mail standards. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The Base64 encoding scheme samples a message to be sent, extracting groups of twenty-four input bits at a time. These are considered as four groups of six bits and the six bits can be represented as shown below; there are sixty-four [two to the power six] possible combinations of six bits. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;i&gt;Values&lt;/i&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;i&gt;Encoding&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;0-25&lt;span style=""&gt;    &lt;/span&gt;[A-Z]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;26-51&lt;span style=""&gt;    &lt;/span&gt;[a-z]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;52-61&lt;span style=""&gt;    &lt;/span&gt;[0-9]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;62&lt;span style=""&gt;    &lt;/span&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;63&lt;span style=""&gt;    &lt;/span&gt;/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Thus the groups of six bits are represented using only the uppercase letters, the lowercase letters, the digits and the symbols plus, division sign and the equals sign [used as a padding character]. These characters can be easily transmitted anywhere on the Internet. The characters are made into lines of sixty-four characters long and the message is sent. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;For a user of a modern mail program, the conversion to and from Base64 is completely automatic but of course, it can be laborious to be asked to learn how to use a new program every time that a development of this kind takes place and so some electronic mail users prefer to use an old-fashioned mail program which they are familiar with [but which does not know about MIME encoding] together with a simple Base64 encoder/decoder such as &lt;span style="text-decoration: none;"&gt;Mpack&lt;/span&gt;, available for Unix, DOS, Apple Macintosh and other systems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-1539515191859061551?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/1539515191859061551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=1539515191859061551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/1539515191859061551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/1539515191859061551'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/multimedia-mail.html' title='Multimedia Mail'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4737620417970695615</id><published>2008-05-05T04:00:00.000-07:00</published><updated>2008-05-05T04:11:08.990-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>The LEGO Project,</title><content type='html'>&lt;h1 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The LEGO Project&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The LEGO Project is a group of researchers interested in using the computer to help in developing and checking proofs. This page gives a brief overview of the project. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;As software takes on a greater role in modern society, its reliability becomes a matter of increasing concern. There are many aspects to producing reliable software, including requirements analysis and specification. Our project focuses on computer-aided formal reasoning: using the computer to help in developing and checking proofs, in particular proofs of program correctness. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;One of our long-term aims is to enable more people to feel confident about carrying out mathematical proofs, by providing them with computer assistance. There is a difference between proofs done with pencil and paper using ``mathematical English'' and formal proofs in logical notation developed on a computer. This is like the distinction between the informal description of an algorithm and its implementation as a program in a particular language. We have adapted technology used in software development, including tools such as parsers, type-checkers and interpreters, to help us in formal proof development. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Theoretical results justify our confidence in our proof environment. The project uses a constructive type theory as the primary framework for proofs. Constructive type theories can be regarded as hybrids between on the one hand the logic and set theory that mathematics is usually based on, and on the other hand functional programming languages with types. Constructive type theories are useful for reasoning about not only functional programs, but also programs written in idealised versions of widely-used languages such as C and Fortran. A particularly useful feature of modern type theories is their support for inductive definitions. Such definitions are commonly encountered in computer science, for example in defining mathematical models of programming languages. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Randy Pollack developed the system called &lt;span style="text-decoration: none;"&gt;LEGO&lt;/span&gt;, which we use extensively and continue to develop. LEGO supports: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;interactive      proof construction, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;proof      checking as type-checking, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;modular      support for proof re-use, and libraries of definitions and theorems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="helping"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Helping programmers get it right&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_s1026" type="#_x0000_t75" alt="figure230" style="'position:absolute;margin-left:-90pt;margin-top:-542.15pt;width:286.5pt;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" title="img1"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif" alt="figure230" shapes="_x0000_s1026" align="left" height="32" width="382" /&gt;&lt;span style="font-size: 14pt;"&gt;Programming errors can be avoided if the software engineer &lt;em&gt;proves&lt;/em&gt; that his program fulfils the desired specification. This is difficult because programs are complex mathematical objects. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_s1027" type="#_x0000_t75" alt="figure231" style="'position:absolute;margin-left:-90pt;margin-top:-611.55pt;width:224.25pt;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" title="img2"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif" alt="figure231" shapes="_x0000_s1027" align="left" height="71" width="299" /&gt;&lt;span style="font-size: 14pt;"&gt;What is a good theory for developing programs and their correctness proofs? We are exploring type theory as a framework for program development methodologies which simultaneously support proving correctness properties. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" alt="figure232" style="'width:550.5pt;height:127.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" href="http://www.dcs.ed.ac.uk/home/stg/pub/L/img3.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif" alt="figure232" shapes="_x0000_i1026" border="0" height="170" width="734" /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;LEGO's type theory provides &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;a      programming language dealing with expressions, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;inductive      definitions naturally representing the syntax of a programming language.      They are also crucial in modelling program execution on an abstract      machine, and &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;a      logic which gives rise to a powerful specification language. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_s1028" type="#_x0000_t75" alt="figure233" style="'position:absolute;margin-left:-90pt;margin-top:-324.25pt;width:198pt;" allowoverlap="f"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\Pelican\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" title="img7"&gt;  &lt;w:wrap type="square"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style="font-size:130%;"&gt;&lt;img src="file:///C:/DOCUME%7E1/Pelican/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif" alt="figure233" shapes="_x0000_s1028" align="left" height="46" width="264" /&gt;&lt;span style="font-size: 14pt;"&gt;Combining all these features, we can cater for various notions of ``program correctness''. We analyse collections of &lt;em&gt;refinement rules&lt;/em&gt; to guide the programmer. The LEGO system provides excellent support for proving that the rules cannot lead to ill-behaved programs (soundness) and that the collection of rules is sufficient regardless of the task at hand (completeness). Furthermore, the framework can be evaluated by case studies of program developments within LEGO. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;We are investigating developing object-oriented programs together with their proofs of correctness, in collaboration with the Universities of Darmstadt and &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Erlangen&lt;/st1:place&gt;&lt;/st1:City&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Ongoing activities of the group include: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;co-operating      with &lt;span style="text-decoration: none;"&gt;Harlequin Ltd.&lt;/span&gt; in      studying the specifications and correctness proofs for memory management      systems, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;creating      a framework for developing imperative programs together with proofs of      correctness, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;studying      basic properties of constructive type theories and devising ways of      improving the theories, and &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;experimenting      with other proof systems, with a view to simplifying the development and      presentation of proofs on the computer.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;  &lt;h1&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Drawing a straight line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Computers do simple tasks quickly and reliably. Complex tasks have to be broken down into simple tasks. Even drawing a straight line on the screen is a complex task which must be broken down into simple instructions, telling the computer to paint some dots (picture elements, or pixels) on the screen. We describe two ways of drawing a line, two algorithms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="MsoNormal" align="center"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h2&gt;&lt;span style="font-size:130%;"&gt;Pixels&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;If you look closely at the screen, you'll see that it is made up of a grid of small dots, called &lt;i&gt;pixels&lt;/i&gt; (picture elements). There are about half a million pixels on a typical screen. The computer must be told what colour to use for each pixel, to create each image you see.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;Some images, such as photos, are stored as gif (Graphics Interchange Format) files, which store the colour of each pixel in the image. For images that can be represented as line drawings, it takes much less space to store a list of lines, and then compute which pixels should be coloured in each time we want to display the image. Drawing lines is the subject of this note.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;The pixels in a picture are arranged in rows and columns. We number the columns from left to right, starting with column zero at the left edge of the picture, and the rows from top to bottom, starting from zero at the top of the picture. So any pixel is described by two numbers, &lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;, telling us where in the picture the pixel lies; &lt;i&gt;x&lt;/i&gt; giving the column, and &lt;i&gt;y&lt;/i&gt; giving the row. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;We call the pair of numbers, &lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;, the &lt;i&gt;coordinates &lt;/i&gt;of the pixel. In the demonstration applet below, we give a view magnified 10x, so a single pixel is represent by 100 actual pixels on the screen. Click on the yellow, diagram area of the applet below; the coordinates of the pixel you click on should appear in the message area.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-size:130%;"&gt;Lines&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;  &lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size: 14pt;"&gt;A line can be described by giving two pixels, saying where the line should start and end. When you click on the diagram, a magnified point is drawn. When you click again, on another point, a line is drawn between the two points. How do we decide which pixels to draw to form the line? We describe two ways: recursive subdivision, and Bresenham's algorithm. You can see both in action by using the buttons to choose an algorithm, and then clicking in the yellow area to select the two ends of the line.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:130%;"&gt;   &lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4737620417970695615?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4737620417970695615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4737620417970695615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4737620417970695615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4737620417970695615'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/lego-project.html' title='The LEGO Project,'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3560138090622665354</id><published>2008-05-05T03:58:00.001-07:00</published><updated>2008-05-05T04:11:08.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>File system indexing, Graph Algorithms</title><content type='html'>&lt;h1  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;File system indexing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="font-family: times new roman;" face="times new roman"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;After some time using a computer-based system to store information a productive user will amass a large collection of files and might then find that, even though they were careful to structure their files into a well-defined hierarchy, it becomes difficult to find an infrequently accessed file. The solution to this problem is to build an index and search that to find the location of the text within one of their files. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="times new roman" style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal"  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div face="times new roman" style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;Given only a small number of files containing information such as computer programs, electronic mail messages or text, the owner of the files can find the information which they are looking for by simply looking through each of their files. When the number increases a little then they might use a search program to look through the files. On the UNIX operating system a suitable program is &lt;i&gt;grep&lt;/i&gt;, which uses regular expressions to make the searching capability more powerful. A related program, &lt;i&gt;agrep&lt;/i&gt;, performs approximate matching. When the number of files increases by a lot then this method of looking for information is no longer powerful enough and it is better to first create an index for the files and then to consult this index instead of searching the files themselves. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="times new roman" style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;The &lt;span style="text-decoration: none;"&gt;Glimpse&lt;/span&gt; package for UNIX systems which allows an individual [or organisation] to index a collection of files and query the index afterwards. The time taken to create the index of the files in the first instance is recouped because the index is searched again and again. If the files which are stored change dramatically or increase then the index can be rebuilt. The following extract from the user manual of the Glimpse package explains how the system works. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="times new roman" style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;To index all the files in a directory tree rooted at DIR, you simply say &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;glimpseindex DIR &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;(E.g., glimpseindex ~ indexes all your files.) Afterwards, glimpse can search through all these files much the same way as agrep (or any other grep), except that you don't have to specify file names and the search is fast. For example, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;glimpse -2 unbelievable &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;will find all occurrences (in all your files!) of "unbelievable" allowing two spelling errors; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;glimpse -F mail &lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;arizona&lt;/st1:place&gt;&lt;/st1:state&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;will find all occurrences of "&lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;arizona&lt;/st1:place&gt;&lt;/st1:state&gt;" in all files with "mail" somewhere in their name; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;glimpse '&lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Arizona&lt;/st1:place&gt;&lt;/st1:state&gt; desert;windsurfing'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;will find all lines that contain both "&lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Arizona&lt;/st1:place&gt;&lt;/st1:state&gt; desert" and "windsurfing". &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;h1  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;Graph Algorithms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;Graph Theory is a very fascinating branch of Mathematics in which we study objects called graphs. It turns out that hundreds of real-life problems can be modelled as problems about graphs and it is very important to find efficient solutions to these problems. A lot of research effort in Computer Science has been devoted to this cause and as a result, ``Graph Algorithms'' has become a very important and vast branch of Computer Science. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal"  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;In very simple terms, a graph can be thought of as a collection of sites [called vertices], pairs of which may be connected by links [called edges]. There may be information associated with the vertices as well as with the edges. For example, the sites could be all the big cities in the &lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;UK&lt;/st1:place&gt;&lt;/st1:country-region&gt; and the edges might represent the existence of direct flights between pairs of cities. The information associated with an edge connecting cities &lt;i&gt;A&lt;/i&gt; and &lt;i&gt;B&lt;/i&gt; might be the amount of time taken to fly from &lt;i&gt;A&lt;/i&gt; to &lt;i&gt;B&lt;/i&gt;. Another example is one where the sites represent telephone exchanges and we put edges between exchanges that are connected by direct lines. The information associated with the edges in this case could be the volume of traffic [calls] that can be handled by the lines. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: times new roman; text-align: justify;"&gt;  &lt;span style="color: rgb(0, 0, 0);font-size:130%;" &gt;There are many interesting questions that we might ask at this point. For the graph of cities, we might want to know the ``minimum flight time'' required if we want to go from &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Edinburgh&lt;/st1:place&gt;&lt;/st1:city&gt; to some other big city. Note that in the absence of a direct flight we need to consider all possible ways of reaching the destination city which is what makes this problem nontrivial to solve.&lt;br /&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;For the graph of telephone exchanges, we might want to know whether two exchanges are connected [directly or indirectly via other exchanges], or we might want to know the answer to this very important question, namely, ``If the direct lines between exchanges &lt;i&gt;A&lt;/i&gt; and &lt;i&gt;B&lt;/i&gt; fail, what would be the best way to route the calls between them?.'' &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Here, we take a look at what is known as the `Single-source Shortest Paths Algorithm', to solve the following problem. Given the graph of cities as described above, find the minimum flight time required to get from &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Edinburgh&lt;/st1:place&gt;&lt;/st1:City&gt; to every other city. To keep things simple we assume that between any pair of cities, if a direct flight exists, then it exists in both directions and is of the same duration. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;The algorithm was discovered by Edsger W. Dijkstra, a very famous computer scientist, who is currently a professor at the University of Texas, Austin. The picture of Dijkstra shown here is from 1955, around the time of his invention of the shortest path algorithm. Dijkstra's algorithm is a very good example of what is known as the `Greedy Method' in computer science, where at each step we try to be greedy and always choose the best available option. This may seem like an elementary and perhaps the obvious strategy, but it is not always the best strategy to use. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;The first step to solving any problem on the computer is to figure out how the data should be represented. In this case, we represent the cities using the numbers 1 to &lt;i&gt;N&lt;/i&gt; [where &lt;i&gt;N&lt;/i&gt; is the number of cities], and the information about flight times is represented as an &lt;i&gt;N&lt;/i&gt;×&lt;i&gt;N&lt;/i&gt; array [matrix], say &lt;b&gt;FT&lt;/b&gt;. The entry &lt;b&gt;FT&lt;/b&gt;[&lt;i&gt;i&lt;/i&gt;,&lt;i&gt;j&lt;/i&gt;] tells us the flight time from City &lt;i&gt;i&lt;/i&gt; to City &lt;i&gt;j&lt;/i&gt; [say in terms of the number of minutes]. We set &lt;b&gt;FT&lt;/b&gt;[&lt;i&gt;i&lt;/i&gt;,&lt;i&gt;i&lt;/i&gt;] = 0 for every city to indicate that the flight time from a city to itself is 0. If a direct flight does not exist between cities &lt;i&gt;i&lt;/i&gt; and &lt;i&gt;j&lt;/i&gt; then we set &lt;b&gt;FT&lt;/b&gt;[&lt;i&gt;i&lt;/i&gt;,&lt;i&gt;j&lt;/i&gt;] to a very big number like 1200 [= 20 hours] to indicate the nonexistence. We let City 1 be the city from which we want to find the minimum flight times. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Dijkstra's algorithm proceeds in stages. By the end of the &lt;i&gt;i&lt;/i&gt;th stage, it identifies all cities &lt;i&gt;k&lt;/i&gt; such that the minimum flight time from City 1 to City &lt;i&gt;k&lt;/i&gt; requires taking at most &lt;i&gt;i&lt;/i&gt; flights altogether and also computes the minimum flight times to all cities from City 1 if at most &lt;i&gt;i&lt;/i&gt; flights are taken. At the end of stage &lt;i&gt;N&lt;/i&gt;-1, all the minimum flight times are known since we need to take at most &lt;i&gt;N&lt;/i&gt;-1 flights to get to any city from City 1. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Here is an animation that shows Dijkstra's algorithm in operation. We want to find the minimum flight time from &lt;b&gt;S&lt;/b&gt; to &lt;b&gt;T&lt;/b&gt;. The animation shows the progress of the algorithm in stages as described above and displays the minimum flight times computed as it proceeds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3560138090622665354?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3560138090622665354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3560138090622665354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3560138090622665354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3560138090622665354'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/file-system-indexing-graph-algorithms.html' title='File system indexing, Graph Algorithms'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3813501363720674307</id><published>2008-05-05T03:57:00.001-07:00</published><updated>2008-05-05T04:11:08.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Error correcting codes</title><content type='html'>&lt;h1 style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Error correcting codes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The storage and transmission of digital data lies at the heart of modern computers and telecommunications. If data is corrupted in storage or transmission, the consequences can range from mildly annoying to disastrous. How can we code the data to make errors considerably less likely? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Suppose you want to send a message in the form of a binary string, i.e., a string of 0's and 1's. Due to noise in the medium over which you are transmitting the message, be it a telephone line, a radio link or the Internet, it is possible that some of the 0's will be received as 1's and vice versa. Let us denote the probability that any one bit is garbled in transmission by &lt;i&gt;p&lt;/i&gt;. Typically, &lt;i&gt;p&lt;/i&gt; will be small, say about one in a million, but that may still be too large for our purposes. If we are transferring a file that has 10 million bits, the chance that the file is incorrectly received is nearly 90%. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;How can we improve the reliability of the transmission? The simplest method is to repeat ourselves three times. For example, if we want to send the string 010, we transmit 000111000. If a single error occurs in transmission, this may be received for instance as 001111000. At the receiver, we use what is called majority decoding. We look at each set of 3 bits and decode it as the bit which occurs most often. Thus, the received message above is correctly decoded as 010 even though an error occured in transmission. In the above example, it could have happened that two errors occured and we received the string 101111000. This would be decoded as 110, which is different from the original message. This shows that we cannot eliminate errors altogether, we can only make them less likely. To see how much less likely, let us work out the probability that a single bit is incorrectly received. Since each bit is transmitted three times, it has to be incorrectly received at least twice in order for the decoder to get it wrong. The probability of this is 3&lt;i&gt;p&lt;/i&gt;²+&lt;i&gt;p&lt;/i&gt;³, which, for &lt;i&gt;p&lt;/i&gt; equal to one in a million works out to about one in 330 billion. Thus, using the repetition code, a 10 Mbit file can be sent correctly with probability 99.997%. While this coding scheme dramatically reduces the likelihood of errors, it is rather inefficient. Can we do better? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Here's one way, using the famous (7,4) Hamming code. This works with a block of 4 bits at a time rather than with a single bit. Suppose we want to transmit the block 0011. Look at the picture below. We write these bits in the intersections of the circles. Next, we fill in the part of each circle lying outside the intersection using the rule that the total number of 1's contained in each circle should be even. The extra bits are called parity bits -- they ensure even parity for the number of 1's in each circle. The message we transmit will consist of all seven bits, in a pre-arranged order so that the receiver can reconstruct the diagram. Suppose now that a single error occurs, so that the receiver gets a 1 in the intersection of the top two circles. The receiver proceeds to work out the parity for each of the circles, and finds that the top two circles both have odd parity (odd number of 1's), while the bottom circle has even parity. This enables her to conclude that an error has occurred, and that the error is in the bit position common to the top two circles. Therefore, the intended message can be decoded correctly. It is not hard to see that a similar approach works if the error is in some other bit position. However, if there are two errors, then the decoding procedure fails in that it yields a message different from the intended one. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Assuming as above that the probability that a bit is received incorrectly is one in a million, the error probability per bit using the Hamming code is less than one in 10 billion. While this is higher than with the repetition code, it is low enough for most purposes and the Hamming code is preferred because of its much greater efficiency. The search for good codes has become an important field of study in its own right. Its main tools come from a branch of what was until recently pure mathematics, the study of algebraic structures called Galois fields, named after the 19th century French mathematician Evariste Galois. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Historically, a major impetus for the development of coding theory came from the need to communicate with planetary probes. The fact that these can't afford to carry large power supplies, combined with the great distances from which they transmit, make the received signals very weak. Thanks to error-correction coding, it is nonetheless possible to get high-quality pictures like this one of Saturn sent by Voyager 2. Today, error-correcting codes maintain the integrity of data stored on computer tapes and disks and in semiconductor memories; they ensure that compact discs continue to provide flawless sound even if they are slightly scratched; they enable long-distance communications using satellites; they are even used in the bar-code readers in supermarkets. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3813501363720674307?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3813501363720674307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3813501363720674307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3813501363720674307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3813501363720674307'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/error-correcting-codes.html' title='Error correcting codes'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4384197571081560999</id><published>2008-05-05T03:55:00.000-07:00</published><updated>2008-05-05T04:11:08.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Disk scheduling,Distributed Computing</title><content type='html'>&lt;h1 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Disk scheduling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;In multiprogramming systems several different processes may want to use the system's resources simultaneously. For example, processes will contend to access an auxiliary storage device such as a disk. The disk drive needs some mechanism to resolve this contention, sharing the resource between the processes fairly and efficiently. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;A magnetic disk consists of a collection of platters which rotate on about a central spindle. These platters are metal disks covered with magnetic recording material on both sides. Each disk surface is divided into concentric circles called &lt;em&gt;tracks&lt;/em&gt;. Each track is divided into &lt;em&gt;sectors&lt;/em&gt; where information is stored. The reading and writing device, called the &lt;em&gt;head&lt;/em&gt; moves over the surface of the platters until it finds the track and sector it requires. This is like finding someone's home by first finding the street (track) and then the particular house number (sector). There is one head for each surface on which information is stored each on its own &lt;em&gt;arm&lt;/em&gt;. In most systems the arms are connected together so that the heads move in unison, so that each head is over the same track on each surface. The term &lt;em&gt;cylinder&lt;/em&gt; refers to the collection of all tracks which are under the heads at any time. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;In order to satisfy an I/O request the disk controller must first move the head to the correct track and sector. Moving the head between cylinders takes a relatively long time so in order to maximise the number of I/O requests which can be satisfied the scheduling policy should try to minimise the movement of the head. On the other hand, minimising head movement by always satisfying the request of the closest location may mean that some requests have to wait a long time. Thus, there is a trade-off between &lt;em&gt;throughput&lt;/em&gt; (the average number of requests satisfied in unit time) and &lt;em&gt;response time&lt;/em&gt; (the average time between a request arriving and it being satisfied). Various different disk scheduling policies are used: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;First Come First Served (FCFS)&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The disk controller processes the I/O requests in the order in which they arrive, thus moving backwards and forwards across the surface of the disk to get to the next requested location each time. Since no reordering of request takes place the head may move almost randomly across the surface of the disk. This policy aims to minimise response time with little regard for throughput. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Shortest Seek Time First (SSTF)&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Each time an I/O request has been completed the disk controller selects the waiting request whose sector location is closest to the current position of the head. The movement across the surface of the disk is still apparently random but the time spent in movement is minimised. This policy will have better throughput than FCFS but a request may be delayed for a long period if many closely located requests arrive just after it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;SCAN&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The drive head sweeps across the entire surface of the disk, visiting the outermost cylinders before changing direction and sweeping back to the innermost cylinders. It selects the next waiting requests whose location it will reach on its path backwards and forwards across the disk. Thus, the movement time should be less than FCFS but the policy is clearly fairer than SSTF. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Circular SCAN (C-SCAN)&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;C-SCAN is similar to SCAN but I/O requests are only satisfied when the drive head is travelling in one direction across the surface of the disk. The head sweeps from the innermost cylinder to the outermost cylinder satisfying the waiting requests in order of their locations. When it reaches the outermost cylinder it sweeps back to the innermost cylinder without satisfying any requests and then starts again. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;LOOK&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Similarly to SCAN, the drive sweeps across the surface of the disk, satisfying requests, in alternating directions. However the drive now makes use of the information it has about the locations requested by the waiting requests. For example, a sweep out towards the outer edge of the disk will be reversed when there are no waiting requests for locations beyond the current cylinder. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h4 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;Circular LOOK (C-LOOK)&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Based on C-SCAN, C-LOOK involves the drive head sweeping across the disk satisfying requests in one direction only. As in LOOK the drive makes use of the location of waiting requests in order to determine how far to continue a sweep, and where to commence the next sweep. Thus it may curtail a sweep towards the outer edge when there are locations requested in cylinders beyond the current position, and commence its next sweep at a cylinder which is not the innermost one, if that is the most central one for which a sector is currently requested.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;  &lt;/p&gt;&lt;h1 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Distributed Computing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;In distributed computing, there are several, geographically remote autonomous computers that have to act in concert to complete a task. The network and the computers are unreliable, but the system has to struggle on regardless. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;In distributed computing, everything gets trickier! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The      algorithms are harder to design because the work has to be spread out and      synchronised. The computing `agents' have a degree of autonomy and must      agree to act in concert. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The      algorithms' performance and complexity are harder to analyse because      communication costs come into play. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Problems      such as deadlock afflict centralised computer systems, but in distributed      systems, deadlock is harder to detect and harder to break. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Most      importantly, distributed systems are unreliable. A centralised computer      system is either working OK or completely failed, whereas a distributed      system is hardly ever in either of these two states. At any one time,      parts of the network and some of the computers will be working, whilst      other components will be broken. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;If it's that hard, why bother? Well, put cynically, it keeps us in a job. But there are other good reasons. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Some      applications are &lt;em&gt;inherently&lt;/em&gt; distributed. Consider, for example,      automated transactions between different companies' computer systems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Some      applications are distributed for performance reasons. In a client/server      computing environment, it may be more convenient to have some computing      power on the end-users' desktop machines and some in the server host      machines. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Distributed computing concepts such as distributed agreement protocols and distributed deadlock detection, are in widespread use in industry, but very few people in industry understand the limitations of these techniques. The others get nasty shocks when their systems collapse around their ears!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4384197571081560999?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4384197571081560999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4384197571081560999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4384197571081560999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4384197571081560999'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/disk-schedulingdistributed-computing.html' title='Disk scheduling,Distributed Computing'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-7652748082329245849</id><published>2008-05-05T03:53:00.000-07:00</published><updated>2008-05-05T04:11:08.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Computing without Clocks,How does one design a processor without a clock?,Databases</title><content type='html'>&lt;h1 style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Computer Communications&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Just as communication between humans is important to everyday life, so communication between computers adds great value to the work that computers can do for us. Information and resources can be shared by computer users around the world. This is illustrated by the present-day Internet and its facilities. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Communication is important for people. By communicating with one another, information can be shared: past experience, current affairs, predictions of the future; from here, there and everywhere. Resources and expertise can be shared also, by communicating with the right people. Only hermits are noted for their ability to live satisfactorily in the absence of any communication with other people. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Similar remarks apply to computers too. One might imagine that a home computer, or a computer tucked into a musty office, is an island, cut off from the world community of computers. This is a delusion though, since such computers usually have an obliging communication mechanism: human beings supplying the latest fruits of the computing trade on floppy disc. &gt;From our point of view, it is desirable to let computers communicate directly, and so cut out the middle man. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Communication is not always easy. It is not feasible for every person in the world to communicate effectively with any other person whenever desired. Differences in culture, availability and physical location cause problems. Things are even tougher if one broadens communication to include other species of animal or plant, never mind alien life forms. Similar problems affect communication between computers. Because of this, the solutions used are also similar, and so are usually familiar to us from human experience. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;One aspect of communication is how it is physically achieved. For humans, there is a mixture of movement and media. People may move to make communication easier, or even possible at all. We may climb mountains to consult a guru, we may travel to work or we may attend a concert. Once the communicating parties are in suitable positions, communication might take place using sound through the air, visible sign language, telephones, television or sending items through the postal system. For computers, there is usually no movement, robotics still being in its infancy. Computers communicate using media that physically reach the computers, and that can transmit computer conversations. These include cables (electrical and fibre optic) and electro-magnetic media (infra-red, radio and microwaves). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;There is a more fundamental problem than the means used to achieve communication physically. This is the problem of agreeing on what type of communication is required, and then agreeing on when, where and how it will take place. Of course, this is all motivated by the question of why the communication is required or desirable in the first place. There are three main areas where we might expect to gain some benefit if our computer is allowed to communicate with the outside world: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;getting      information stored by other computers &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;getting      other computers to do specialised work &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;communicating      with humans that use other computer &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;(the first of these may including getting new software that will enable our computer to do new types of work). The fact that there is a range of computer hardware manufacturers, and then a huge range of software products that use the hardware, means that there are many differences between computers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The common feature in all computer communications is the exchange of information between computers. If one computer is to do work for the other, then the information must encode instructions on what is required - a program in other words. If the computers are communicating on behalf of humans who wish to communicate, then the information must encode the human dialogue. In all cases, the type of information exchanged must be agreed upon; in particular, if it is encoding instructions or human communication, then the encoding rules to be used must be agreed upon. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Agreements on the nature of computer communications are called &lt;em&gt;protocols&lt;/em&gt;. The name `protocol' is chosen because it matches the human usage, where protocols may be official formulae or bodies of diplomatic etiquette, that is, formalised rules of behaviour between people. An understanding of what can be achieved using computer communication protocols is essential to an understanding of what is possible and not possible, if computers are allowed to communicate in order to enhance their work on our behalf. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The combination of physical connections between computers and communication protocols allows &lt;em&gt;computer networks&lt;/em&gt; to be created. These contain collections of computers that can communicate with each other for useful purposes. The most famous example at the moment is the &lt;em&gt;Internet&lt;/em&gt; which allows around 10,000,000 computers and their human users to communicate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;h1 style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Computing without Clocks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Computer architecture is concerned with the design of well-integrated computer systems by understanding the influences between the implementation technology, the processor and the compiler. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Inside any computer is a processor. Some of their names may be familiar to you, such as the &lt;b&gt;Pentium&lt;/b&gt;, &lt;b&gt;Alpha&lt;/b&gt; or &lt;b&gt;SPARC&lt;/b&gt;. Often the name is qualified by its speed, e.g. a &lt;b&gt;100 MHz Pentium&lt;/b&gt; processor. This refers to the &lt;i&gt;frequency&lt;/i&gt; of the processor's &lt;i&gt;clock&lt;/i&gt;, i.e. the number of times the clock beats every second - &lt;i&gt;100 million&lt;/i&gt; times in this case. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The clock plays a vital role in the operation of these processors. It provides a time base, and the various activities inside the processor are &lt;i&gt;synchronised&lt;/i&gt; to the beat of the clock - a part not dissimilar to a drummer in a musical group. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The modern processor is one of the most complex man-made objects. It is realised in silicon on a number of layers, each layer being developed much in the same way as a photograph. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The size of these silicon structures can be made incredibly small, of the order of one millionth of a metre. Smaller the structure - faster the clock speed, but upto a point, beyond which the presence of a clock becomes a hindrance. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;One radical suggestion is to do away with the clock altogether. In which case, one can pose a number of interesting questions:- &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;How does one design a processor without a clock?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Would it perform better or worse than an equivalent clocked version?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Is it more difficult to design a clock-less processor which behaves correctly?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;How does the absence of a clock influence the design of the rest of the computer system, such as the architecture and the compiler?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The answers to these questions will influence the design of future computers. A number of research groups around the world, including one at &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Edinburgh&lt;/st1:place&gt;&lt;/st1:City&gt;, are working to realise computing without clocks. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;h1 style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Databases&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Databases provide very useful services in everyday life. We will try to motivate the role that computer science plays in this, especially in terms of what it has contributed and what it can still contribute. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;Databases are one of the first and probably one of the widespread applications of computer science. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Every      financial transaction on your bank account means that somehow and      somewhere a database is accessed and the transaction is logged; even if      it's just that you got some money from an autoteller. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Have      you ever tried to imagine how travel agents worked before they had those      computer terminals on their desktop? These terminals enable them to look      into many travel organisers' databases and to book almost any flight in      the world within seconds by accessing airlines' databases. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Many      cities nowadays organise public and individual traffic by employing      intelligent traffic guiding systems. Such systems have to cope with huge      amounts of data that are stored in a database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Every      phone call you make is, as with the first example, logged somewhere in a      huge database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;These are just four of thousands of databases that we might interact with in everyday life. So, what's the big deal about them? What does computer science contribute to all this? What are the problems that computer science tries to solve? Actually, there are plenty. Many of them are considered to be solved but many are still to be tackled. Let's look at some examples: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Imagine      the scenario of the Olympic Games: there is data about time tables of the      events, accommodation for the participants, results, who participates in      which event in which role etc. And there lots of different people using      such a database: the organisers, the participants, the journalists,      officials, each one possibly being interested in only parts of the data. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="margin-left: 0.5in; color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The area of computer science that looks into such problems is that of &lt;em&gt;database design&lt;/em&gt;. Computer science has developed several methods to support the design process which should lead to a concise but also to an efficient design. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The      software around the database, the &lt;em&gt;database management system&lt;/em&gt;      (DBMS) has to provide lots of &lt;em&gt;reliable&lt;/em&gt; services to the database      users and administrators and it has to provide them &lt;em&gt;efficiently&lt;/em&gt;.      It has to guarantee that no data is lost, especially when there is an      [inevitable] crash, possibly due to reasons that go beyond the      responsibility of the software (power failure, earthquakes, and the like).      A study of a number of Swiss banks recently found out that they would go      bankrupt if their databases were down for more than forty-eight hours. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="margin-left: 0.5in; color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;The system has also to provide a high level of &lt;em&gt;security&lt;/em&gt;. Databases can hold very sensitive information such as a company's sales numbers, product designs, marketing strategies, money transactions, employees' salaries and minutes of confidential meetings. Not everyone, even inside the same company, should be allowed to see or, worse, update all the data. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="margin-left: 0.5in; color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt;A DBMS should also provide a suitable &lt;em&gt;user interface&lt;/em&gt;. Imagine the variety of people using a database. There are highly trained computer experts as well as people who have hardly touched a computer terminal in their life. All of these groups have to be considered when designing the interface. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: times new roman;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify; font-family: times new roman;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Database systems studies touch many areas of computer science, some being very theoretical such as logic (eg. in &lt;em&gt;deductive databases&lt;/em&gt;) or linguistics (eg. in natural language user interfaces) or very practical such as communications or parallel techniques for powerful high-end database systems. It is one of the most commercial areas of computer science.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-7652748082329245849?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/7652748082329245849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=7652748082329245849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7652748082329245849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7652748082329245849'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/computing-without-clockshow-does-one.html' title='Computing without Clocks,How does one design a processor without a clock?,Databases'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-7798364529068373858</id><published>2008-05-05T03:52:00.000-07:00</published><updated>2008-05-05T03:53:17.392-07:00</updated><title type='text'>Array Architectures,Multi-processors and Multi-computers</title><content type='html'>&lt;h3 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Array Architectures &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;As examples of SIMD array processors, the ICL Distributed Array Processor (DAP) and the TMC Connection Machine have particular significance by virtue of their position in the chronology and taxonomy of these types of machine. The DAP, for example, was the first commercial exploitation of this style of architecture, a style which can be traced back many years. In particular, the design of the DAP owes much to the pioneering work carried out on the SOLOMON computer, and later on the ILLIAC IV computer. The Connection Machine represents a more recent evolutionary step embodying the use of several processing elements on a single chip, and the consequent production of a massively parallel system. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h3 style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Multi-processors and Multi-computers &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; color: rgb(0, 0, 0); text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Most computer scientists, and users of MIMD machines, draw a distinction between &lt;em&gt;multiprocessor&lt;/em&gt; and &lt;em&gt;multicomputer &lt;/em&gt;systems. If one considers a processor as simply a component of a computer system, then the distinction becomes clearer. A multiprocessor is then a system in which there is a simple replication of processors within a framework which does not alter the relationship between the processor(s) and other components (such as memory). Conversely, a multicomputer is a system in which the whole computer (processor and memory together) are replicated, and some form of communication network added, to allow them to exchange information. The use of MIMD machines is still in its infancy, and the long-term performance potential of multiprocessor and multicomputer systems is still unclear. One might reasonably ask whether MIMD architectures are really needed, since with hindsight it can be seen that the speed of conventional SISD and SIMD machines increases by an approximately ten-fold factor every five or so years. This has encouraged some users of computers to conjecture that one should simply `wait a few years' for improved technology to provide the required performance. Furthermore, they might argue, by the time a new and novel architecture has been developed it may well be superseded by a faster sequential machine. The problem with this argument is that the development of implementation technologies, sequential processor architectures and MIMD architectures complement each other. Thus, faster sequential processors mean faster processing elements within MIMD machines, and higher performance overall. Ideally, MIMD machines with &lt;em&gt;N&lt;/em&gt; processors should simply be &lt;em&gt;N&lt;/em&gt; times faster than SISD machines constructed from equivalent technology, although in practice this is rarely the case.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-7798364529068373858?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/7798364529068373858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=7798364529068373858' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7798364529068373858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7798364529068373858'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/array-architecturesmulti-processors-and.html' title='Array Architectures,Multi-processors and Multi-computers'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-6686152397370271485</id><published>2008-05-05T03:51:00.000-07:00</published><updated>2008-05-05T04:11:08.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Parallel Functional Units, Vector Processing</title><content type='html'>&lt;h3&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;One of the earliest examples of a computer which used parallel functional units was the CDC 6600, which first appeared in the early 1960s. It was superseded in the late 1960s by the CDC 7600 and later by the Cray-1, which can be seen as a logical extension of the 6600/7600 systems from scalar to vector operation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt;"&gt;The 6600 remains an important system for students of computer architecture, however, since it has been particularly well documented. An understanding of its organisation and operation provides a proper background not only for an appreciation of the design of the Cray-1, but almost all modern RISC processors. The common feature in all these systems is the &lt;em&gt;scoreboard&lt;/em&gt; mechanism used to control the issuing of instructions to functional units, and the return of results to the common registers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Vector Processing &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;The need to provide facilities for processing sequences of vector elements was recognised in the very early days of digital computer design. The von Neumann concept, for example, included the notion of allowing instructions to be treated as data, which meant that the address part of an instruction accessing a vector element could be incremented during the execution of a program loop and thus produce the effect of processing a vector. In practice, however, this technique allows so much scope for program error that even the very first stored program computer (the Manchester Mark 1) used B-lines instead, and this latter technique has been used almost universally ever since. Thus virtually any digital computer can be used to process vectors. The differences between machines lie in the addressing facilities which they provide to support accesses to data structures, and whether or not they include instructions which implicitly process a sequence of vector elements. Computers with this latter facility have been described as Single Instruction Multiple Data (SIMD) arrangements, in contrast with the Single Instruction Single Data (SISD) arrangement of conventional computers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-6686152397370271485?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/6686152397370271485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=6686152397370271485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6686152397370271485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/6686152397370271485'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/parallel-functional-units-vector.html' title='Parallel Functional Units, Vector Processing'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-2970375563898638188</id><published>2008-05-05T03:50:00.002-07:00</published><updated>2008-05-05T04:11:08.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Pipelining</title><content type='html'>&lt;h3 style="color: rgb(0, 0, 0); font-family: times new roman;"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;In any computer the execution of a single instruction requires various activities to be performed, such as instruction accessing, instruction interpretation, operand accessing and arithmetic. If separate hardware units carry out these activities their operations can be overlapped to give an increased rate of completion of instructions. This technique, first introduced in the early 1960s in computers such as Atlas and Stretch, has become known as &lt;em&gt;pipeline concurrency&lt;/em&gt;. In a pipelined computer several partially completed instructions are in progress concurrently, and although the time to complete any one instruction is still limited by the sum of the times for the various activities, the rate at which instructions progress through the pipeline is only limited by the time for an individual activity. In Atlas and Stretch the number of concurrent operations was of the order of four. In modern systems pipeline concurrency can extend to several tens of instructions and may be used in both arithmetic and instruction processing units. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-2970375563898638188?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/2970375563898638188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=2970375563898638188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2970375563898638188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/2970375563898638188'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/pipelining.html' title='Pipelining'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4472579366895193763</id><published>2008-05-05T03:50:00.001-07:00</published><updated>2008-05-05T04:11:08.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Storage Hierarchies</title><content type='html'>&lt;h3 style="font-family: times new roman; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="font-family: times new roman; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Storage hierarchies have existed for as long as stored program computers themselves. The Ferranti Mark 1 installed at &lt;st1:place st="on"&gt;&lt;st1:placename st="on"&gt;Manchester&lt;/st1:PlaceName&gt;  &lt;st1:placetype st="on"&gt;University&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; in February 1951 had a main store made up of eight Williams Tubes each containing 32 40-bit words and a drum backing store having a capacity of 3.75 Kwords. Initially users were required to organise their own store transfers between a selected drum track and a selected pair of Williams Tubes, but the Mark 1 Autocode system introduced in 1954 carried out these tasks automatically on behalf of users and so made the two levels of storage appear to them as a one-level store. This arrangement was possible because the Mark 1 was a single user machine, and its performance was acceptable because the time required to transfer one drum track was roughly the same as the time for a programmed floating-point addition. Later developments in both architecture and technology led to the need for more sophisticated systems and a variety of techniques has been developed. These include cache stores and virtual memory. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4472579366895193763?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4472579366895193763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4472579366895193763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4472579366895193763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4472579366895193763'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/storage-hierarchies.html' title='Storage Hierarchies'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-5623909876425762906</id><published>2008-05-05T03:48:00.001-07:00</published><updated>2008-05-05T04:11:08.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Computer Architecture</title><content type='html'>&lt;span style="font-size: 14pt; font-family: times new roman; color: rgb(0, 0, 0);"&gt;Computer architects concern themselves with techniques which will improve the performance and/or reduce the cost of computer systems. Over the years changes in technology have played a major role in providing these improvements, but a whole variety of different architectural techniques has been developed to take advantage of these changes. Most of these techniques involve some form of concurrency, either temporal or spatial. The prime example of the former is pipelining, while the latter includes the use of multiple execution units and, increasingly, multiple processors. Systems and applications programmers need to understand something about these various techniques in order to be able to select appropriate hardware platforms and to obtain maximum performance from them. A brief introduction to some of these techniques, and their history, is given below.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-5623909876425762906?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/5623909876425762906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=5623909876425762906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5623909876425762906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5623909876425762906'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/computer-architecture.html' title='Computer Architecture'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-4132890716492132857</id><published>2008-05-05T03:47:00.000-07:00</published><updated>2008-05-05T04:11:08.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Computation and Proof</title><content type='html'>&lt;h1 style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt; &lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;Computer programs and mathematical proofs are similar in certain ways. Using this similarity, we can develop tools which help both programmers write better programs and mathematicians write better proofs. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;There is an analogy between the process of writing programs and the process of proving mathematical theorems. Generally speaking, to write a program, the programmer decides what the program must do, chooses an algorithm, and breaks the algorithm down into small computational steps until the program compiles. To prove a theorem, a mathematician formulates a statement of the theorem, chooses a proof technique, and breaks the argument down into small logical steps until the proof is accepted by other people. In both cases, it is important that the program or proof do what it was intended to do -- either perform some computation or justify some mathematical result. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Notice that one difference is that mathematical proofs are usually written for people, where computer programs are written to be read by a computer. However, if proofs are broken down into very small steps and written in a formal language, it is possible for a computer to recognize a correct proof. Some computer programs can help people develop correct proofs as well as just checking if a particular finished proof is correct. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;As well as being tools for mathematicians and other people who need to use careful reasoning, these proof checking/proof building systems can be used to help write computer programs. This is because certain kinds of mathematical proofs actually show how to compute a result -- for example, a proof that every number has a factorization into primes might work by showing how to do the factorization. In that case, the proof would essentially describe a program which calculated prime factors. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;This means that a computer system which checks that proofs are correct might also be able to check that programs are correct, and a tool for developing correct proofs could also be used to develop correct programs. (It may seem circular to use a program to write a program, but things like text editors and compilers are programs which enable people to write programs.) Some combined proof and programming tools like this already exist, and computer scientists are working on making these tools easier to use, both for proving mathematical theorems and writing programs. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-4132890716492132857?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/4132890716492132857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=4132890716492132857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4132890716492132857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/4132890716492132857'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/computation-and-proof.html' title='Computation and Proof'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-8654278724271074780</id><published>2008-05-05T03:46:00.000-07:00</published><updated>2008-05-05T04:11:08.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Comparing the behaviour of systems</title><content type='html'>&lt;p style="font-family: times new roman; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Often we want to know whether two systems described in this notation behave the same way. For example, perhaps we have a description of a specification which the system should satisfy, and also a description of the design of a system. We'd like to show that the actual design behaves the same way as the specification. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;When can we say that two systems behave the same way? There are lots of choices, depending on what we mean by behaviour. We can start by observing that two systems certainly do not behave the same if one of them can perform some sequence of actions which the other is unable to perform. For example, if one of our systems is described as a.b.0, we can write &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;a.b.0 -- a --&gt; b.0 -- b --&gt; 0 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;meaning that a.b.0 can do action a and become b.0, and then b.0 can do action b and become 0. We say that the process a.b.0 has the trace (a,b). It's obvious that a.c.0 doesn't have this trace, so a.b.0 and a.c.0 do not have the same behaviour in this sense. We say that they are not may (or trace) equivalent. We define may equivalence by saying that two systems P and Q are &lt;b&gt;may equivalent&lt;/b&gt; if they have exactly the same set of traces. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;That's a good start, but sometimes it's not enough. Consider the following example: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;A = a.A &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;B = a.B + a.0 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;What are the traces of A? Well, we found above that A can keep on doing action a for ever, so its traces are () (the empty trace) (a), (a,a), (a,a,a) and so on, for any number of "a"s you like. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;What about B? B behaves either as a.B or as a.0. So the set of traces of B is the union of the set of traces of a.B and the set of traces of a.0. The set of traces of a.0 is just the empty trace () and (a). If we take the other branch, you see that B can also do all the other traces consisting of any number of "a"s. It's obvious that it can't do anything else, because there's no action mentioned in its definition apart from a. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Therefore both A and B have the same set of traces, namely, they can do the traces consisting of doing any number of "a"s in succession including 0. &lt;i&gt;A and B are may equivalent&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;However, would we be happy if A were the specification of a system to be built and B were a proposed design? Probably not: because in the specification, the system has no choice but to go on doing "a"s for ever. In particular, the specified system cannot deadlock: it cannot reach a state where it is impossible for it to do anything. However, B can deadlock, just by choosing the right hand option and behaving as a.0, which will do just one a and then won't be able to do anything ever again. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;This is an argument for deciding that &lt;i&gt;A and B do not behave the same&lt;/i&gt;, even though they are may equivalent. Therefore we need a finer -- more detailed -- definition of what it means for two systems to behave the same. How else could we define behaviour? You might like to think of some options, and investigate the advantages and disadvantages of your choices. There is no one right answer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-8654278724271074780?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/8654278724271074780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=8654278724271074780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/8654278724271074780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/8654278724271074780'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/comparing-behaviour-of-systems.html' title='Comparing the behaviour of systems'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3886394827670271706</id><published>2008-05-05T03:45:00.000-07:00</published><updated>2008-05-05T04:11:08.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Concurrency</title><content type='html'>&lt;p style="text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;Concurrency theory is the theory of systems which may communicate with one another. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;If you've ever written and debugged a computer program, you're used to the process of studying a written representation of a system and working out what the behaviour of the system will be. If your system consists of several parts which sometimes work independently but sometimes have to communicate with one another, it's much harder. You need to allow for all the different orders in which things might happen. Problems which may arise include your system deadlocking, every time or (harder to fix!) very occasionally. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;h3 style="text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;A description language&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;In order to study such systems, we need a concise way of describing the concurrency aspects of a system. One way is the &lt;b&gt;Calculus of Communicating Systems&lt;/b&gt;, CCS. In this notation, for example, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;ul style="text-align: justify; color: rgb(0, 0, 0);" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;0      represents the system which can never do anything at all &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;a.P      represents the system which can do an action a and then reach the new      state P. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="margin-left: 0.5in; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;For example, a.0 describes a system which can do action a and then become the system 0. The system 0 can then never do anything at all. So the behaviour of a.0 is that it can just do one action a, and then stop. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;ul style="text-align: justify; color: rgb(0, 0, 0);" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;P      + Q represents the system which can behave either as though it were the      system P or as though it were the system Q. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="margin-left: 0.5in; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;Usually we use this &lt;i&gt;non-determinism&lt;/i&gt; when there's something about the system that we are choosing not to model. For example, perhaps the system behaves as P if the user presses button 1, and as Q if the user presses button 2, but we don't want to model the user and the buttons just now. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;One feature of this notation which may seem surprising is that there's nothing to stop a system definition referring to itself. For example, consider the system A defined by &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;A = a.A &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;a href="%5C"&gt;&lt;span style="font-size: 14pt;"&gt;Well, it's of the form a.P (where in this case P = A), so it can certainly do an action a, and become A. Then what can A do? Well, A = a.A, so it can do an action a and become A... We can carry on with this argument as long as we like, so this process A can carry on doing a actions for ever. Since we often want to model systems which keep going for ever (traffic lights, air traffic control systems, telephone systems, infinitely good jugglers...) this ability to describe &lt;i&gt;infinite&lt;/i&gt; behaviour is very useful. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3886394827670271706?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3886394827670271706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3886394827670271706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3886394827670271706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3886394827670271706'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/concurrency.html' title='Concurrency'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-3321868896980361371</id><published>2008-05-05T03:43:00.000-07:00</published><updated>2008-05-05T04:11:46.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science Engineering'/><title type='text'></title><content type='html'>&lt;h1 style="margin: 0in 0in 0.0001pt; font-family: times new roman; font-weight: bold; text-align: left;"&gt;&lt;span style="font-size: 18pt;"&gt;Skinny Client Control Protocol (SCCP)&lt;/span&gt;&lt;span style="font-size: 18pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="font-family: times new roman; font-weight: bold; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;script type="text/javascript"&gt; &lt;!-- google_ad_client = "pub-9654010595544070"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text"; //2007-07-10: CST google_ad_channel = "2875839532"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "000000"; google_color_url = "008000"; //--&gt; &lt;/script&gt;&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt; &lt;/script&gt;&lt;span class="newstyle1"&gt;&lt;span style="color: windowtext;"&gt;In the present scenario when Telephony systems are moving to a common wiring plant the end station of a LAN or IP- based PBX must be simple to use, familiar and relatively cheap. While the H.323 recommendations are pretty expensive, an H.323 proxy can be used to communicate with the Skinny Client using the SCCP.[para] Here the telephone is a skinny client over IP, in the context of H.323. A proxy is used for the H.225 and H.245 signaling. Skinny messages are carried above TCP and use the port 2000 at the same time the skinny client (i.e. an Ethernet Phone) uses TCP/IP to transmit and receive calls and RTP/UDP/IP to/from a Skinny Client or H.323 terminal for audio. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;  &lt;/div&gt;&lt;h1 style="margin: 0in 0in 0.0001pt; font-family: times new roman; font-weight: bold; text-align: center;"&gt;&lt;span style="font-size: 14pt; font-weight: normal;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;h1 style="margin: 0in 0in 0.0001pt; font-family: times new roman; font-weight: bold; text-align: center;"&gt;&lt;span style="font-size: 14pt; font-weight: normal;"&gt;Applications of Majority Gates with Quantum-Dot Cellular Automata(QCA) &lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt; font-weight: bold;"&gt;&lt;script type="text/javascript"&gt; &lt;!-- google_ad_client = "pub-9654010595544070"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text"; //2007-07-10: CST google_ad_channel = "2875839532"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "000000"; google_color_url = "008000"; //--&gt; &lt;/script&gt;&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt; &lt;/script&gt;&lt;span style="font-family: times new roman;" class="newstyle1"&gt;&lt;span style="color: windowtext;"&gt;Not much research was done on the circuits based on majority gates, as the incompatibilities in hardware don’t permit the CMOS technologies to do so. But this emerging computational nanotechnology called the quantum-dot cellular automata (QCA) has been a great help in learning more about the majority Gates, as it happens to be its primary logic primitive. Characterizing the three variable Boolean function to a simplified majority illustration using the Karnaugh maps (K-maps), is one of the easiest application of majority gates. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="newstyle1"&gt;&lt;span style="color: windowtext;"&gt;&lt;span style="font-family: times new roman;"&gt;The QCA cell has four quantum dots arranged in a square pattern. The fundamental logic primitive includes the 3-input majority gate. Majority logic helps in the implementation of digital operations based on the principles of majority decision. The logic element, a majority gate has an odd number of binary inputs and a binary output. The output is a logical 1 when the majority of input is logic 1 and logical 0 when majority of inputs is logic 0. The majority gates along with the binary inverters helps in the implementation of digital functions as per the logic design applications.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-3321868896980361371?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/3321868896980361371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=3321868896980361371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3321868896980361371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/3321868896980361371'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/skinny-client-control-protocol-sccp-in.html' title=''/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-7536693064156030025</id><published>2008-05-05T03:35:00.000-07:00</published><updated>2008-05-05T04:11:46.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science Engineering'/><title type='text'>Seminar Topics On computer Science</title><content type='html'>&lt;h1 style="text-align: center;"&gt;&lt;span style="font-size: 14pt;"&gt;Topics in Computer Science&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Computer Science is a diverse and interesting subject.&lt;br /&gt;It has connections with mathematics, engineering,&lt;br /&gt;physics, commerce, telecommunications, linguistics,&lt;br /&gt;psychology and many other disciplines. Selected topics&lt;br /&gt;in Computer Science are discussed below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size: 14pt;"&gt;Contributions to this list are very welcome. Advice for contributors. Consult the honour roll to see who has contributed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Concurrency      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Computation      and proof &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Computer      architecture &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Computer      communications &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Computing      without clocks &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Databases      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Disk scheduling      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Distributed      computing &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Error correcting      codes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;File system      indexing &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Graph algorithms      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;The Lego project      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Line drawing &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Multimedia mail      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Object-oriented      techniques &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Parallelism      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Parallel      algorithm design &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Recursion      &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Soundex      matching &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 14pt;"&gt;Systems      administration &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Virtual reality&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-7536693064156030025?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/7536693064156030025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=7536693064156030025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7536693064156030025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/7536693064156030025'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/05/seminar-topics-on-computer-science.html' title='Seminar Topics On computer Science'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-5434928132965404250</id><published>2008-04-19T02:40:00.000-07:00</published><updated>2008-04-30T05:57:21.716-07:00</updated><title type='text'>Molakalmuru</title><content type='html'>&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;Molakalmuru is a &lt;span class="mw-redirect"&gt;panchayat town&lt;/span&gt; in Chitradurga  district in the Indian state of Karnataka. It is near the border of Karnataka state with Andhra Pradesh. It  borders the Rayadurg Taluk of &lt;span class="mw-redirect"&gt;Ananthpur&lt;/span&gt; district  of Andhra Pradesh.  Molakalmuru has majur villages like Rampura, Hangal. It is famous for the unique Molkalmuru &lt;span class="mw-redirect"&gt;sarees&lt;/span&gt; which are  manufactured here.&lt;/p&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;a id="Demographics" name="Demographics"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;span class="mw-headline"&gt;Demographics&lt;/span&gt;&lt;/h2&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;span class="mw-redirect"&gt;As of  2001&lt;/span&gt; India census&lt;sup class="reference" id="cite_ref-0"&gt;[1]&lt;/sup&gt;,  Molakalmuru had a population of 14,131. Males constitute 52% of the population  and females 48%. Molakalmuru has an average literacy rate of 66%, higher than  the national average of 59.5%: male literacy is 75%, and female literacy is 57%.  In Molakalmuru, 13% of the population is under 6 years of age. Nunkemale  Siddeshwara Temple is one of the famous temple. And also one of the famous  temple is Sre Ram Temple in Thilak Extention. In every year Sre Rama Navame  festival is doing very well.&lt;/p&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;Once in three years, Nunkemale Siddeshwara Mela (Jaatre) held in the  Molakalmuru town. This it has been held from 17th Feb 2008 to 20 Feb 2008. Lord  Nunkemale Siddeshwara's procession with all the cultural and the famous bands  with folk touch are done during this period. Also dramas (plays) are  organized.&lt;/p&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;p style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;a id="Places_to_Visit" name="Places_to_Visit"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt;&lt;span class="mw-headline"&gt;Places to Visit&lt;/span&gt;&lt;/h2&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: trebuchet ms; font-weight: bold;"&gt;&lt;li&gt;Ashoka Siddapura is an important archeological site where emperor &lt;span class="mw-redirect"&gt;Ashoka&lt;/span&gt;'s edits were  found. Nearby is Ramagiri, a hillock that has mythical associations with the  epic Ramayana. A temple dedicated to  &lt;span class="new"&gt;Rameshwara&lt;/span&gt;  built in 926 CE. exists here. &lt;/li&gt;&lt;/ul&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: trebuchet ms; font-weight: bold;"&gt;&lt;li&gt;Brahmagiri village is the ancient site of &lt;i&gt;Ishila&lt;/i&gt;, one of  emperor &lt;span class="mw-redirect"&gt;Ashoka&lt;/span&gt;'s  provincial capitals. His earliest rock edicts in Brahmi script and Prakrit language (3rd c. BC) containing &lt;span class="mw-redirect"&gt;Kannada&lt;/span&gt; words were  discovered. &lt;/li&gt;&lt;/ul&gt;&lt;div style="color: rgb(0, 0, 0); font-family: trebuchet ms; font-weight: bold; text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); text-align: justify; font-family: trebuchet ms; font-weight: bold;"&gt;&lt;li&gt;Rampura village is the ancient site of &lt;i&gt;Rama Pura&lt;/i&gt;, In Ramayana, Ram had offered prayers to Shiva in a Hill called &lt;i&gt;Rameshwar Hill&lt;/i&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747850777942446682-5434928132965404250?l=infosearch4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infosearch4u.blogspot.com/feeds/5434928132965404250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747850777942446682&amp;postID=5434928132965404250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5434928132965404250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747850777942446682/posts/default/5434928132965404250'/><link rel='alternate' type='text/html' href='http://infosearch4u.blogspot.com/2008/04/molakalmuru.html' title='Molakalmuru'/><author><name>Manjunath Hiremath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_uFg1TSMB8G4/R5BvVtleesI/AAAAAAAAADM/FNqoHT8TZkQ/S220/Manju+filter.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747850777942446682.post-6913069186675118314</id><published>2008-03-29T02:06:00.001-07:00</published><updated>2008-04-30T05:59:18.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Socket Programming Guide'/><title type='text'>Socket Programming</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;SOCKET PROGRAMMING&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Sockets are interfaces that can "plug into" each other over a network. Once so "plugged in", the programs so connected communicate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;This article discusses only simple aspects of stream inet sockets (don't worry about exactly what that is right now). For the purposes of this article, a "server" program is exposed via a socket connected to a certain /etc/services port number. A "client" program can then connect its own socket to the server's socket, at which time the client program's writes to the socket are read as stdin to the server program, and stdout from the server program are read from the client's socket reads. This is one subset of socket programming, but it's perhaps the easiest to master, so this is where you should start.&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div style="font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;table class="MsoNormalTable" style="text-align: left; margin-left: 0px; margin-right: 0px;" border="1" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;    &lt;v:stroke joinstyle="miter"&gt;    &lt;v:formulas&gt;     &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;     &lt;v:f eqn="sum @0 1 0"&gt;     &lt;v:f eqn="sum 0 0 @1"&gt;     &lt;v:f eqn="prod @2 1 2"&gt;     &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;     &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;     &lt;v:f eqn="sum @0 0 1"&gt;     &lt;v:f eqn="prod @6 1 2"&gt;     &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;     &lt;v:f eqn="sum @8 21600 0"&gt;     &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;     &lt;v:f eqn="sum @10 21600 0"&gt;    &lt;/v:formulas&gt;    &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;    &lt;o:lock ext="edit" aspectratio="t"&gt;   &lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_1" spid="_x0000_i1030" type="#_x0000_t75" alt="Diagram of a simple xinetd socket usage" style="'width:384pt;height:158.25pt;"&gt;    &lt;v:imagedata src="file:///C:\DOCUME~1\PLANET~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif" title="Diagram of a simple xinetd socket usage"&gt;   &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/PLANET%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif" alt="Diagram of a simple xinetd socket usage" shapes="Picture_x0020_1" height="211" width="512" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Diagram of client-server socket connection via   xinetd.&lt;br /&gt; Note that the client communicates by reading and writing the socket,&lt;br /&gt; but the server program communicates via stdin and stdout.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;This tutorial requires a Linux box. It hasn't been tested on other types of UNIX, but I think it might work. This tutorial is centered around a system using &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;xinetd&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, but it would be simple enough to adapt it to older &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;inetd&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; systems. This tutorial will not work under Windows. I think it's important that this complex type of programming be learned on the most reliable, straightforward system possible, so Windows is out. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;For the purposes of this tutorial, the server application will be at port 3333. Note that you can implement both the client and the server on a single computer, in which case the client is connected to a port on the computer containing both the client and the server. So if you have only one Linux box you can still do this tutorial. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="Acknowledgments"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=""&gt;Acknowledgments&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;This material was told to me by LEAP-CF members Mark Alexander and Nickolai Zeldovich. Other LEAPsters provided additional information. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;A big shout out to all my buddies at Linux Enthusiasts and Professionals of Central Florida (LEAP-CF). With mailing list and meetings, they (we) form a 70 brain parallel supercomputer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;And of course, thanks to the help and support of Troubleshooters.Com's visitors. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="HelloWorld"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=""&gt;Hello World&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Our first socket implementation uses a simple write-only shellscript as a server application, and telnet as the client. This is the simplest possible implementation. I've tested this on a mandrake box, and I'd imagine it would work on any Linux box using xinetd. If your box still uses the older inetd system, the only difference is that you modify inetd.conf instead of a file in /etc/xinetd.d, and you restart inetd instead of xinetd. The following steps are involved: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;ol style="font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);" start="1" type="1"&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Create      the server application (a simple shellscript)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Test      the server application at the command line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Decide      on a port number and service name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Declare      the port and name in /etc/services&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Create      a file for this service in /etc/xinetd.d&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Restart      xinetd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Telnet      into the service, and see the server app's output&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Review      what you learned&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Create the server application (a simple shellscript)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;We want the simplest possible script for this Hello World, so here it is:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(204, 255, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;#!/bin/bash&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;/bin/echo -n   "Hello World:" | /usr/bin/tee /tmp/log.log&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;/bin/date |   /usr/bin/tee -a /tmp/log.log&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Save the preceding script as hello.sh, in your home directory (we'll assume your user id is &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;myuid&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Note several things. The top line, showing the program to read the script, is ABSOLUTELY ESSENTIAL. Although most environments run shellscripts without that top line, those same scripts will not output when called through sockets as certain users (user &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;nobody&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, for instance). For a similar reason, make sure every executable is declared with a complete path, and is not a link. With a user like user &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;nobody&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, you don't know what the path will look like. Similarly, the log file is completely specified so you know where to find it. If you don't specifiy it, it goes in the home directory of the user hooked to the service by xinetd. Better to specify it so you know exactly where to find it. &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/tmp&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; is an excellent place, because on most systems it has universal read and write permissions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;This script writes a single line containing "Hello World:" followed by a timestamp, both to stdout and to a log file called &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/tmp/log.log&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. The log file will become essential in socket debugging, because when the program runs under a socket the program has no terminal. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;For security reasons, I recommend you implement the client and server on the same computer, and that you temporarily disconnect that computer from your network. The last thing you want is an under-development service exposed to your LAN, and maybe the entire Internet.&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Be sure to set the script as executable by all. Remember, you don't know what user will be executing it. Also, be sure the entire directory tree housing the script is executable by all, or else other users won't be able to traverse the tree to execute the file.&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test the server application at the command line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Run the program, and it should output the hello world phrase followed by a timestamp. When you look at /tmp/log.log it should contain the same information. See the session below:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ ./hello.sh&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Hello World:Tue Jan   23 12:27:08 EST 2001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ cat /tmp/log.log&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Hello World:Tue Jan   23 12:27:08 EST 2001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$       &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If you don't get the results shown above, troubleshoot until you do. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Decide on a port number and service name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;First, the port number needs to be unused. The port number you choose should not exist in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. Furthermore, for security reasons the port number should not be below 1024. For this exercise I use port 3333. You may wish to use a different port so someone knowing you've taken this tutorial doesn't know of an open port on your system. But in this tutorial I'll use 3333. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The first thing to do is make sure the port number is not contained in the /etc/services file. Do that as follows:&lt;br /&gt;&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ cat /etc/services | grep 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If there's no output, there's no such port number. If there's output, investigate thoroughly, and you'll probably want to select a different number. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;You also need to check for the existence of an xinetd declared service with a declared port number matching the new one. Do that with a directory wide grep: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ grep -r 3333 /etc/xinetd.d/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once again, no output means no such port is declared. If there is output, investigate, and change your new port number if necessary. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;As far as the service name, we're going to call the service "hello". Here's how we check for the existence of a current service called "hello":&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ /sbin/chkconfig -- list | grep -i hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once again, if there's no output, there's no such service yet, so you're free to use that service name. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once you've decided on a port number and a service name (3333 and hello in this tutorial), continue on... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Declare the port and name in /etc/services&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Add the following line to the &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/services file&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(204, 255, 255) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;hello               3333/tcp                          # hello tutorial, delete when finished&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The first field is the service name. The second field is the port number and the type of protocol (tcp in this case). Anything to the left of a hash mark (#) is a comment. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Beware: The xinetd man page says an xinetd invoked service needn't be declared in &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;. That does not match my experience. I was unable to make this work without declaring it in /etc/services, even using the &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;xinetd port=&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt; parameter. Make your life easy. Declare it in &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt; for the purposes of this tutorial. Then, if you wish, go ahead and find a way to remove it from /etc/services while retaining the service.&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Create a file for this service in /etc/xinetd.d&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;As user root, create the following file in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(204, 255, 255) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;# default: on&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;# description: Hello   World socket server&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;service hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     port            = 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     socket_type     = stream&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     wait            = no&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     user            =   nobody&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     server          =   /home/slitt/hello.sh&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     log_on_success  += USERID&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     log_on_failure  += USERID&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;     disable         = no&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;As root, save the preceding file as /etc/xinetd.d/hello. It should read/write for owner, read for group and other: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[root@mydesk   xinetd.d]# ls -ldF hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;-rw-r--r--      1 root       root          303 Jan 23 13:14   hello&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[root@mydesk   xinetd.d]#&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once you've saved the file properly, you're ready to "turn on" the server by restarting xinetd... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Restart xinetd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;According to the xinetd man page there are many ways to "reconfigure" xinetd. In the xinetd man page search for SIGUSR2 and you'll find some of the less intrusive methods. But in my experience, there's no substitute for a known state. I prefer a complete restart. Here's how it's done on a Mandrake box: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[root@mydesk   xinetd.d]# /etc/rc.d/init.d/xinetd restart&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Stopping xinetd:   [  OK  ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Starting xinetd:   [  OK  ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[root@mydesk   xinetd.d]#&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Different Linux distros use different commands and output different text. So your mileage may vary. Once you've restarted xinetd, your new service is theoretically working. Time to test using telnet as a client... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Telnet into the service, and see the server app's output&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Run the following command:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The IP address is the address of the server containing the hello world server. The 3333 is the port number. Here's one example of what might happen: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Trying   192.168.100.2...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;telnet: Unable to   connect to remote host: Connection refused&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;In the preceding, note the "Connection refused" message. This means there's a basic problem with the service, and the user listed in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d/hello&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; cannot run &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;hello.sh&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. Note that the log file will not have been rewritten, so if one exists it has an old timestamp (this is why we put the timestamp in the server script). Here are some things to check: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;ul style="font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);" type="disc"&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Make      sure the service and name are listed in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;In      &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d/hello&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, make sure:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul type="circle"&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;port=&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;       line's value matches the port number in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The service name (just before the squiggly braces) is       correct.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If there's a &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;disable=&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;,       its value must be &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;no&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If there's a &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;default:&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;       line, its value must be &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;on&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;user=&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;       line names a valid user.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;server=&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;       line must point to the script to be run (&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;hello.sh&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;).       It must be fully pathed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;After correcting any problems, restart xinetd: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/rc.d/init.d/xinetd restart&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If none of the above helps, try &lt;span style=""&gt;TEMPORARILY&lt;/span&gt; changing the &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;user=&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; line to &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;root&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. That should fix any permission problems. But make sure that before you change it to root, you disconnect from the Internet. Otherwise the script kiddies will be on you like squirrels on a tree. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If none of the above helps, use the Universal Troubleshooting Process to diagnose the problem. Try to find ways to narrow the problems, and ways to divide and conquer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once you actually get the connection to work, you may be confronted with a no-output run, as shown below:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Trying   192.168.100.2...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connected to   192.168.100.2.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Escape character is   '^]'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connection closed by   foreign host.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;In the preceding, the connection was made, but no output was recieved. There's probably something wrong with the script itself. Most likely the top line declaring the script's interpreter (&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/bin/bash&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; in this example) is missing or wrong. It could also be a pathing problem with the "run service as" user, which is why it's so important to fully path all files in the script. Note that the log file will not have been rewritten, so if one exists it has an old timestamp (this is why we put the timestamp in the server script). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Verify that the script's name is the same as named in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d/hello&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, that it's executable for all, that its directory is executable all the way up the path, and that it contains the &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;#!/bin/bash&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; line at the top, and that there really is a &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/bin/bash&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, and that it's a command interpreter. Verify that all files in the script are fully pathed. Beyond that, troubleshoot. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Once you get it running, you might get output like the following:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Trying   192.168.100.2...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connected to   192.168.100.2.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Escape character is   '^]'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;/usr/bin/tee: /tmp/log.log:   Permission denied&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Hello   World:/usr/bin/tee: /tmp/log.log: Permission denied&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Tue Jan 23 13:26:44   EST 2001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connection closed by   foreign host.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;You can tell you're close. You're connecting, and you're getting output obviously originating from your script. But you have a problem creating /tmp/log.log. That's not surprising, because in a previous step you created it as user &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;myuid&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, and user &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;nobody&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; hasn't the permissions to delete the old one. As root or another user permissioned to delete &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/tmp/log.log&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, delete the old one manually and you should clear the problem. Once all problems have been cleared, the telnet session should look as follows:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(255, 255, 204) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$ telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Trying   192.168.100.2...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connected to   192.168.100.2.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Escape character is   '^]'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Hello World:Tue Jan   23 13:33:55 EST 2001&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Connection closed by   foreign host.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;[myuid@mydesk   myuid]$&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;If you obtain the preceding output, congratulations -- you've just implemented a Hello World sockets setup.  So let's review... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Review What You've Learned&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Sockets are a software methodology to connect different processes (programs) on the same computer or on different computers. The name "socket" reminds us that once we "plug in" one process into another process's socket, they can talk to each other by reading and writing the socket. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Sockets are a huge and diverse subject. This tutorial deals with the subset in which one of the two processes is a "server" by virtue of its configuration into &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;xinetd&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; (or &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;inetd&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; if you're running an older UNIX or Linux distro). In such a scenario, the "server" process, which in our example is a simple shellscript, is associated with a port number and a process name via a config file in the &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; directory. In our case, the file is &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/xinetd.d/hello&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. Additionally, the port number is associated with the service name and the tcp protocol via an entry in &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;/etc/services&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;. Once those associations are made, restarting xinetd makes the script available as a service at the specified port. Pictorially, it looks something like this: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;div style="font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;table class="MsoNormalTable" style="text-align: left; margin-left: 0px; margin-right: 0px;" border="1" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="Picture_x0020_6" spid="_x0000_i1029" type="#_x0000_t75" alt="Diagram of a simple xinetd socket usage" style="'width:384pt;height:158.25pt;visibility:visible;mso-wrap-style:square'"&gt;    &lt;v:imagedata src="file:///C:\DOCUME~1\PLANET~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif" title="Diagram of a simple xinetd socket usage"&gt;   &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/PLANET%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif" alt="Diagram of a simple xinetd socket usage" shapes="Picture_x0020_6" border="0" height="211" width="512" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Diagram of client-server socket connection via   xinetd.&lt;br /&gt; Note that the client communicates by reading and writing the socket,&lt;br /&gt; but the server program communicates via stdin and stdout.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;In the case of our tutorial, we used telnet as the client program, connecting it to port 3333 on 192.168.100.2 as follows: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;telnet 192.168.100.2 3333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;The server script's output then appears in the telnet program's output. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;This has been a simple implementation indeed. You didn't code the client, but instead used telnet. And communication goes only one way. It's output from the server app and read in telnet. Nevertheless, you're over the biggest hurdle.The next step is two way socket communication. Read on... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="bidirectionaltelnet"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=""&gt;A Bidirectional Implementation with Telnet Client&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; font-family: trebuchet ms; text-align: justify; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Now let's make a bidirectional program. We'll simply attach a new script, called &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;hellobidirectional.sh&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;, to the hello service. First, let's make the &lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt;hellobidirectional.sh&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style=""&gt; script:&lt;br /&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;  &lt;/div&gt;&lt;table class="MsoNormalTable" style="background: rgb(204, 255, 255) none repeat scroll 0% 50%; width: 100%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms; text-align: left; margin-left: 0px; margin-right: 0px; color: rgb(0, 0, 0);" border="1" cellpadding="0" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;#!/bin/bash&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;logfile="/tmp/log.log"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;firstname="initialization"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;lastname="initialization"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-
