text:
Excel VBA

Microsoft Excel is a deep program rich in features and functionality. One of the most powerful features of Excel is the ability to write programs in Visual Basic for Applications that run "behind" your worksheets to turn Excel into a calculation-oriented development platform for creating special purpose spreadsheets which can function as applications in their own right.

Service Pack
A service pack (in short SP) is a collection of updates, fixes or enhancements to a software program delivered in the form of a single installable package.

A service pack can be incremental, which means it only contains the updates that were not present in the previous service packs or, it can be cumulative, which means it includes the contents of all its predecessors. In the case of Microsoft's products, an incremental update was called a service release. For example, Office 2000 must be upgraded to service release 1 (SR-1) before one can install SP2.

Macro Security
Macro security settings are located in the Trust Center. However, if you work in an organization, your system administrator might have changed the default settings to prevent anyone from changing any settings and execute macros.

Macro Recording
A great way of learning about Excel VBA is using its macro recording function. With the function, you tell Excel to start recording, then perform various steps as if you were working without a macro recorder, and finally, tell Excel to stop recording. VBA code corresponding to what you did using Excel GUI has been recorded by Excel. While the code often cannot be meaningfully used without a modification, by starting from it and modifying it you can save a lot of time that would otherwise be spent reading the VBA documentation.

Menu paths:
 * Excel 2000, 2003: Tools > Macro > Record New Macro.
 * Excel 2007: View (tab) > Macros (group) > down-pointing triangle below Macros button > Record Macro
 * Excel 2007: Developer (tab) > Code (group) > Record Macro

Links:
 * Use Microsoft Office Excel 2007 macros to speed up work at microsoft.com
 * Create a macro (Excel 2003) at microsoft.com
 * Record and use Excel macros (Excel 2000) at microsoft.com

Enabling Developer tab
Developer tab allows you to insert various user interface controls such as buttons. In order to use it, you first have to enable it.

Menu paths to enable the tab:
 * Excel 2007: round Office button > Excel Options (button at bottom) > Popular > Show Developer tab in the Ribbon (check box)
 * Excel 2010: File (tab) > Options (button) > Customize Ribbon (button) > Developer (check box)

Links:
 * How to: Show the Developer Tab on the Ribbon for Excel 2007 at microsoft.com
 * How to: Show the Developer Tab on the Ribbon for Excel 2010 at microsoft.com

Making an XLA

 * Works on: |Microsoft Excel 2002 SP-2, |Microsoft Excel 2000 SR-1

An XLA is one way to make a VBA code-library. It's basically just a normal spreadsheet(.xls file) but has its worksheets hidden. Here's how to create a new one:
 * New Workbook
 * Save-As ...Name it whatever
 * Hit Alt-F11
 * In the Project-tree, select VBAProject(whatever.xls)/ThisWorkbook
 * Hit F4 to get Properties View
 * Find Property IsAddin and set to True
 * Hit Save
 * Close Excel
 * Rename whatever.xls to whatever.xla

Alternatively, you can use Save As / Excel AddIn.

Accessing the Registry

 * Works on: Microsoft Excel 2002 SP-2

This recipe is for reading/writing keys local to your application—this is to provide persistent settings for your VBA app. It does not cover arbitrary access to the Registry (i.e. looking at any key).

The VBA sub/functions are  and. You can type the following into the Immediate window to get a feel for how these work:

If you want to iterate over all keys in a given section you can do so as follows:

You can also delete a registry key as follows: DeleteSetting "MyApplicationName", "MyConfigSection", "MyKeyName"

FYI: Excel/VBA sticks this in the following registry location: MyComputer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApplicationName\MyConfigSection ...where  and   are whatever you specified in your   call.

They end up in HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApplicationName\MyConfigSection.

Prevent Confirmation Popups In Excel

 * Works on: Microsoft Excel 2002 SP-2

Make the following call from VBA:

Making Cells Read-Only

 * Works on: Microsoft Excel 2002 SP-2

Finding Non-Empty Portion of Worksheet
A Worksheet has a maximum size of 65536 rows by 256 columns. However if you want to iterate over all cells you probably don't want to visit all of the empty ones. For this purpose the Worksheet provides the UsedRange property. For example: ActiveSheet.UsedRange.Rows.Count tells you how many non-empty rows are in the given worksheet. Empty rows which are in between the first and last used row are counted as well. Example: If a given Worksheet has entries in cells A7 and B16, used range is considered to be A7:B16, which counts for a total of 10 rows.

Using Events

 * Works on: Microsoft Excel 2002 SP-2

Consider the following class definition—Assume its a class called CMyClass:

The main ideas here are:
 * By declaring mySheet WithEvents, you're saying that CMyClass is listening to mySheet's events.
 * By declaring the member sub mySheet_SelectionChange you're indicating how an instance of CMyClass should react if mySheet experiences a selection change (i.e. the user selects a new cell or range of cells); The general pattern for events is sub memberVarName_EventName(params).
 * You can disconnect the eventing between the given worksheet and CMyClass by setting mySheet = nothing;
 * You can create classes that throw events of your design using:
 * You would declare at the top of the class: Public Event SomeNiceEventName(YourFavoriteParam1 as WhateverType, etc...),
 * You could then raise that event (i.e. firing it to whatever listeners your class has) using RaiseEvent SomeNiceEvent("Some nice event happened.");
 * VBA in Excel doesn't like the letters r or c used as variables. Those letters mean 'row' and 'column' elsewhere.

A little more detail is given here:

Caveat: Uncaught Exceptions
Caveat: Uncaught exceptions in event-handlers cause VBE to mysteriously reset. If you are causing an uncaught exception in an event-handler, you probably won't get an error popup. Instead, VBE will just reset. For this reason you should make sure you're catching exceptions in all of your event handlers.

Caveat: Online-Help Typos
Some versions of Excel can have typos in the F1-help. Here's an example of a Click handler with the correct parameters:

Iterating Over MultiSelected Cells

 * Works on: Microsoft Excel 2002 SP-2

The following code-snippet writes "YAY!" in each cell selected by the user:

Exporting VBA Code

 * Works on Microsoft Excel 2002 SP-2

The following code provides a very primitive routine to write serializes the VBA code in your modules to files:

Resize a Named Range
Note that the Resize property of Range objects does not change the size of the range object. It returns a new anonymous Range object. Easiest way to do this is to set the .Name property of the Resized range:
 * Excel 2003

Creating a Named Range

 * Excel 2002

Named Ranges allow the user to refer to a cell or range of cells by name instead of by their cell address. This name can be used in other cell formulas as well as in VBA (e.g. using the SomeName ). There are two sorts of named ranges: Workbook Names and Worksheet Names.

To create a Workbook Name you can select the cell you want to name, pull down Insert-->Name-->Define... This will bring up the "Define Name" dialog. Here you can enter the new name for your cell.

The create a Worksheet Name you follow the same procedure but precede the name with Sheetname, e.g.  to create a named-range only visible from within worksheet.

When there are two variables with the same name, one local (Worksheet Name) and one global (Workbook Name), the spreadsheet uses the local variable.

There is no way to visualize a named range. The closest thing is to pull down again Insert-->Name-->Define..., but this method does not show if a variable is a local Worksheet Name or a global Workbook Name.

The named range can be a single cell, part of a row, part of a column or a rectangular group of cells. Each one behaves differently:
 * A single cell can be referenced anywhere in the worksheet or, if it's defined globally (workbook name), anywhere in any worksheet.
 * A group of cells composing part of a row can only be referenced in a parallel row. For example, if the named variable is mass and it spans the cells C5:L5, then a reference to mass' at cell E8 (say, a formula like =mass * (3e8)^2) would take the value at C8, but a reference to mass'' at cell M9 would return an error
 * Similarly, a group of cells composing part of a column can only be referenced in a parallel column. Cells outside the range will return an error
 * A group of cells that define a rectangular array of sides greater than one is only useful to be referenced in other worksheets - so, there's no point in defining them locally (worksheet name). For example, if covmatrix are the cells Sheet1!B2:D4, then if cell Sheet2!C3 has the formula =1/sqrt(covmatrix), then it will return 1/sqrt(Sheet1!C3).

Reading a File
Reading a file line by line AKA for each line of a file:

Links:
 * Open at Visual Basic for Applications Reference, msdn.microsoft.com
 * Close at Visual Basic for Applications Reference, msdn.microsoft.com
 * Line Input at Visual Basic for Applications Reference, msdn.microsoft.com

Writing to a File
Writing to a file:

Writing the tab-separated content of the current worksheet to a text file, disregarding some of cell content formatting such as percentages:

Links:
 * Open at Visual Basic for Applications Reference, msdn.microsoft.com
 * Close at Visual Basic for Applications Reference, msdn.microsoft.com
 * Print # at Visual Basic for Applications Reference, msdn.microsoft.com

File Existence
Testing whether a file exists:

Directories
Making a directory:

Removing a directory:

Changing to a directory:

Changing the current drive:

Listing the content of a directory, using a custom filter encompassing two file extensions:

Links:
 * ChDir at Visual Basic for Applications Reference, msdn.microsoft.com
 * ChDrive at Visual Basic for Applications Reference, msdn.microsoft.com
 * Dir at Visual Basic for Applications Reference, msdn.microsoft.com
 * MkDir at Visual Basic for Applications Reference, msdn.microsoft.com
 * RmDir at Visual Basic for Applications Reference, msdn.microsoft.com

Grep
Searching for a regular expression in the lines of the files of a directory aka grepping:

Clipboard
Prerequisites: Accessing the clipboard from an Excel sheet requires that a reference to MSForms (Microsoft Forms Object Library) is set in the sheet. You can set the reference by adding and subsequent removing of a user form, via Insert > UserForm in a pop-up menu. To check the presence of a reference, see Tools > References menu.

Placing text on the clipboard:

Getting text from the clipboard:

Links:
 * DataObject Class at msdn.microsoft.com; contains a section on Visual Basic, whose applicability to Excel VBA is unclear

Range
A range is a set of cells. The cells in a range do not need to be adjacent. However, the cells in a single range do need to belong to a single worksheet.

Defining a new range:

Iterating a range AKA for each cell in a range:

Iterating rows and iterating columns AKA for each row of a range and for each column of a range, even if discontiguous:

Making an union (a range subsuming both) or intersection (a range covering only cells in common) of two ranges:

Selecting a range:

Activating a cell:

Finding out about a range AKA learning about a range, including the number of cells AKA cell count, the first row, the last row, the first column, the last column, row count, and column count:

Links:
 * Range Collection at Excel 2003 VBA Language Reference at msdn
 * Referring to Multiple Ranges at Excel 2003 VBA Language Reference at msdn
 * End Property at Excel 2003 VBA Language Reference at msdn
 * Intersect Method at Excel 2003 VBA Language Reference at msdn
 * Union Method at Excel 2003 VBA Language Reference at msdn

Worksheet
To create, access, or delete worksheets, you can use the methods of Worksheet objects. Examples follow.

Obtaining an existing sheet by name or creating it if it does not exist:

Links:
 * Worksheet Object at Excel 2003 VBA Language Reference at mdsn
 * Sheets Collection Object at Excel 2003 VBA Language Reference at mdsn

Searching
You can search for values in a sheet as follows:

If you want to have a substring match, drop "LookAt:=xlWhole" or use "LookAt:=xlPart".

Links:
 * Find Method (Excel 2003 VBA Language Reference) at msdn

Cell Formatting
You can format cells including text color, background color, font properties and border, but also formatting as a number, percent or text from VBA as follows:

Links:
 * Font Object (Excel 2003 VBA Language Reference) at msdn
 * Borders Collection (Excel 2003 VBA Language Reference) at msdn
 * LineStyle Property (Excel 2003 VBA Language Reference) at msdn
 * Weight Property (Excel 2003 VBA Language Reference) at msdn
 * NumberFormat Property (Excel 2003 VBA Language Reference) at msdn

Color
In Excel VBA, RGB colors are plain numbers rather than objects. Some color examples are listed in.

Some examples:

Setting the background color of the cells of the 1st column to the row number color index:

Color index in the default palette:
 * 0 - Automatic
 * 1 - Black
 * 2 - White
 * 3 - Red
 * 4 - Green
 * 5 - Blue
 * 6 - Yellow
 * 7 - Magenta
 * 8 - Cyan
 * 9 - Dark red
 * 10 - Dark green
 * 11 - Dark blue
 * ... etc., through 56

Finding all cells whose text color approaches green:

Links:
 * Color Property at Excel 2003 VBA Language Reference at msdn
 * ColorIndex Property at Excel 2003 VBA Language Reference at msdn
 * Colors Property at Excel 2003 VBA Language Reference at msdn
 * ColorType Property at Excel 2003 VBA Language Reference at msdn
 * PatternColor Property at Excel 2003 VBA Language Reference at msdn
 * PatternColorIndex Property at Excel 2003 VBA Language Reference at msdn

Visibility
Hiding a row (hide a row, hide row):

Hiding several rows at once:

Hiding the rows of the currently selected cells:

Looping over rows that are visible AKA shown AKA not hidden:

Toggling the visibility of rows:

Hiding a column (hide a column, hide column):

Hiding several columns at once:

Hiding the columns of the currently selected cells:

Other tricks pertaining to visibility of columns work in a direct analogy to the examples for rows above.

Hyperlink
Opening or following a hyperlink (open a hyperlink, follow a hyperlink, open hyperlink, follow hyperlink):

Opening the Wikipedia article for the article title found in the single active cell by opening a put-together URL:

Opening a Wikipedia article per article title in any of the currently selected cells:

Opening a local hyperlink, with a possible pop-up asking for confirmation for security reasons:

Links:
 * FollowHyperlink Method (Excel 2003 VBA Language Reference) at msdn

Temporary file
Getting a temporary file, with unclear robustness of the following method, which uses random numbers and tests for file existence:

Links:
 * How To Use GetTempFileName API to Create a Unique Temporary File at Microsoft.com

Command Output
If you do not mind a popping up console window, here is a way of obtaining output of a command from Excel VBA:

If having a console window popping up is not acceptable and you are okay with creating a temporary file, here is another way of obtaining output of a command from Excel VBA:

Using cmd /c, you can run chains of commands connected using & or | as well:

Links:
 * Capture output value from a shell command in VBA? at stackoverflow

Dimensions
Row height and column width:

Links:
 * RowHeight Property at Excel 2003 VBA Language Reference at msdn
 * ColumnWidth Property at Excel 2003 VBA Language Reference at msdn
 * StandardHeight Property at Excel 2003 VBA Language Reference at msdn
 * StandardWidth Property at Excel 2003 VBA Language Reference at msdn

Comment
Working with comment aka note:

Collecting all comments of the sheet into a string:

Links:
 * Comment Object at Excel 2003 VBA Language Reference at msdn
 * Shape Object at Excel 2003 VBA Language Reference at msdn

IsEmpty
Approximately speaking, tells whether a variable has been initialized and not yet written to.

Can be used to tell whether a cell is empty; the presence of a comment attached to the cell or formatting of the cell does not make a cell non-empty.

Examples:

Links:
 * IsEmpty at Excel 2010 VBA Language Reference at msdn

IsNull
Tells whether an expression is Null, which is distinct from Empty.

Null can be assigned to variant variables; it cannot be assigned to variables dimensioned as strings or integers. Null cannot be assigned to objects, unlike Nothing.

Examples:

Links:
 * IsNull at Excel 2013 VBA Language Reference at msdn

Add-Ins at Startup
Controlling what add-ins Excel opens at startup:

Microsoft Excel 2003: Configure loaded add-ins via Tools -> Add-ins. Their list is mirrored in the following Registry key, but there's no advantage in editing the Registry: HKCU\Software\Microsoft\Office\11.0\Excel\Init Commands

Microsoft Excel 2002 SP-2:When you start Excel, it may automatically load addins (i.e. those you added from Tools -> Add-Ins). The list of add-ins that get loaded come from the following registry key: HKCU\Software\Microsoft\Office\10.0\Excel\Options Under this key you may find a list of string-variables: The values of these variables is the name of the add-in. Excel, on start-up, will attempt to load the add-in in string-variable OPEN first, then OPEN1 (if present), onward until it runs out of such string-variables. It seems like Excel will automatically renumber the keys if they are not consecutive (i.e. OPEN1, OPEN3, OPEN4 will become OPEN1, OPEN2, OPEN3).
 * OPEN
 * OPEN1
 * OPEN2
 * etc...

Note also the list of add-ins presented when you do Tools -> Add-Ons is, in part, populated by the contents of the following key: HKCU\Software\Microsoft\Office\10.0\Excel\Addin Manager

See also the following MS KB article: How to Remove Entries from Add-Ins Dialog Box.

Chart direct from VBA array data
Charts need not be based on the values in cells of a spreadsheet, but can also be made directly in VBA from an array. The following code makes a chart of the relative frequency of characters in a string, in percent of the total, or normalized to a maximum of unity. There is also an option to sort the display and the content can be changed by modifying the content or sequence of the vRef array. Procedures to remove charts and test the functions are included.

Nuking Retained State

 * Works on: Microsoft Excel 2002 SP-2
 * OS: Windows XP

Nuking Excel's Retained State: Excel remembers all sorts of things between runs: What addins to load, what buttons and menus to display, etc. Sometime you'll want to clean all of this stuff up and bring Excel back to its factory state.

Nuking Excel Checklist:
 * 1) Make sure the following directories are empty:
 * C:\Program Files\Microsoft Office\Office10\xlstart
 * C:\apps\xp\application data\Microsoft\xlstart
 * 1) Nuke the auto-open keys from the registry(as shown below);
 * 2) Nuke all .xlbs – For example check here:
 * C:\apps\xp\application data\Microsoft\Excel

Related Wikibooks

 * Visual Basic

title: Excel VBA


text:
Cookbook:Chili Powder

| Chili

Chili powder is a spice blend, made from assorted chiles and other spices and seasonings. Do not confuse it with pure chile powder.

Characteristics
For the most part, chili powder is red in color with a smoky, complex flavor. The heat will depend on the variety of chile used, as well as the ratio of chile to other spices. Typically, these other spices include cumin, paprika, oregano, and garlic powder, and they may include salt.

Selection and storage
Make sure not to accidentally select pure chile powder instead of chili powder. Since all blends do differ, you'll want to use a blend that is as close as possible to the one used in your recipe in order to get the same result.

Like all ground spices, chili powder is relatively shelf stable but will lose its flavor faster than whole spices. Make sure to keep it in an airtight container away from light, heat, and moisture.

Use
Like its name indicates, chili powder is most often used in chili con carne and other Tex-Mex dishes. It can also be used as a seasoning for meats.

Substitution
If you can't get your hands on chili powder commercially, it is relatively easy to make your own blend from its constituent spices.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Cookbook:Chili Powder


text:
Cookbook:Cooking Spray

| Oil and fat

Cooking spray is cooking oil in a spray can, sometimes with additives.

Characteristics
Canola oil is the most common type of oil used, but other neutral oils and even olive or coconut oil can be used. The oil is thinned with water and an emulsifier, and the can is pressurized with a propellant gas. In some varieties, a flavoring (like butter flavor) may be added. In baking spray, the mixture includes flour as well. The combination of thinning and spray capacity allow the cook to apply a thinner layer of oil than is possible than in other methods.

Selection and storage
Make sure to choose the correct variety of spray for your application. Baking spray should not be used on the stovetop, since the flour can scorch and burn over direct heat. Store the spray can away from any heat sources, as heat is dangerous for pressurized, flammable canisters like this.

Use
Cooking spray is used for low-oil cooking, as well as coating other surfaces to make them non-stick. For example, spraying utensils with it makes sticky materials stick less. Baking spray is preferred for cake pans and molds, since the flour adds a secondary non-stick material to prevent sticking of the cake to the pan.

Note that when used on nonstick cookware, cooking spray can cause a residual buildup that can be difficult to clean.

Substitution
Regular oil can be substituted equivalently for cooking spray, and a brush or paper towel can help apply a thin coating. To make a baking spray facsimile, combine equal volumes of oil and all-purpose flour, and brush it onto the pan surface.

title: Cookbook:Cooking Spray


text:
Cookbook:Toast

| Breakfast

Toast is sliced bread which has been browned, to varying degrees, on each side by exposure to radiated heat. Historically, the bread was placed on a wire toasting fork and held before the red hot charcoal or embers of an open fire, and toasted one side at a time. It can be made by placing the bread slices under a hot grill or broiler, and turning when one side of the bread is browned to taste. Nowadays, in most western countries, toast is usually made in an electric toaster which browns both sides of the bread simultaneously. Most toasters have a timing mechanism to control the degree of browning and "pop up" the bread slices when the toasting is complete. The word toast is of latin origin. Toast often accompanies breakfast foods, particularly eggs and bacon or sausage.

Toast can be eaten with a topping of honey or jam and a classic combination of toppings is butter with cinnamon and sugar sprinkled on top. The recipe uses about ¼ teaspoon of sugar and ⅛ teaspoon of cinnamon for each slice of bread. The butter is well-spread and melted first, so that the cinnamon and sugar will stick to the toast. More recently popular is avocado toast. Avocado toast often includes some combination of spices, and a protein such as egg or bacon.

Ingredients

 * 1 or more slices of bread, sized to fit your toaster
 * 1 or more toppings (optional):
 * Butter
 * Cinnamon
 * Honey
 * Jam
 * Jelly
 * Lard
 * Margarine
 * Sugar
 * Peanut butter
 * Avocado
 * Scrambled eggs

Procedure

 * 1) Ensure that the toaster is plugged in, generally clean, and functional.
 * 2) Place some bread slices into the toaster. Usually, you must place each slice into a separate slot. Some toasters can hold 2 slices in an extra-wide slot. If you use a toaster oven, you may need to lay the bread slices flat on a metal grill inside the toaster oven.
 * 3) If the toaster has a darkness control, adjust it as desired.
 * 4) Activate the toaster.
 * 5) Watch the bread as it browns. If it starts to get excessively dark, activate the pop up mechanism and carefully remove the toast. If you are unable to make the toast pop out, unplug the toaster. Do not reach into a slotted toaster, whether with your hand or a metal tool, while it is plugged in or very hot.
 * 6) Spread your choice of topping on the toast with a knife, spatula, or spoon.

Notes, tips, and variations

 * The bread crust can be cut off after the toast has been cooked. The topping can be added to both sides.
 * Replace ordinary bread slices with a bagel or English muffin cut across the axis.
 * Butter would be the best topping choice when using raisin bread to make toast.
 * Replace each slice of bread with a waffle or scone.

토스트

title: Cookbook:Toast


text:
Cookbook:Jelly

Jelly is filtered and solidified fruit syrup. In a jelly, the juice is pressed or boiled out of the fruit, filtered and then boiled again with sugar to reduce and thicken it. Depending on the type of fruit, additional pectin or sugar may need to be added. If there is not enough pectin, the jelly will not solidify. At some point while the jelly is still liquid, it is filtered or strained to remove any seeds or skins.

title: Cookbook:Jelly


text:
Cookbook:Jam

Jam is a fruit conserve in which sugar and fruit chunks are boiled together. The fruit is crushed or pureed, then boiled to reduce the amount of water. Depending on the type of fruit, additional pectin or sugar may need to be added. If there is not enough pectin, the jam will not solidify.

title: Cookbook:Jam


text:
Cookbook:Marmalade

| Jams and Jellies | Jam

Marmalade is unfiltered solidified citrus fruit syrup, usually containing large chunks of fruit.

The fruit is sliced or pureed, then boiled to reduce the amount of water. Depending on the type of fruit, additional sugar may need to be added.

title: Cookbook:Marmalade


text:
Cookbook:Cranberry Sauce

 * Jams and Jellies

Cranberry sauce is a jelly or a jam made by cooking cranberries, sugar, and often other ingredients together. Many, if not most, Americans are more familiar with the canned cranberry sauce which is a clear, solidified, jelly that is often valued for the property of maintaining the shape of the can in which it is packaged.

The fruit will generally come apart when vigorously boiled, so there is no need to crush or puree it when a jam-style cranberry sauce is desired. Cranberry sauce can be made from cranberries and sugar alone.

title: Cookbook:Cranberry Sauce


text:
User:IceKarma

Please visit my user page at Wikipedia.

title: User:IceKarma


text:
Computers for Beginners/Keeping your PC running Smoothly

Do Some Research
Is that demo looking tempting enough to download? Or how about that brand new piece of hardware? Well before you do, perhaps you should do some research on it first. By doing your research you can avoid future potential problems by at least being aware of bugs, compatibility issues, security vulnerabilities, and undesirable inclusions like spyware & adware.

You can research:
 * Reviews & Ratings
 * Frequently Asked Questions
 * Release Notes
 * Press Releases
 * Version History
 * System Requirements

Update Everything
Applications, operating systems, drivers... Nearly everything on your PC can be updated. Updates are often released to remove bugs, fix exploits, improve compatibility, optimize performance, add features, refresh databases, and enhance experiemce.

However you should be aware that some updates are purely optional and may be require certain conditions to be applicable, especially firmware updates.

While you should avoid interrupting software updates, you should never interrupt a firmware update.

You should update your:
 * Anti-Virus
 * Anti-Spyware / Anti-Adware
 * Personal Firewall
 * Operating System
 * Internet Browsers
 * Communications Software (E-Mail, IM, and Chat Clients)
 * Productivity Suites
 * Favorite Applications
 * Device Drivers
 * Firmware

You should run:
 * Anti-Virus scans
 * Disk - defragmentation tool
 * Disk Cleanup wizard

A useful tutorial on a sequence for managing your computer's health is available at under the WORKSHOP NOTES heading Clean your PC

Keep your passwords safe
Your passwords protect your files, your user accounts, and your online accounts, so don't you think you should protect your password?

General Guidelines: 1. They ask you in person—not by phone, by email, or instant messenger; 2. You ask for and they show a tamper-proof photo identification card—merely wearing a uniform is insufficient; 3. You call where they came from, verify that they are actually who they say they are, and verify that in their job, they normally ask people for their passwords.
 * Avoid using personal data as passwords—you shouldn't use your birthday, your national insurance/social security number, or proper names as passwords.
 * Include capital letters, numbers, and symbols.
 * If you can, avoid using any word in the dictionary in your password, or any proper names. Crackers (criminal hackers) have lists of nearly all words in English, as well as other languages, and by using a special program, can test thousands of words per second against your password. Ideally, a password should be at least 8 characters (letters/numbers) long, and contain letters and numbers interspersed throughout its length; for example "9hyl8rn25g"; do not use this example as your password!
 * Use multiple passwords.
 * In general, don't EVER give your password to others, even other family members. There are normally ways they can obtain their own user accounts and passwords. Any person who knows a secret doubles the likelihood that secret will be revealed, at the very least.
 * If someone you don't personally know asks you for your password, including individuals from the "phone company", the "cable company", the "ISP", the "bank", the "police", the "government", from "corporate", from "IT" or "MIS", or any individual purporting to hold a position of authority, generally assume that the request is malicious in nature, unless:
 * Verify where you enter your password, especially on the Web. There are fake sites that look like real ones which are designed to trick you into giving out your password.
 * When in doubt, change your password.

Keep the system free from all junk files:

 * Remove all the files in the Temp Folder, Temporary Internet files Folder, History Folder and the recent document Folder. you can do this by doing the Disk Cleanup.


text:
Talk:Set Theory

a page on the conventions used, seems to be in place.
 * eg:

w/o, for example defining sthg like $$\;\{ x | \phi (x) \} \ $$.
 * $$\ =$$ sign is used to denote equality or equation.
 * $$\ :=$$ stands for "equals by definition".
 * how do we know this, $$d \in \{a\} \Rightarrow   a = d \ $$ is true for non-set a,  d; from ZF axioms.

definiton of a singleton: $$ \{ a \} \equiv \{ x | x = a\} $$.
 * --Dogu 10:27, 7 Apr 2005 (UTC)

response:
 * A more formal definition of a singleton set is

A set $$x$$ is a singleton set if and only if $$\exists{y}:(x=\{y\})$$. :--Mathmogeek (discuss • contribs) 15:10, 25 February 2021 (UTC)

Why were the pages on Set Theory moved to Topology?
I am wondering why these pages on Set Theory were moved under Topology. Since Set Theory underlies many parts of mathematics (e.g. Discrete Mathematics as well), shouldn't a book on Set Theory stand on its own, with some less-thorough reference to Set Theory given in the books on Topology, Discrete Math, etc.?

Patrick McElwee 01:24, 26 March 2006 (UTC)Patrick McElwee (Pmcelwee407)

I agree whole-heartedly. If there is no objection in, say, a month, I will declare a consensus and move the restore this to being its own book. --JMRyan T E C 19:48, 19 April 2006 (UTC)

Ditto, merging with what's in Discrete Mathematics would be appreciated also. Fephisto 04:05, 26 July 2006 (UTC)

After many months of no objections, I hereby declare a consensus and have restored Set Theory as its own book. --JMRyan T E C 20:13, 27 October 2006 (UTC)

Wikiversity navbar
The Set Theory pages have a nav3 template creating backlinks to School of Mathematics and their School of Mathematics:Pure Mathematics. However, this book was not created as part of Wikiveristy. School of Mathematics:Pure Mathematics lists several "Structured courses"; each of these have this nav3 template with similar backlinks. School of Mathematics:Pure Mathematics also lists several "Texts for reference". The idea, so it seems, is that these are books outside Wikiversity offering related material. Of these only Set Theory has the backlinks to Wikiversity. I would like to remove the nav3 template from the Set Theory pages. If there is no objection after about a month, I will declare a consensus and remove it. --JMRyan T E C 20:30, 19 April 2006 (UTC)

After many months of no objection, I hereby declare a consensus and have removed the nav3 & nav4 templates backlinking the book to Wikiversity. I have also made the category for all pages Mathematics. --JMRyan T E C 20:13, 27 October 2006 (UTC)

title: Talk:Set Theory


text: User talk:KTC

title: User talk:KTC


text:
Statistics/Probability/Bayesian

Bayesian analysis is the branch of statistics based on the idea that we have some knowledge in advance about the probabilities that we are interested in, so called a priori probabilities. This might be your degree of belief in a particular event, the results from previous studies, or a general agreed-upon starting value for a probability. The terminology "Bayesian" comes from the Bayesian rule or law, a law about conditional probabilities. The opposite of "Bayesian" is sometimes referred to as "Frequentist Statistics."

Example
Consider a box with 3 coins, with probabilities of showing heads respectively 1/4, 1/2 and 3/4. We choose arbitrarily one of the coins. Hence we take 1/3 as the a priori probability $$P(C_1)$$ of having chosen coin number 1. After 5 throws, in which X=4 times heads came up, it seems less likely that the coin is coin number 1. We calculate the a posteriori probability that the coin is coin number 1, as:

 * $$\begin{align}

P(C_1|X=4)&=\frac{P(X=4|C_1)P(C_1)}{P(X=4)}\\ &=\frac{P(X=4|C_1)P(C_1)}{P(X=4|C_1)P(C_1)+P(X=4|C_2)P(C_2)+P(X=4|C_3)P(C_3)}\\ &=\frac{ {5 \choose 4} (\frac 14)^4 \frac 34 \frac 13} {{5 \choose 4} (\frac 14)^4 \frac 34 \frac 13+{5 \choose 4} (\frac 12)^4 \frac 12 \frac 13+{5 \choose 4} (\frac 34)^4 \frac 14 \frac 13} \end{align} $$ In words:
 * The probability that the Coin is the first Coin, given that we know heads came up 4 times... Is equal to the probability that heads came up 4 times given we know it's the first coin, times the probability that the coin is the first coin. All divided by the probability that heads comes up 4 times (ignoring which of the three Coins is chosen). The binomial coefficients cancel out as well as all denominators when expanding 1/2 to 2/4. This results in

\frac{3}{3 + 32 + 81}=\frac{3}{116} $$

In the same way we find:
 * $$P(C_2|X=4)=\frac{32}{3 + 32 + 81}=\frac{32}{116}$$

and
 * $$P(C_3|X=4)=\frac{81}{3 + 32 + 81}=\frac{81}{116}$$.

This shows us that after examining the outcome of the five throws, it is most likely we did choose coin number 3.

Actually for a given result the denominator does not matter, only the relative Probabilities $$p(C_i) = P(C_i|X=4)/P(X=4)$$ When the result is 3 times heads the Probabilities change in favor of Coin 2 and further as the following table shows:

title: Statistics/Probability/Bayesian


text:
C Programming/Preprocessor directives and macros

Preprocessors are a way of making text processing with your C program before they are actually compiled. Before the actual compilation of every C program it is passed through a Preprocessor. The Preprocessor looks through the program trying to find out specific instructions called Preprocessor directives that it can understand. All Preprocessor directives begin with the # (hash) symbol. C++ compilers use the same C preprocessor.

The preprocessor is a part of the compiler which performs preliminary operations (conditionally compiling code, including files etc...) to your code before the compiler sees it. These transformations are lexical, meaning that the output of the preprocessor is still text.

Directives
Directives are special instructions directed to the preprocessor (preprocessor directive) or to the compiler (compiler directive) on how it should process part or all of your source code or set some flags on the final object and are used to make writing source code easier (more portable for instance) and to make the source code more understandable. Directives are handled by the preprocessor, which is either a separate program invoked by the compiler or part of the compiler itself.

#include
C has some features as part of the language and some others as part of a standard library, which is a repository of code that is available alongside every standard-conformant C compiler. When the C compiler compiles your program it usually also links it with the standard C library. For example, on encountering a  directive, it replaces the directive with the contents of the stdio.h header file.

When you use features from the library, C requires you to declare what you would be using. The first line in the program is a preprocessing directive which should look like this:

 * 1) include

The above line causes the C declarations which are in the stdio.h header to be included for use in your program. Usually this is implemented by just inserting into your program the contents of a header file called stdio.h, located in a system-dependent location. The location of such files may be described in your compiler's documentation. A list of standard C header files is listed below in the Headers table.

The stdio.h header contains various declarations for input/output (I/O) using an abstraction of I/O mechanisms called streams. For example there is an output stream object called stdout which is used to output text to the standard output, which usually displays the text on the computer screen.

If using angle brackets like the example above, the preprocessor is instructed to search for the include file along the development environment path for the standard includes.

 * 1) include "other.h"

If you use quotation marks (" "), the preprocessor is expected to search in some additional, usually user-defined, locations for the header file, and to fall back to the standard include paths only if it is not found in those additional locations. It is common for this form to include searching in the same directory as the file containing the #include directive.

Headers
The C90 standard headers list:

Headers added since C90:

#pragma
The pragma (pragmatic information) directive is part of the standard, but the meaning of any pragma depends on the software implementation of the standard that is used. The #pragma directive provides a way to request special behavior from the compiler. This directive is most useful for programs that are unusually large or that need to take advantage of the capabilities of a particular compiler.

Pragmas are used within the source program.

 * 1) pragma token(s)

 * 1) pragma is usually followed by a single token, which represents a command for the compiler to obey. You should check the software implementation of the C standard you intend on using for a list of the supported tokens. Not surprisingly, the set of commands that can appear in #pragma directives is different for each compiler; you'll have to consult the documentation for your compiler to see which commands it allows and what those commands do.

For instance one of the most implemented preprocessor directives,  when placed at the beginning of a header file, indicates that the file where it resides will be skipped if included several times by the preprocessor.

#define</tt>
Each  preprocessor instruction defines a macro. For example, #define PI 3.14159265358979323846 /* pi */

A macro defined with a space immediately after the name is called a constant or literal. A macro defined with a parenthesis immediately after the name is called a function-like macro.

The <tt>#define</tt> directive is used to define macros. Macros are used by the preprocessor to manipulate the program source code before it is compiled. Because preprocessor macro definitions are substituted before the compiler acts on the source code, any errors that are introduced by <tt>#define</tt> are difficult to trace.

By convention, macros defined using <tt>#define</tt> are named in uppercase. Although doing so is not a requirement, it is considered very bad practice to do otherwise. This allows the macros to be easily identified when reading the source code. (We mention many other common conventions for using  in a later chapter, C Programming/Common practices).

Today, <tt>#define</tt> is primarily used to handle compiler and platform differences. E.g., a define might hold a constant which is the appropriate error code for a system call. The use of <tt>#define</tt> should thus be limited unless absolutely necessary; <tt>typedef</tt> statements and constant variables can often perform the same functions more safely.

Another feature of the <tt>#define</tt> command is that it can take arguments, making it rather useful as a pseudo-function creator. Consider the following code:

... int x = -1; while( ABSOLUTE_VALUE( x ) ) { ... } It's generally a good idea to use extra parentheses when using complex macros. Notice that in the above example, the variable "x" is always within its own set of parentheses. This way, it will be evaluated in whole, before being compared to 0 or multiplied by -1. Also, the entire macro is surrounded by parentheses, to prevent it from being contaminated by other code. If you're not careful, you run the risk of having the compiler misinterpret your code.
 * 1) define ABSOLUTE_VALUE( x ) ( ((x) < 0) ? -(x) : (x) )

Because of side-effects it is considered a very bad idea to use macro functions as described above.

int x = -10; int y = ABSOLUTE_VALUE( x++ );

If ABSOLUTE_VALUE were a real function 'x' would now have the value of '-9', but because it was an argument in a macro it was expanded twice and thus has a value of -8.

(#, ##)

The # and ## operators are used with the <tt>#define</tt> macro. Using # causes the first argument after the # to be returned as a string in quotes. For example, the command

will make the compiler turn this command
 * 1) define as_string( s ) # s

puts( as_string( Hello World! ) ) ; into

puts( "Hello World!" ); Using ## concatenates what's before the ## with what's after it. For example, the command

... int xy = 10; ... will make the compiler turn
 * 1) define concatenate( x, y ) x ## y

printf( "%d", concatenate( x, y )); into

printf( "%d", xy); which will, of course, display <tt>10</tt> to standard output.

It is possible to concatenate a macro argument with a constant prefix or suffix to obtain a valid identifier as in

make_function( bar )
 * 1) define make_function( name ) int my_ ## name (int foo) {}

which will define a function called <tt>my_bar</tt>. But it isn't possible to integrate a macro argument into a constant string using the concatenation operator. In order to obtain such an effect, one can use the ANSI C property that two or more consecutive string constants are considered equivalent to a single string constant when encountered. Using this property, one can write

eat( fruit )
 * 1) define eat( what ) puts( "I'm eating " #what " today." )

which the macro-processor will turn into

puts( "I'm eating " "fruit" " today." )

which in turn will be interpreted by the C parser as a single string constant.

The following trick can be used to turn a numeric constants into string literals

puts(num2str(CONST));
 * 1) define num2str(x) str(x)
 * 2) define str(x) #x
 * 3) define CONST 23

This is a bit tricky, since it is expanded in 2 steps. First  is replaced with , which in turn is replaced with. This can be useful in the following example:

 * 1) ifdef DEBUG
 * 2) define debug(msg) fputs(__FILE__ ":" num2str(__LINE__) " - " msg, stderr)
 * 3) else
 * 4) define debug(msg)
 * 5) endif

This will give you a nice debug message including the file and the line where the message was issued. If DEBUG is not defined however the debugging message will completely vanish from your code. Be careful not to use this sort of construct with anything that has side effects, since this can lead to bugs, that appear and disappear depending on the compilation parameters.

macros
Macros aren't type-checked and so they do not evaluate arguments. Also, they do not obey scope properly, but simply take the string passed to them and replace each occurrence of the macro argument in the text of the macro with the actual string for that parameter (the code is literally copied into the location it was called from).

An example on how to use a macro:
 * 1) include <stdio.h>

 * 1) define SLICES 8
 * 2) define ADD(x) ( (x) / SLICES )

int main(void) {  int a = 0, b = 10, c = 6;

a = ADD(b + c); printf("%d\n", a); return 0; } -- the result of "a" should be "2" (b + c = 16 -> passed to ADD -> 16 / SLICES -> result is "2")

One of the few situations where inline functions won't work -- so you are pretty much forced to use function-like macros instead -- is to initialize compile time constants (static initialization of structs). This happens when the arguments to the macro are literals that the compiler can optimize to another literal.

#error
The #error directive halts compilation. When one is encountered the standard specifies that the compiler should emit a diagnostic containing the remaining tokens in the directive. This is mostly used for debugging purposes.

Programmers use "#error" inside a conditional block, to immediately halt the compiler when the "#if" or "#ifdef" -- at the beginning of the block -- detects a compile-time problem. Normally the compiler skips the block (and the "#error" directive inside it) and the compilation proceeds.

#warning
Many compilers support a #warning directive. When one is encountered, the compiler emits a diagnostic containing the remaining tokens in the directive.

#undef
The #undef directive undefines a macro. The identifier need not have been previously defined.

#if,#else,#elif,#endif (conditionals)
The #if command checks whether a controlling conditional expression evaluates to zero or nonzero, and excludes or includes a block of code respectively. For example:

The conditional expression could contain any C operator except for the assignment operators, the increment and decrement operators, the address-of operator, and the sizeof operator.

One unique operator used in preprocessing and nowhere else is the defined operator. It returns 1 if the macro name, optionally enclosed in parentheses, is currently defined; 0 if not.

The #endif command ends a block started by,  , or.

The #elif command is similar to, except that it is used to extract one from a series of blocks of code. E.g.:

*/  : /* The optional #else block is selected if none of the previous #if or    #elif blocks are selected */ :  :
 * 1) if /* some expression */
 * 1) elif /* another expression */
 * 1) else
 * 1) endif /* The end of the #if block */

#ifdef,#ifndef
The #ifdef command is similar to, except that the code block following it is selected if a macro name is defined. In this respect,

 * 1) ifdef NAME

is equivalent to

 * 1) if defined NAME

The #ifndef command is similar to #ifdef, except that the test is reversed:

 * 1) ifndef NAME

is equivalent to

 * 1) if !defined NAME

#line
This preprocessor directive is used to set the file name and the line number of the line following the directive to new values. This is used to set the __FILE__ and __LINE__ macros.

Useful Preprocessor Macros for Debugging
ANSI C defines some useful preprocessor macros and variables, also called "magic constants", include:

__FILE__  => The name of the current file, as a string literal __LINE__  => Current line of the source file, as a numeric literal __DATE__  => Current system date, as a string __TIME__  => Current system time, as a string __TIMESTAMP__ => Date and time (non-standard) __cplusplus => undefined when your C code is being compiled by a C compiler; 199711L when your C code is being compiled by a C++ compiler compliant with 1998 C++ standard. __func__ => Current function name of the source file, as a string (part of C99) __PRETTY_FUNCTION__ => "decorated" Current function name of the source file, as a string (in GCC; non-standard)

Compile-time assertions
Compile-time assertions can help you debug faster than using only run-time assert statements, because the compile-time assertions are all tested at compile time, while it is possible that a test run of a program may fail to exercise some run-time assert statements.

Prior to the C11 standard, some people defined a preprocessor macro to allow compile-time assertions, something like:

The   Boost library defines a similar macro.

Since C11, such macros are obsolete, as  and its macro equivalent   are standardized and built-in to the language.

X-Macros
One little-known usage pattern of the C preprocessor is known as "X-Macros". An X-Macro is a header file or macro. Commonly these use the extension ".def" instead of the traditional ".h". This file contains a list of similar macro calls, which can be referred to as "component macros". The include file is then referenced repeatedly in the following pattern. Here, the include file is "xmacro.def" and it contains a list of component macros of the style "foo(x, y, z)".

The most common usage of X-Macros is to establish a list of C objects and then automatically generate code for each of them. Some implementations also perform any s they need inside the X-Macro, as opposed to expecting the caller to undefine them.

Common sets of objects are a set of global configuration settings, a set of members of a struct, a list of possible XML tags for converting an XML file to a quickly-traversable tree, or the body of an enum declaration; other lists are possible.

Once the X-Macro has been processed to create the list of objects, the component macros can be redefined to generate, for instance, accessor and/or mutator functions. Structure serializing and deserializing are also commonly done.

Here is an example of an X-Macro that establishes a struct and automatically creates serialize/deserialize functions. For simplicity, this example doesn't account for endianness or buffer overflows.

File star.def:

File star_table.c:

Handlers for individual data types may be created and accessed using token concatenation (" ") and quoting (" ") operators. For example, the following might be added to the above code:

Note that in this example you can also avoid the creation of separate handler functions for each datatype in this example by defining the print format for each supported type, with the additional benefit of reducing the expansion code produced by this header file:

The creation of a separate header file can be avoided by creating a single macro containing what would be the contents of the file. For instance, the above file "star.def" could be replaced with this macro at the beginning of:

File star_table.c:

and then all calls to  could be replaced with a simple   statement. The rest of the above file would become:

and the print handler could be added as well as:

or as:

A variant which avoids needing to know the members of any expanded sub-macros is to accept the operators as an argument to the list macro:

File star_table.c:

This approach can be dangerous in that the entire macro set is always interpreted as if it was on a single source line, which could encounter compiler limits with complex component macros and/or long member lists.

This technique was reported by Lars Wirzenius in a web page dated January 17, 2000, in which he gives credit to Kenneth Oksanen for "refining and developing" the technique prior to 1997. The other references describe it as a method from at least a decade before the turn of the century.

We discuss X-Macros more in a later section, Serialization and X-Macros.

de:C-Programmierung: Präprozessor Programmation C/Préprocesseur C/Compilatore e precompilatore/Direttive C/Preprocesor


text:
Ada Programming/Libraries/Ada.Text IO

is a unit of the Predefined Language Environment since Ada 95.

Description
The package Text_IO is used for simple Input Output (I/O) in text format.

Read a whole line from the console
Ada 2005 has a function  which returns a newly created string containing the whole line:

Get_Line String;

With older Ada generations, you need a little work to get the complete line with one call. The  procedure gets a line of text of as many characters the Item can hold or up to the new_line indicator, whichever comes first. (The new_line indicator's representation is implementation defined.) It has the following specification:

Get_Line (Item: String; Last:  Natural);

To be specific, consider an Item that can hold as much as 80 characters. Let's take two lines to read, one holding less that 80 characters, say 10, the other at least 80, perhaps more. Calling

Get_Line (Item, Last);

will read the first line up to the new_line indicator and consume them; Item's first 10 characters will be filled with the text read, the rest is junk; Last will hold the last filled index.

The next call will read the maximum Item can hold, i.e. 80 characters; the rest of the line (if any) and the new_line indicator remain unconsumed. Thus Last will be. In order to consume the rest of the line, you have to call  again. The result will be like one of the two possibilities above, depending on the remaining line length. If no characters are read (i.e. when the new_line indicator is the only thing left unread),   will hold value.

The following example shows how the complete line could be read:

Ada.Text_IO; Ada.Strings.Unbounded; Get_Line String Ustr Ada.Strings.Unbounded; T_IO Ada.Text_IO; Everything: Ustr.Unbounded_String := Ustr.Null_Unbounded_String; Item     : String (1 .. 80); Last     : Natural; Get_Whole_Line: T_IO.Get_Line (Item, Last);                                       -- * Ustr.Append (Source => Everything, New_Item => Item (1 .. Last)); -- * Get_Whole_Line Last < Item';  -- ** Get_Whole_Line; Ustr.To_String (Everything); Get_Line;

As an exercise, change the calls at (*) to

T_IO.Get_Line (Item (11 .. 20), Last); Ustr.Append (Source => Everything, New_Item => Item (11 .. Last));

and see which values  and   will hold. Which criterium will you then need to exit the loop at (**)?

(This is of course not a very sensible idea to code like this, but as a learning instruction, it's fine.)

Read a whole line from a file
In principle it is the same as in console reading but you have to check for the end of file as well:

Get_Whole_Line Last < Item' T_IO.End_Of_File (File);

End_of_File is always False for console input (except when you manage to enter the implementation defined end_of_file indicator). A well-formed text file (i.e. one created with ) will always hold an end_of_line (and an end_of_page) indicator before the end_of_file indicator (see procedure ).

Generic nested packages
has the following nested packages for input/output of scalar types. The only parameter is the involved type.
 * Decimal_IO
 * Enumeration_IO
 * Fixed_IO
 * Float_IO
 * Integer_IO
 * Modular_IO

Specification
File_Type File_Mode In_File Out_File Append_File Count  0  implementation_defined Positive_Count Count  1  Count Unbounded  Count  0 Field       Integer  0  implementation_defined Number_Base Integer  2  16 Type_Set Lower_Case Upper_Case Create File   File_Type Mode  File_Mode  Out_File Name  String     "" Form  String     "" Open  File    File_Type Mode  File_Mode Name  String Form  String  "" Close File    File_Type Delete File   File_Type Reset File    File_Type Mode   File_Mode Reset File    File_Type Mode  File   File_Type  File_Mode Name  File   File_Type  String Form  File   File_Type  String Is_OpenFile  File_Type  Boolean Set_Input File  File_Type Set_OutputFile  File_Type Set_Error File  File_Type Standard_Input  File_Type Standard_Output File_Type Standard_Error  File_Type Current_Input   File_Type Current_Output  File_Type Current_Error   File_Type File_Access   File_Type Standard_Input  File_Access Standard_Output File_Access Standard_Error  File_Access Current_Input   File_Access Current_Output  File_Access Current_Error   File_Access Flush File   File_Type Flush Set_Line_Length File  File_Type To   Count Set_Line_Length To    Count Set_Page_Length File  File_Type To   Count Set_Page_Length To    Count Line_Length File  File_Type  Count Line_Length Count Page_Length File  File_Type  Count Page_Length Count New_Line  File      File_Type Spacing  Positive_Count  1 New_Line  Spacing   Positive_Count  1 Skip_Line File      File_Type Spacing  Positive_Count  1 Skip_Line Spacing   Positive_Count  1 End_Of_Line File  File_Type  Boolean End_Of_Line Boolean New_Page  File   File_Type New_Page Skip_Page File   File_Type Skip_Page End_Of_Page File  File_Type  Boolean End_Of_Page Boolean End_Of_File File  File_Type  Boolean End_Of_File Boolean Set_Col File  File_Type To   Positive_Count Set_Col To    Positive_Count Set_Line File  File_Type To   Positive_Count Set_Line To    Positive_Count Col File  File_Type  Positive_Count Col  Positive_Count Line File  File_Type  Positive_Count Line Positive_Count Page File  File_Type  Positive_Count Page Positive_Count Get File   File_Type Item   Character Get Item  Character Put File   File_Type Item   Character Put Item   Character Look_Ahead File          File_Type Item         Character End_Of_Line  Boolean Look_Ahead Item         Character End_Of_Line  Boolean Get_Immediate File        File_Type Item       Character Get_Immediate Item       Character Get_Immediate File        File_Type Item       Character Available  Boolean Get_Immediate Item       Character Available  Boolean Get File   File_Type Item   String Get Item  String Put File   File_Type Item   String Put Item   String Get_Line File   File_Type Item  String Last  Natural Get_Line Item  String Last   Natural Get_LineFile   File_Type  String Get_Line String Put_Line File   File_Type Item   String Put_Line Item   String Num Integer_IO Default_Width Field  Num Default_Base  Number_Base  10 Get File    File_Type Item   Num Width  Field  0 Get Item   Num Width   Field  0 Put File   File_Type Item   Num Width  Field  Default_Width Base   Number_Base  Default_Base Put Item   Num Width  Field  Default_Width Base   Number_Base  Default_Base Get From   String Item  Num Last  Positive Put To    String Item  Num Base  Number_Base  Default_Base Integer_IO Num Modular_IO Default_Width Field  Num Default_Base  Number_Base  10 Get File    File_Type Item   Num Width  Field  0 Get Item   Num Width   Field  0 Put File   File_Type Item   Num Width  Field  Default_Width Base   Number_Base  Default_Base Put Item   Num Width  Field  Default_Width Base   Number_Base  Default_Base Get From   String Item  Num Last  Positive Put To    String Item  Num Base  Number_Base  Default_Base Modular_IO Num Float_IO Default_Fore Field  2 Default_Aft  Field  Num1 Default_Exp  Field  3 Get File    File_Type Item   Num Width   Field  0 Get Item   Num Width   Field  0 Put File  File_Type Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Put Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Get From  String Item  Num Last  Positive Put To    String Item  Num Aft   Field  Default_Aft Exp   Field  Default_Exp Float_IO Num Fixed_IO Default_Fore Field  Num Default_Aft  Field  Num Default_Exp  Field  0 Get File    File_Type Item   Num Width   Field  0 Get Item   Num Width   Field  0 Put File  File_Type Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Put Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Get From   String Item  Num Last  Positive Put To    String Item  Num Aft   Field  Default_Aft Exp   Field  Default_Exp Fixed_IO Num Decimal_IO Default_Fore Field  Num Default_Aft  Field  Num Default_Exp  Field  0 Get File    File_Type Item   Num Width   Field  0 Get Item   Num Width   Field  0 Put File  File_Type Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Put Item  Num Fore  Field  Default_Fore Aft   Field  Default_Aft Exp   Field  Default_Exp Get From   String Item  Num Last  Positive Put To    String Item  Num Aft   Field  Default_Aft Exp   Field  Default_Exp Decimal_IO Enum Enumeration_IO Default_Width   Field  0 Default_Setting Type_Set  Upper_Case Get File   File_Type Item  Enum Get Item  Enum Put File   File_Type Item   Enum Width  Field     Default_Width Set    Type_Set  Default_Setting Put Item   Enum Width  Field     Default_Width Set    Type_Set  Default_Setting Get From   String Item  Enum Last  Positive Put To    String Item   Enum Set    Type_Set  Default_Setting Enumeration_IO Status_Error   IO_ExceptionsStatus_Error Mode_Error     IO_ExceptionsMode_Error Name_Error     IO_ExceptionsName_Error Use_Error      IO_ExceptionsUse_Error Device_Error   IO_ExceptionsDevice_Error End_Error      IO_ExceptionsEnd_Error Data_Error     IO_ExceptionsData_Error Layout_Error   IO_ExceptionsLayout_Error File_Type AdaText_IO

Wikibook

 * Ada Programming
 * Ada Programming/Input Output
 * Ada Programming/Libraries
 * Ada Programming/Libraries/Ada
 * Ada Programming/Libraries/Ada.Strings.Unbounded.Text_IO

Open-Source Implementations
Programación en Ada/Unidades predefinidas/Ada.Text IO

title: Ada Programming/Libraries/Ada.Text IO


text:
User:The Visual Rhetoric Collective

'

title: User:The Visual Rhetoric Collective


text:
MATLAB Programming/Psychtoolbox/Version independent scripts

If you have to write code that can be used on various platforms (OS 9, OS X, and windows) you will run into some problems with psychtoolbox. This is due to different versions that run on different platforms and having different procedures for handling the screen.

Using a few scripts that handle these differences, and calling these scripts can make your programs a little more universally accepted.

The scripts listed here will be changing often to match the current versions of the psychtoolbox, and you should check to see if your version is up to date. If you make any changes to the scripts on these pages, please make note of the date of the revision and what you changed, so that users of the scripts will know what was updated.

Scripts and functions
universal way to allow the same program to be run on windows, OS X, and classic mac. This function is set up to allow the same code to be used in the new and old versions of psychtoolbox screen_setup should be called at the beginning of your script. This should be called whenever you want to put what you have drawn on the screen.
 * ptb_ind_screen_setup.m - April 7, 2005 - This script is used to set up the psychtoolbox screen function in a
 * ptb_ind_flip.m- April 7, 2005 -

 * ptb_ind_general_setup.m - July 6, 2005 - Used for other general setup information (directory separation - / or :, left arrow right arrow interpretations, etc)

Examples of use

 * expanding_rectangle.m - April 7, 2005


text:
MATLAB Programming/Psychtoolbox/ptb ind screen setup.m

% ptb_ind_screen_setup.m % % This script is used to set up the psychtoolbox screen function in a % universal way to allow the same program to be run on windows, OS X, % and classic mac. % % Revision History: % RobKohr - April 7, 2005 - First draft

% If there are multiple displays guess that one without the menu bar is the % best choice. Dislay 0 has the menu bar. screens=Screen('Screens');

%if screenNumber is set prior to running this %we will keep that value if not(exist('screenNumber','var')) screenNumber=max(screens); end

v = version; v = str2num(v(1)); osx = 0; oldmac = 0; win = 0;

if(strcmp(computer, 'MAC')|strcmp(computer, 'MAC2')) if(v<6) %classic mode comp_type = 'oldmac'; oldmac=1; else comp_type = 'osx'; osx =1; end else comp_type = 'win'; win=1; end

if(oldmac|win) [window_ptr, window_rect]= Screen(screenNumber, 'OpenWindow', [0, 0, 0]); window = Screen(window_ptr, 'OpenOffscreenWindow', [0,0,0], window_rect); blank = Screen(window_ptr, 'OpenOffscreenWindow', [0,0,0], window_rect); else [window, window_rect]= Screen(screenNumber,'OpenWindow', 0, [], 32, 2); end


text:
MATLAB Programming/Psychtoolbox/ptb ind flip.m

% ptb_ind_flip.m % This function is set up to allow the same code to be used in the % new and old versions of psychtoolbox % % screen_setup should be called at the begining of your script. This % should be called whenever you want to put what you have drawn % on the screen. % Revision History: % RobKohr - April 7, 2005 - First draft if(osx ==1) Screen(window,'Flip'); else Screen('CopyWindow', window, window_ptr); Screen('CopyWindow', blank, window); Screen(window_ptr, 'WaitBlanking'); end


text:
MATLAB Programming/Psychtoolbox/expanding rectangle.m

% expanding_rectangle.m % % draws an expanding rectangle on the screen % % Revision History: % RobKohr - April 7, 2005 - First draft

%This requires two scripts: ptb_ind_screen_setup.m and ptb_ind_flip.m

clear all;

%set the screen up. This should be used at the after clear all ptb_ind_screen_setup;

shape_rect = window_rect/2;

tic while( (shape_rect(3)< ...       window_rect(3)) & ...        (shape_rect(4)< ...        window_rect(4))...        ) if(toc>10) break; end %expand the size of the shape shape_rect = shape_rect*1.01; %draw shape offscreen Screen(window, 'FillRect', [255, 0, 0], shape_rect); %flip copys what you have drawn to the screen ptb_ind_flip; end clear screen;


text:
Talk:Ada Programming/Mathematical calculations

automated job ?
I was considering writing an automated job for the source code translations - but now I wonder if there is one already and I am too late ;-). --Krischik 15:45, 7 Apr 2005 (UTC)

program for inserting the templates?
If you mean a program for inserting the templates - I have writen an ugly emacs script but it is full of bugs. It helps me in doing the translation but I still have to manually edit the page and load it in emacs with mozex (a mozilla extension). Of course the better would be to have a bot that downloads the page and performs the necessary conversion, too much for me. ManuelGR 22:10, 13 Apr 2005 (UTC)

Yes, using AdaCL
I was considering an AdaCL script and down/upload is not an issue since the aim is for "working demos" and they need real and tested source codes anyway. --Krischik 09:10, 15 Apr 2005 (UTC)


text:
Talk:Blender 3D: Noob to Pro/Modeling a Gingerbread Man

In the beginning
Put the new vertices on the gray line? What gray line??

Bryan

"Then, select the vertices in the middle of the bone and press GKEY for grab and put it down like this."

Like what?? Please provide the pictures... We are all beginners here, how are we suppose to know what you mean by 'like this'??

Stanley, yet another frustrated beginner.

 * Don't worry guys, here you will see all those nice missing pictures in the future. In the meantime you can check other finished Blender tutorials.--Popski 11:52, 21 Apr 2005 (UTC)

Illustrations
For those who need illustrations like myself, go to this website: http://www.blender.org/modules/documentation/htmlI/book1.html

Then, scroll down to 'Table of Contents' and click on 'Your first animation in 30+30 minutes'. This guide you in building your gingerbreadman, but with more illustrations. Enjoy your learnings!

 * That link seems to be invalid now. However, Googling for the name, it seems that the gingerbreadman tutorial is also available here: http://download.blender.org/documentation/htmlI/c1208.html --Slapout 21:26, 14 July 2005 (UTC)

 * That one looks dead also. Here's new link http://docs.huihoo.com/blender/user-guide-2.3/ch04.html found from Google -- Roli

Added a simple graphic for the meantime. It should look better, but at least people will be able to understand what to do.

Added images
I added some images and then changed the text to be consistent with what was produced. A speherical head just didn't make sense for a gingerbread man. --Darkonc 11:33 6 Oct 2005 (PDT)

Smoothing the head
The text said to smooth the head first but the picture showed the body smoothed first. It doesn't matter which you smooth first, so I changed the order in the text. Also, the intro description says this page will cover basic lighting, but it doesn't. Should the page be marked as incomplete? 68.126.1.251 20:23, 30 October 2005 (UTC)

Redundant tutorial (double)
This feels just like the man produced in the earlier steps, with the exception that this one feels easier... Replace? 81.224.183.67 20:27, 22 March 2006 (UTC)

I think the original gingerbread man tutorial also included armature and simple animation. 69.91.82.27 22:41, 27 March 2006 (UTC)

Yeah, i totally agree. This didnt bring any new knowledge inn. Its just plain simple, and a lack of progress.

This could become an advanced tutorial in modeling, if the gum drops and the way to texture them, as well as adding bones, and how to add/remove mesh areas from bones they don't belong too were added. Pearts (talk) 23:21, 8 July 2010 (UTC)

This tutorial doesn't seem to be very different from modelling a simple person 1 and 2.

Improper Modeling Technique
The head should not be a separate object from the body. Why don't we scrap this tutorial altogether?

 * I may just be a noob, but all these reasons for removal sound good to me. Didn't introduce anything new really. Go ahead! Remove! Or add as a footnote to the simple man modelling.

Great texture button screen shots
I think the great screen shots of the texture panels should be added to the volcano tutorial. Pearts (talk) 23:22, 8 July 2010 (UTC)

2.78a
Hello, in the 2.78a version the Subsurf function is placed in another area of the screen. Please show where to click, if you want to find the modifiers tab. OliverBear (discuss • contribs) 09:06, 25 July 2018 (UTC)


text:
Gujarati/Gender

Gujarati is a language with grammatical gender. There are three genders: masculine, feminine, and neuter.

Nouns can often, but by no means always, be identified as to their gender according to their ending. These same gender-linked suffixes are used to make adjectives, verbs, and even adverbs agree with nouns in Gujarati sentences.

He તે She તેણી Man માણસ Woman સ્ત્રી Husband પતિ Wife પત્નિ Mother માતા Father પિતા Brother ભાઇ Sister બહેન Boy છોકરો Girl છોકરી

title: Gujarati/Gender


text:
User:Chrisjwmartin

chrisjwmartin@wikipedia

title: User:Chrisjwmartin


text:
Talk:Physics Study Guide/Periodic Motion

formula and solutions for 2 problems

1.)
 * If a spring (k=1000n/m)is compressed .80m and it is released launching a 4.0 kg block across the floor, how fast will the block be traveling when it leaves the spring? ignore friction and air resistance

2.)
 * If the coefficient of friction between the floor and block is .45, how far will the block slide?


text:
J2ME Programming/Qualcomm Brew and J2ME

Introduction
Brew is Qualcomm's mobile operating system for mobile handsets. Prior to version 2.0 Qualcomm did not offer J2ME for their platform. Usually, to determine the optional APIs(JSRs) you end up tracking by JVM Vendor and version on device.

Brew 2.0

 * Supports MIDP 2.0 CLDC 1.0 via on air download of JVM, not fully enabled out of box.

Brew 2.1(True Brew)
The Esmertec JBed CLDC is one of the JVM solutions used by OEMs for Brew. Here I have listed the minimum known common J2ME components as you will have to track by JVM Vendor and JVM version on device to determine the optional APIs(JSRs) that you can access on that device.

 * Supports MIDP 2.0 and CLDC 1.0 fully enabled
 * WMA JSR 120
 * MMAPI JSR 135

Trademark Notices
J2ME, Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All other Trademarks are property of their respective owners.

title: J2ME Programming/Qualcomm Brew and J2ME


text:
User:Artic

Artic a.k.a Robert Engelhardt

Education
Robert holds a bachelors degree in Computer Science, which essentially means he spends entirely too much time in front of a computer. This doesn’t necessarily mean he knows how to use a computer better than anyone without such a degree, it just means he knows a few more technical terms he can shout between curses as everything goes wrong. Robert also nearly held a minor in psychology, but decided against that rout when it meant that he would have to stay on an extra semester to get it.

Hobbies
Other than his interest in beekeeping, Robert also enjoys SCUBA diving, gardening, cooking and computer programming.

Beekeeping
Robert has been interested in bees and beekeeping for a while but has not yet had the ability to actually keep bees until this year (2005). Right now his intentions are to remain a hobbyist, but he would like to introduce the world to such an entreating and possibly even profitable hobby by beginning a Beekeeping Wiki Book and adding to other such Wikis.

Cookbook
In some degree of relation to beekeeping, Robert tends to (or wants to) post recipes in regards to honey; after all it is a spectacular substance that he believes is quite underrated.

One recipe Robert enjoys particular is Honey Taffy, why not give it a try.

Contact Info
Robert can be contacted via e-mail at rheone at  gmail  dot  com

Special Thanks
Robert is not known for perfect grammar, or spelling and he finds it hard enough to talk about himself in 3rd person, but continues to do it in this profile regardless. Either way, Robert is aware of many of his imperfections, and if you become aware of any of them please correct them. Robert thanks you :)

title: User:Artic


text:
J2ME Programming/PalmOS and J2ME

Introduction
Palm through its PalmOS operating system for PDAs does not supply JVMs packaged with its OS. However, within the different platforms of PalmOS several JVMs have been provided.

68K

 * MIDP 1.0
 * CLDC 1.0
 * JVM supplied by Sun as MIDP4Palm

PalmOS Garnet
JVMs provided for the Garnet 5.2 and Garnet 5.4 devices:
 * MIDP 2.0
 * CLDC 1.1
 * Web Services JSR 172
 * PIM JSR 75
 * FileConnection 1.0(GCF)
 * JVM is IBM's WEME(known by project name of J9)

Typical devices:
 * Treo 600
 * Treo 650
 * Tungsten C
 * Tungsten T3
 * Tungsten E
 * Tungsten E2
 * Tungsten T5
 * Zire 72
 * Palm TX

Conclusion
While JVMs are not packaged with PalmOS directly, we can still determine the MIDP/CLDC versions and optional apis by tracking by a combination of device and by JVM OEM.

Trademark Notices
J2ME, Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All other Trademarks are property of their respective owners.

title: J2ME Programming/PalmOS and J2ME


text:
J2ME Programming/IBM J9 WEME

Introduction
WEME stands for Websphere Everyplace Micro Environment which is another name for the IBM J9 VM technology. This technology spans various CPU platforms such as ARM, SuperH, PowerPC, Xscale, X86, and MIPS. Found deployed on PocketPC, QNX, Linux OSE, VxWorks, MontaVista Linux, Qualcomm Brew, Nokia's Series80(SymbianOS) and uiTron.

CLDC Implementation

 * MIDP 2.0
 * CLDC 1.1
 * JTWI

CDC Implementation

 * CDC
 * Foundation Profile
 * Personal Profile
 * JNI

Conclusion
The information provided can be used to determine what optional APIs are accessible on diverse platforms that use J9/WME such as the embedded Linux flavours, PocketPC, Qualcomm Brew, PalmOS, and etc.

Trademark Notices
J2ME, Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All other Trademarks are property of their respective owners.

title: J2ME Programming/IBM J9 WEME


text:
Instructional Technology/Learning Management Systems/Universal Design

What is Universal Design?
Universal Design seeks to make instruction available and accessible to all learners. Limitations for learning should not present themselves due to differences in learning style, ability, or background.

Universal Design does not support a one-size-fits all philosophy. To the contrary, it emphasizes that learning opportunities need to be flexible to meet diverse needs. If materials are designed for universal use, they will not need to be altered for use. Differentiation will occur naturally.

Research is being completed to further develop an understanding of and practical uses for Universal Design. The Center for Applied Special Technology is focusing on brain research and multimedia technology as research avenues that will further comprehension for designing effective instruction for all people.

Origins of Universal Design
Universal Design originated in the field of architecture. It seeks to meet the needs of a diverse public by making buildings accessible to all users. To ensure that this occurs, the fundamentals of universal design  must be incorporated into the design process from the initial stages of the project.

Universal design should benefit more than one group of users. For example, curb ramps on sidewalks aid people in wheel chairs, people pushing strollers, and people riding bicycles.

Principles of Universal Design
Universal-design principles emphasize equitable use, flexibility, and adaptability. These standards are met by creating materials with the following qualities:

 * Simplicity: Materials should be simple, intuitive, and easy to comprehend, regardless of the user's prior knowledge or skill set.

 * Clarity: Materials should provide clear directions, questions and expectations.

 * Accessibility: Materials should be usable with minimal physical effort.

 * Legibility: Materials should be sized spaced for ease of viewing.

 * Positive: Materials should minimize accommodate unintended actions or errors with feedback.

 * Supportive: Materials should provide built-in supports, such as help, multi-modality, and faculty-contact information.

For more information on the principles of Universal Design visit either of the following web sites: Center for Universal Design, NC State University Universal Instructional Design, Ohio State University

Jakob Nielsen
Nielsen is a fore runner with regard to making things available to people. His research focuses on universal design, usability, and accessibility for the Internet. He has developed Web design guidelines that serve as a checklist for whether or not a website possesses user centered design. He has patents on 76 different items, most are different things that can be used to make the Internet more accessible to a wide range of people with special needs.

Usability
Five attributes can be assessed to determine the ease of interface usage.

 * Learnability: How easy is it for users to accomplish basic tasks?

 * Efficiency: How quickly can they perform tasks?

 * Memorability: How easily can they re-establish proficiency?

 * Error: How many errors on the site? What occurs if an error is made?

 * Satisfaction: How pleasant is it to use the site?

Web Accessibility
The World Wide Web Consortium(W3C) develops and maintains the protocols used on the Web to insure interoperability to promote universal access. The W3C's Web Accessibility Initiative (WAI) has proposed guidelines for all Web authors. Designing a well-organized Web site helps visitors navigate through the information presented. Some web development packages, such as Macromedia Dreamweaver, now possess the capability to preview page designs as they would look in different web browsers. Test your Web site with a variety of Web browsers, and always test your pages with at least one text-based browser and with multi-media browsers with graphics and sound-loading features turned off. This way you will see your Web resources from the many perspectives of your users. Also, view the resources at your site using a variety of computing platforms, monitor sizes, and screen resolutions. Make sure you can access all of the features of your Web site with the keyboard alone, simulating the experience of Web users who cannot use a mouse. Make use of accessibility testing software such as A-Prompt, Bobby, and WAVE; they will point out elements that could be inaccessible. Then, revise your HTML to make your site accessible.
 * Maintain a simple, consistent page layout throughout your site.
 * Keep backgrounds simple. Make sure there is enough contrast.
 * Use standard HTML.
 * Caption video and transcribe other audio.
 * Make links descriptive so that they are understood out of context.
 * Include appropriate ALT/LONGDESC attributes for graphical elements on your page.
 * Include descriptive captions or other options for making graphical features accessible.
 * Provide alternatives for content in applets and plug-ins.
 * Condensing text content
 * Spell-check and proof read
 * Locate and correct broken links
 * Include contact information and copyright notice
 * Provide contact information
 * Provide URL redirection when pages relocate

 Return to Instructional Technology Return to Learning Management Systems


text:
User:Phoenix-forgotten~enwikibooks

 * Me on en:Wikipedia

The above licensing statements have been modified from w:Template:DualLicenseWithCC-BySA-2.0 and w:Template:WikimediaAllLicensing, respectively. 22:07, 7 Apr 2005 (UTC)

title: User:Phoenix-forgotten~enwikibooks


text:
Instructional Technology/Project Based Learning

Project Based Learning Definitions

The Buck Institute for Education (BIE) defines Project based learning (PBL) as "a systematic teaching method that engages students in learning knowledge and skills through an extended inquiry process structured around complex, authentic questions and carefully designed products and tasks."

PBL is not a new idea. It has roots that go back to the late 60's and 70's with open classroom theory and industrial education. In this day and age where teachers need to teach multiple things at various levels, a project based approach makes sense for a majority of teachers. PBL promotes ways to introduce a wider range of learning activities into a normal classroom setting. If done correctly, learners will take on the responsibility of the learning and discover connections to other leaning opportunities around them. PBL also takes into account the learners own background and uses their prior experiences to make the learning more concrete.

PBL Benefits to Students

When PBL is used in the classroom it makes students switch from their usual mindset. The students are presented with a real life problem to work through to solution. Many times they are required to come up with a few plausible fixes for a problem and told to justify which one they find to be the best. Students that go through this process come away with a more developed knowledge of subject matter, higher levels of confidence and greater technical and collaborative skills. Studies have shown that students who complete a course enriched by using PBL are more likely to develop higher levels of critical thinking and problem solving skills than their traditional classroom setting counterparts. Leadership and collaborative skills also seem to be higher when PBL lessons are used.

According to the Northwest Regional Educational Laboratory benefits of project-based instruction include:

 * Preparing learners for the workplace by exposing them to competencies such as collaboration, project planning, decision making, and time management
 * Teachers often see increased motivation through higher levels of attendance, participation, and homework
 * Learners have greater collaborative opportunities to construct knowledge
 * Increases in social and communication skills
 * Learners are able to see connections between disciplines
 * Increased problem-solving skills
 * Increased learner self-esteem
 * Learners use individual learning strengths and diverse approaches to learning
 * Provides real-world experiences to learn and use technology

Criteria For PBL Programs

BIE published a list of distinguishing criteria of PBL. It appears to be a pretty good list and points out what PBL should encompass. Here is what BIE's list looks like:

 * Put the students at the center of the learning process by recognizing their inherent “drive to learn.”
 * The project work is central rather than peripheral
 * Stress issues that lead students to in-depth exploration of topics
 * Require the use of essential tools and skills, including technology, for learning, self management, and project management
 * Specify products that solve problems, explain dilemmas, or present information generated through investigation and research.
 * Include multiple products that permit feedback
 * Use performance-based assessments that communicate high expectations, various skills, and rigorous challenges
 * Encourage collaboration through large or small group student-led presentations and class project result evaluations
 * A definite beginning, middle and end
 * Real world problems

A typical PBL project for high school students might be to design a future school. In doing this, students would be introduced to various advanced math and engineering concepts. An elementary project might consist of building and racing electric cars to learn lessons about energy and efficiency. All projects should give students hands-on, serious, authentic experiences.

Using Multiple Intelligences in Project Based Learning

John Dewey theorized that learning should not only prepare one for life, but should also be an integral part of life itself. Simulating real problems and real problem-solving is one function of project-based learning. Students help choose their own projects and create learning opportunities based upon their individual interests and strengths. Projects assist students in succeeding within the classroom and beyond, because they allow learners to apply multiple intelligences  in completing a project they can be proud of. Our society values individuals who can solve problems creatively, using multiple strengths, so why shouldn't we encourage students to do the same?

However, traditional teaching strategies tend to focus on verbal/linguistic and mathematical/logical intelligences alone. This can create frustration for people who are comfortable with less traditional learning modalities, such as kinesthetic, visual, interpersonal, intrapersonal, musical, or naturalist. Project-based learning allows the teacher to incorporate numerous teaching and learning strategies into project planning and implementation. Assisting learners in developing all of their intelligences will make learning a part of living, not just a preparation for it.

The Role of Technology

Without computers PBL would be very different and much more difficult. Learners use word processors and databases to help them categorize, analyze and keep track of data. They use the internet, email and online forums for research, communication and collaboration with the outside world. The collaboration element has probably the biggest benefit to any learner. It allows them to talk to numerous experts about a variety of subjects. If used correctly, then learners share information with each other and in doing this, further their own learning. Without these technological advancements the learners working knowledge base would not be as plentiful.

Added, technology PBL can enhance the relevance of classroom projects, and foster multidisciplinary exploration, where various activities and subjects are explored and integrated in the project. For example, concepts from Maths, Fine Arts, and Physics can be applied to projects in architecture and design. The collaborative approach to designing PBL instruction can enhance motivation and achievement, as well as promote active learning and effective communication.

PBL Research

Regie Stites of SRI, International, wrote that researchers have investigated the impact of project-based learning (PBL) in a wide variety of educational contexts ranging from early childhood education to medical and legal education.

Stites mentions that the points below "should be kept in mind when considering the findings of research that compare the relative impacts of PBL and more traditional learning activities on student achievement":

 * Project-based learning is typically implemented in the context of comprehensive educational reforms and therefore it is difficult to isolate the effects of PBL on student learning.
 * Project-based learning and closely related instructional strategies (such as problem-based learning and the project approach) are implemented differently in different contexts and therefore it is difficult to compare results across cases.
 * Project-based learning is linked to a theory of learning (constructivism) that entails a shift in learning objectives (stressing higher order thinking skills and performance-based, authentic assessments) and therefore standardized achievement tests may not be the best measures of PBL's impact.

The online magazine Edutopia published an article in 2001 listing several of the studies that has been completed in the area of project-based learning. The studies in the article shows that PBL can improve students’ skills in the areas of communication, teamwork and problem solving and improve in core academic areas.

Return to Instructional Technology. Return to Learning Management Systems.


text:
Instructional Technology/Instructional Transaction Theory (ITT)

Instructional Design Based on Knowledge Objects

Based on a chapter by Merrill in Reigeluth's Green Book.

What is ITT
Merrill introduces the Instructional Transaction Theory (ITT) as an attempt to provide more precision to designing instruction for different kinds of instructional outcomes and also as an attempt to make automated instructional design possible. As a synthesis oriented theory, ITT emphasizes the integration of the components of Merrill’s Component Display Theory (CDT) into instructional transactions. An instructional transaction is all of the interactions necessary for a student to acquire a particular kind of knowledge or skill.

By describing instructional strategies as algorithms or transactions used for manipulating data structures or knowledge objects, Merill aims to provide a more precise description of the different kinds of instructional transactions required for different kinds of instructional outcomes. Building appropriate instructional transactions into instructional development tools will enable automating certain steps of the instructional design process and will increase efficiency. ITT extends Gagne's conditions of learning and Merrill's Component Display Theory so that the rules and principles involved are enough to drive automated instructional design – a computer-based system that creates instruction based on instructional parameters input by designers.

Merrill's Instructional Transactions
An important element of ITT is called a knowledge object. Knowledge objects provide a way to represent knowledge and are used to build a set of transaction shells (instructional algorithms) to teach it (Merrill, 1996; Merrill, 2000). The transaction shells consist of rules for selecting and sequencing knowledge objects. ITT integrates these components into instructional transactions which are made up of all the interactions necessary to acquire a particular kind of knowledge or skill.

Merrill presents instructional goals for the IDENTIFY, EXECUTE, and INTERPRET transactions (the first three of his 13 instructional classes). The referenced example is an open-ended learning environment designed to teach technicians how to install or remove a double seat valve in a pipe. Merrill describes the learning environment in terms of the instructional goal it is designed to promote, the knowledge structure required by the learning environment, the general simulation engine which operates on this knowledge structure, and the learning activity of exploration. He also describes the three instructional transactions of IDENTIFY, EXECUTE, and INTERPRET. For each transaction, the instructional goal, the knowledge structure, the presentation of information to the student, the practice with feedback, and the learner guidance are presented.

The component methods of ITT illustrate a possible increase of precision with which instructional strategies can be described in the form of knowledge objects. The instructional strategies can be described as methods for manipulating the elements of knowledge objects. They enable the specification of executable knowledge, that is, they enable both tutorial and experiential instruction from the same knowledge representation.

Personal Reflections on ITT
I believe that Instructional Transaction Theory (ITT) has enormous potential, but I am convinced that it is a method that can only be leveraged by the use of technology. A little while ago, I attempted what I thought would be a modest project using ITT. I decided to develop a blueprint for how I could teach my students to troubleshoot computer printers and printer problems in the High School computer lab. However, the many “what if” scenarios quickly became overwhelming... so many conditions, so many combinations leading to different outcomes, so many different kinds of printers. Even if I had fully developed the architecture or blueprint, it would have been so complex that no one could have used it without the help of technology. In the end, I realized that computers are much more adept than people at keeping track of the large volume of properties and conditions and running and remembering all the “what if” calculations.

I know that there are object-based, database-driven websites out there that have thousands of knowledge objects, and I know that there has been work done by the Army on how the Army can develop an object-based, “chunky” system for writing and publishing instructional doctrine. ITT makes perfect sense to me, and I think that ITT could transform instruction and instructional design.

When knowledge objects and database structures finally become standardized, we will possess the potential to have reusable, updatable components of instruction that move at the speed of the Internet. And, if instructional designers would share and allow their work to be treated as “objects” that are publicly available, then it would seem easy to generate personalized, adaptive instruction in a relatively short period of time and at minimal cost. However, there is still a lot of research and practice necessary to enable automating certain steps of the instructional design process.


text:
Instructional Technology/Web Content Accessibility Guidelines

Web Accessibility for Disabilities
"Accessible Design" calls for design that includes the needs of people whose physical, mental, or environmental conditions limit their performance. "Universal Design" aims to extend standard design principles to include people of all ages and abilities, but remains at the level of generality—so does not address all the specific needs of any particular disability.

But even for people who do not have any specific physical or mental characteristics that affect computer use, it has been found that adopting universal design principles can reduce fatigue, increase speed, decrease errors, and decrease learning time for all users. In many ways, universal design addresses the larger issues of usability making things easier for everyone.

General Principles Be Simple and Intuitive Minimize Errors Avoid Side Effects
 * Allow for Flexibility
 * Provide choices in features and ways that tasks can be accomplished
 * Accommodate right- and left-handed use
 * Allow the user to customize settings whenever possible
 * Keep in mind that people may be using adaptive technologies
 * Do not design something differently from user expectations just to be different
 * Eliminate unnecessary complexity
 * Provide feedback
 * Provide warnings
 * Build fail-safe features when possible
 * Do not establish patterns when you want people to pay attention
 * Redundancy provides flexibility for different user preferences, system configurations, or user abilities. This can be accomplished by using more than one way to represent, display, and enter data, such as:
 * using both a beep and a menu bar flash to notify a user of an error using text to label images
 * redundantly allowing a user to issue commands by typing or selecting something with a pointer
 * Side effects should be avoided because they cause particular problems for novice users and disabled users who may have difficulty detecting or correcting certain types of side effects.

508 Guidelines

W3C guidelines

Technologies available

Return to Instructional Technology.


text:
J2ME Programming/Esmertec Jbed

Introduction
Esmertec's Jbed JVM technology is implemented on multiple areas within the J2ME Platform ecological system.

CLDC
See on CPUs such as ARM, Intel StrongArm, Intel XScale, TI OMAP, and C166 and on OSes such as Nucleus, AMX, Linux, REX, RTK, OSE, and RTXC.
 * MIDP
 * Jbed 3
 * MIDP 1.0
 * CLDC 1.0
 * Jbed 4(Jcap)
 * MIDP 2.0
 * CLDC 1.0
 * JTWI support
 * Jbed Advance
 * MIDP 2.0
 * CLDC 1.1
 * JTWI support
 * 3D Graphics JSR
 * PIM JSR 75
 * IMP
 * CLDC 1.0 or CLDC 1.1
 * IMP 1.0
 * WMA

CDC
Seen on CPUs such as ARM, MIPS, SH3, SH4, PowerPC, and x86 and on OSes such as winCE, PocketPC, Linux, Qtopia, Unix, and VxWorks.
 * CDC 1.0
 * Personal Profile 1.0
 * Personal Basis Profile 1.0
 * Foundation Profile 1.0
 * RMI Optional Package 1.0
 * JDBC Optional Package 1.0

LGE

 * LGE G7100
 * User Agent declares it is MIDP 2.0; however it rejects MIDP2 Jad files
 * By using Class.forName some MIDP2 classes can be seen to be present
 * MIDP 2
 * Pre-compiles Jars when they have been downloaded, so they are not stored in standard bytecode on the device
 * This process can fail

 * LG C1200
 * LG C1500
 * LG F2100
 * LG F9100

Sendo

 * Sendo M570 MIDP2

Siemens

 * Siemens CL75 MIDP2
 * Siemens ST60 MIDP1

Philips

 * Philips Fisio 535 MIDP2

Conclusion
Esmertec Jbed lacks some fundamentals in the date implementation on HTC mobiles. Thus makes the implementation useless for most business applications. If this is due to bad hardware or Esmertec Jbed is still unknown.

Trademark Notices
J2ME, Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.

title: J2ME Programming/Esmertec Jbed