text:
Wikiversity and Wikibooks services

Wikiversity strives to provide education-related services to Wikimedia sister projects.

Service activities in support of Wikibooks
It is natural for some Wikiversity participants to look to Wikibooks for online textbooks. It is natural for some Wikiversity projects to contribute to the development and improvement of textbooks. This does not mean that the Wikibooks and Wikiversity projects are in competition or in a state of conflict. It simply means that some Wikiversity Learning Projects will lead to improvements in textbooks at Wikibooks and some Wikiversity participants will make use of textbooks at Wikibooks to facilitate the attainment of their educational goals. This synergy is a win-win situation for Wikiversity and Wikibooks. There should be links from Wikiversity to every textbook at Wikibooks and a standing invitation for Wikiversity participants to both use and help improve those textbooks.

An instructor assigned a class of students the task of working on the Human Physiology textbook at Wikibooks. This is an example of "learn by doing". All Wikiversity departments can promote similar improvement drives for Wikibooks.

Linking a Wikibooks textbook module to a Wikiversity project
"Template:Wikiversity" is the name of the template for linking Wikibooks pages to related pages at Wikiversity. Page creation templates used for initializing School, Division, Department and Learning resource pages at Wikiversity include a section for linking directly to relevant resources at Wikibooks.

Aligning Wikibooks and Wikiversity
This section needs some ideas and interlinks between v: and b: complimentary projects. Please add some:
 * Wikiversity places for b:Subject:Class projects can be created
 * Contrast and compare b:Wikibooks:Categories and Categories

title: Wikiversity and Wikibooks services


text:
Wikiversity:Review board

Note: This page contains some suggestions for the review board system detailed at beta.

The role of "experts" as Wikipedia editors has always been controversial. Often, the people who know the most about a topic are advised not to edit articles about that topic because of the danger of introducing personal biases. Well-documented and objectively-verifiable facts are given preference over expert opinion. While Wikiversity encourages the recognition of biases, Wikiversity also wants to encourage the participation of experienced educators who will share their expertise within the Wikiversity community. In order to facilitate the constructive utilization of expert knowledge that exists within the Wikiversity community, Wikiversity can develop a new type of wiki functionary, the "referee". Wikiversity referees can be particularly useful in several roles:
 * 1) trusted advisors for students
 * 2) trusted editors for guiding the community towards satisfactory outcomes of content disputes
 * 3) facilitators of a formal peer review process for original research
 * 4) liaisons for facilitating interactions between Wikiversity and professional educators and researchers outside of Wikiversity

Trust
In order for Wikiversity to function efficiently as a meeting place for learners and experienced teachers, it is important that Wikiversity have a system that will allow participants to know something about the backgrounds of people they interact with at Wikiversity. As "functionaries" with special responsibilities, Wikiversity referees need to be subjected to a special level of scrutiny in order to generate and sustain trust within the Wikiversity community. Wikiversity referees need to have a public record of constructive activity within Wikiversity. This public record depends on the record of page edits that exists in the "history" of each wiki page. If a Wikiversity participant makes useful edits and has constructive interactions with other members of the community, their edit history will reflect their service to the community. However, it is cumbersome to review the edit history of a wiki editor. Wikiversity needs a systematic way to convert edit histories into evaluations of potential referees. How does a wiki deal with this sort of problem?

Wikipedia has developed a special subset of wiki editors: administrators. A Wikipedia administrator is a "trusted member of the community" who has undergone an explicit peer-review by the community. Administrators are experienced wiki editors and are expected to have knowledge of the community policies that regulate how the wiki works. Wikiversity, like all WikiMedia projects, needs administrators (here we call them "custodians"). However, when it comes to questions about article content, custodians are no different from any other Wikiversity editor. Being a custodian/administrator for a wiki indicates a certain amount of expertise about that wiki, but says nothing about expertise in any other area.

Peer review of referees
In addition to custodians/administrators, Wikipedia has other "functionaries" who perform special tasks (for Wikiversity functionaries, see Support staff). A Wikiversity referee is a member of the community who makes a special commitment to share their education-related expertise with the Wikiversity community. The special commitment includes submitting to a peer-review process by which the community openly documents the past history of the referee in such a way that it becomes relatively easy for all members of the community to know if the referee has expertise in particular subject areas that are of interest to the Wikiversity community. As for other Wikiversity functionaries, being a Wikiversity referee is not an "honor", it is a commitment to perform special tasks for the community. In particular, Wikiversity referees will be called upon for help with those tasks that require expert knowledge about a subject area within Wikiversity.

Expert opinion about wiki content
Wikipedia has always had to deal with simple vandalism and more sophisticated "jokes" and falsifications. Persistent problems are met by blocking users from editing and protecting pages from being edited. Sometimes "spoof" articles are added to Wikipedia that pass the casual inspection of vandalism patrollers. It takes an expert to spot a good spoof. Wikiversity needs experts in all topic areas who can provide informed opinion when there are disputes or uncertainty about Wikiversity content. Wikiversity referees have the special obligation of recognizing spoofs and frauds and explaining to non-experts how to understand that specific Wikiversity content is bogus.

Ambassadorial function
Wikiversity is devoted to exploration of how to use the wiki user interface to promote learning. While exploring new ways of learning, Wikiversity seeks to have constructive relations with the "outside world" of more conventional educational institutions. Wikiversity tries to provide educational resources to the world and also provides a platform by which educators and researchers from all around the world can interact. Many working professionals cannot commit their time to projects unless they trust the people they are working with. Wikiversity does not use a standard system of academic credentials, so outside professionals face a problem in knowing if they can have a professional interaction with members of the Wikiversity community. The process by which Wikiversity openly evaluates the performance of Wikiversity referees provides a system for designating trusted members of the Wikiversity community with expert knowledge in certain topic areas. Wikiversity referees can function as ambassadorial contacts for outside professionals seeking to build collaborative projects with Wikiversity.

Peer review of original research
Conducting original research is not the main mission of Wikiversity, but unlike the long-standing policy of Wikipedia, original research is not excluded from Wikiversity. Any original research that arises within Wikiversity must be clearly identified as such and subjected to formal peer review. The Wikiversity peer review process must be entirely transparent and openly conducted in wiki format. Wikiversity referees can act to facilitate and guide the Wikiversity community as it reviews original research results within Wikiversity.

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

title: Wikiversity:Review board


text:
Wikiversity talk:Review board

Note: the early discussions of this page were imported from the Wikimedia meta-wiki and were about an earlier version of the page that used the term "faculty" rather than "referee".

discussion from the meta-wiki
Original research In the current version of the Wikiversity proposal, "conducting research and publishing results" remains as part of the stated mission of Wikiversity. I think the clear intention of the proposal is that Wikiversity support and fosters scholarly “secondary research” (literature reviews). However, the current proposal also says, "Whether or not Wikiversity will host original research or secondary research is still the subject of debate." If Wikiversity allows original research then special effort will have to be made to deal with crank theories and the problem of "original research spam". I think it is safe to say that original research will only exist within Wikiversity if a policy framework can be developed by the community to deal with the potential problems of original research. In Faculty club and Primary research I have tried to sketch a system by which Wikiversity might be able to adopt a "some original research" policy. In my view, the goal would not be to make original research a priority within Wikiversity, but it would be useful for the educational mission of Wikiversity if there were a system that allowed some original research, particularly in special subject areas such as the study of how wiki communities function. --JWSurf 03:46, 22 June 2006 (UTC)

But what is a faculty member?
I don't see exactly what a faculty member should be at the Wikiversity. We have teachers, but they can just as well also be learners in different subjects.

I introduced the idea of a Teaching ring as a group of people who teach on a particular subject.

Faculty clubs in the Real World (tm) are exclusionary and make the members feel good because they are on the inside. What would the purpose really be in the Wikiversity? We can have Research rings and Teaching rings and Learning rings. The question of trust, as you have noted, must be addressed. But we are not granting professorships here, we are in the business of open education. --WiseWoman 11:56, 2 July 2006 (UTC)

"exactly what a faculty member should be" within Wikipedia. If Wikiversity does eventually allow some original research then Wikiversity will need to deal with the problem of sorting "crank" theories from valid research efforts. At Wikipedia, editors with expert knowledge in various subject areas are informally relied upon to spot bogus content and remove it (example of a bogus Wikipedia article that took 4 months to remove). Such an informal system is adequate for Wikipedia because all content at Wikipedia either cites verifiable sources or it can be deleted....even a non-expert can often look at cited sources and decide if Wikipedia content is verifiable.

The main function of a Wikiversity faculty member will be to provide the skills of an expert to the task of sorting "good" content from "bad" content. It would be possible for Wikiversity to rely on the same informal system that exists at Wikipedia and not create a special "functionary" to deal with "crank" content that could be confused with meaningful original research. However, I think having a formally selected group of functionaries to sort "good" content from "bad" content at Wikiversity is a reasonable approach to dealing with problems that will arise from allowing some original research content at Wikiversity.

As is mentioned above, the terms "faculty" and "faculty club" have established connotations. By using these terms at Wikiversity, there is a risk of people jumping to conclusions about what a Wikiversity faculty member is. However, groups of wiki "functionaries" do not "feel good because they are on the inside". They feel good because they apply their experience to the task of performing specific duties for the community, duties that the community has trusted them to perform.

"we are not granting professorships here" <-- Having a group of trusted functionaries called "faculty members" has nothing to do with professorships. I used the term "faculty member" because I was thinking of a formal system within Wikiversity that would include experts for various subject areas. Many universities find it useful to have divisions such as Social Sciences, Engineering, Law, Medicine, Fine Arts. Universities can have faculty members who are recognized as experts within a particular domain of study such as the "Faculty of Natural Sciences". I think it would make sense for the Wikiversity community to have "faculty members" for each subject area in which Wikiversity participants engage in original research. These Wikiversity functionaries would be expected to use their expert knowledge to help the Wikiversity community judge if Wikiversity content is useful research or some sort of "crank" theory or "spoof" of actual research. Wikiversity faculty members would be called upon to use their expert knowledge as a basis for explaining to the Wikiversity community how to distinguish actual research from bogus content that only has the superficial form of research. The term "faculty club" is just the name for a wiki page. I expect that the main Wikiversity page for faculty members would eventually look something like this, a page that explains what faculty members do and supports the tasks that they perform.

Beyond the fundamental function of Wikiversity "faculty members" (described above), I think there are additional functions that could be performed by these Wikiversity functionaries. If the Wikiversity community goes to the trouble of selecting trusted members of the community to serve as "faculty members", it will be natural for the community to try to make additional use of their expertise. In conventional universities, faculty members are often called upon to serve as advisors for students. I think it will be reasonable to expect Wikiversity faculty members to be aware of the resources that are available at Wikiversity and be able to advise other Wikiversity participants on how to find and make use of those resources. Another function that Wikiversity faculty members should be able to help with is facilitating interactions between Wikiversity and educators outside of Wikiversity. These were just possibilities that came to my mind when I tried to think of a coherent system that would make it possible to have some original research inside Wikiversity. The Wikiversity community will have to decide on the types of "functionaries" to have and what their duties will be. --JWSurf 16:56, 2 July 2006 (UTC)

-Hillgentleman 01:44, 22 October 2006 (UTC)
 * 1) Expert (in a particular field) is a more accurate term than faculty member.-Hillgentleman 01:42, 22 October 2006 (UTC)
 * 2) Quote:"The main function of a Wikiversity faculty member will be to provide the skills of an expert to the task of sorting "good" content from "bad" content."
 * 3) *Sometimes it may be difficult to distinguish orginal and bogus materials. If wikiversity is to ask a university professor to evaluate the material in wikiversity and censor those which she decideds to be bogus, then I cannot see how wikiversity can serve better than any university.
 * 4) **(But an expert can certainly participate in the discussion of a study which he considers bogus, and explain his reasonings.)
 * 5) *I would prefer the dicotomy: Bold and free in study/research;  Careful and Conservative in formal publication.

Note: migration from meta
I made some important changes to this page when it was imported from the meta-wiki. The older discussions above refer to the original page content at meta. --JWSchmidt 19:34, 29 August 2006 (UTC)

Newer discussion

 * I think the ambassador function is very important and potentially transformative for all concerned. A colleague of mine is already planning on using wikiversity as part of her media art course that she is teaching in the fall.  they will contribute content, and more people will get involved.  the university experience will open out to the public spheres, and everyone will be the better for it. --Smithgrrl 03:04, 30 August 2006 (UTC)

Continuation of "Expert" discussion
For some departments (and perhaps for all), it is absolutely necessary to have trusted members of the Department who can analyse materials and offer an opinion on them—Material on Wikiversity absolutely should not be decided solely by democracy (particularly in the case of original research). I think it's important we have some sort of provision for "experts". I also think that individual Schools and Departments should develop the procedures for this selection themselves, and have it ratified by the Colloquium in general (to help avoid people creating a department, setting up a bogus system, and clinging to it).

In History, for example, there is bad history, mediocre history, and good history. Even trained Historians often disagree about what is historical fact, but they can (or should) be able to focus on methodology over fact, and come to an understanding of what is appropriate history. It'd be good if the School of History were allowed to come up with a system to set apart contributors who demonstrate knowledge of good historiographical methodologies and have a review process that they could engage in to verify content/methodologies. The Jade Knight 01:45, 13 October 2006 (UTC)

 * May I also add that I don't like the name "referee"? I think we need to come up with a better term.  "Referee" a) reminds me too much of sports, and b) makes me think of someone who's there to make sure people don't break the rules (which is more of what custodians do, IMO).  The Jade Knight 01:22, 22 October 2006 (UTC)
 * Usually we only talk about the referree of a paper, and not a referee in general.  An expert of a field is called an expert.-Hillgentleman 01:58, 22 October 2006 (UTC)

I agree in general with the idea that in order to identify an expert in a field of study it helps to be well informed about that subject area. If Wikiversity ever does develop a system for identifying "experts" and giving them special duties, those decisions will probably depend heavily on making use of the kind of process that recently took place at the Wikipedia WikiProject for Molecular and Cellular Biology to select a director for that content development project. However, the peers of a "community expert" could probably write a report documenting the past contributions of the candidate. That report could then be easily reviewed by others from outside of that special subject area to make sure that good choices are made. In any case, the actions of "referees" will always remain open to continuous evaluation by the community. The name "referee" was just the first thing I came up with. I'm sitting here now thinking "community expert", "community facilitator" or "community advisor". --JWSchmidt 03:26, 22 October 2006 (UTC)
 * I like the name "advisor". "Expert" would be suitable only if it were ensured the individual in question knew the subject field in question extensively (IMO).  The Jade Knight 07:57, 22 October 2006 (UTC)

arXiv.org
ArXiv.org started off as a pre-print archive and now it is considered somewhat-formal. Authors sometimes cite these pre-prints as references (cautiously so, and knowing who the trustworthy authors are). They recently introduced a sponsor system.

Wikiversity, or wiki-publication, may learn from its experience. One may consider them as one step beyond arXiv.org.Hillgentleman 10:54, 22 October 2006 (UTC)

Citizendium's policy
Citizendium (http://citizendium.org / http://pilot.citizendium.org) asks its contributors for their Curriculum Vitae, and have stricter requirement on their editors (i.e. what we call experts, referees or faculties here). Wikiversity may learn from their experience. We may not actually need such a special type of users, but the (non-obligatory) CV of a contributor tells other participants of a study project how much he can be trusted. And every referee of a piece of study should have sufficient (i.e. industrial standard) qualification, outlined in a CV in her user page. ---Hillgentleman|User talk:hillgentleman 14:30, 24 November 2006 (UTC)
 * What about tutors? People say they have experience in a certain field, and take on "tutees". If they are just pretending, then the tutees will look for other tutors. If they actually are experanced in a filed, it could be reflected in there teaching.--Rayc 19:04, 24 November 2006 (UTC)
 * Tutor - Yes - ultimately the students know the teachers best.  It is better if tutors post their CV's here, but it is not absolutely necessary.  On Wikiversity, somebody may ask a question, anotherbody answers it, and the somebody decides for herself whether to trust the otherbody.  But this procedure would not work for refereeing.-Hillgentleman|User talk:hillgentleman 21:29, 24 November 2006 (UTC)

Boards are a bad implementation
I would like to voice an opinion that I have been developing along with my social research: boards are a bad thing. What I would like to implement is a fully democratic organization that seeks to release control thereby implementing honesty -- which is, in fact, the security strategy of wikis in general. Boards, in contrast, give power to those who seek control taking it away from the general population. Those supporting boards may argue that boards are generally democratically elected, though the Wikipedia "empire" seems to work through a different model. Electoral democracy is singly one of the most disappointing aspects of human society, and among the most corrupt where their corruption is easily disguised through a variety of tactics -- most recently multi-culturalism.
 * This strikes me as a terrible idea, unless what you mean by "fully democratic" is that it is fully democratic about those who know about the subject, as opposed to the population in general. What is good history, for example, should never be determined by popular vote.  The Jade Knight (d'viser) 08:26, 30 September 2008 (UTC)
 * This is the proposed role of the research review board: "The Wikiversity peer review process must be entirely transparent and openly conducted in wiki format. Wikiversity referees can act to facilitate and guide the Wikiversity community as it reviews original research results within Wikiversity." It is just a way to utilize community members who have a history of constructive editing in a topic area to help guide community review of research. --JWSchmidt 16:59, 16 April 2010 (UTC)

title: Wikiversity talk:Review board


text:
User:Coasttocoast

Wikipedia page

title: User:Coasttocoast


text: User talk:Youngstructural

title: User talk:Youngstructural


text: User talk:Coasttocoast

title: User talk:Coasttocoast


text: User talk:Jon-fredrik

title: User talk:Jon-fredrik


text: User talk:Jon-Fredrik

title: User talk:Jon-Fredrik


text:
User talk:Dcljr

School:Mathematics
Would you be interested in working in the Mathematics School? I've already created an example math test for the College Algebra page.--Rayc 00:25, 1 September 2006 (UTC)

Spanish wikiversity
Hi! :) i'm A b, wait that you understand me,i tobe of wikiversity spanish if you wish,i can teach spanish to you,yes or no? good wishes Ab,the girl 11:54, 31 January 2012 (UTC)

title: User talk:Dcljr


text:
User:Dcljr

I've been editing Wikimedia wikis since 2002, but I don't edit Wikiversity very much. For more information about me, see my user page at the English Wikipedia. To discuss any issues related to this wiki, use my talk page here.

Note: This wiki contains learning modules. (See also: Statistics, NewPages, RecentChanges, NewFiles, Log, Admins.)

In progress (or not)

 * User:Dcljr/Sandbox — personal sandbox for testing, etc. (see also Sandbox)

title: User:Dcljr


text:
User:Rayc/ProposalQuiz

This quiz is based on the text found at What is Wikiversity?

title: User:Rayc/ProposalQuiz


text:
Web Design/A step-by-step web design project

If you've not used Cascading Stylesheets (CSS) before, and have limited or no experience with HTML, then you might want to follow a step-by-step project book that takes you from creating your HTML and CSS files through to the finished product: a simple HTML/CSS website.

Below you will find at least one option for such a step-by-step project. If you are aware of other project-based introductory books, or similar online resources, link them here!

Jerusalem2020 JavaScript Code&Apps
Jerusalem2020 cross-browser JavaScript code& applications include a handful of preformatted database applications. These include customized applications,ready-made forms and reports specific to that application. You can view an example of the site you will create at http://sarahsnotecards.com/. The instructions for creating the HTML and CSS code, structuring the HTML, preparing the photos and publishing the site on the web can be found in Elizabeth Castro's excellent book "Creating a Web Page with HTML". You can read more about the book on the Useful Books page. You can also use Jerusalem2020 JavaScript Code&Apps to create your own customized cross-browser JavaScript code& applications. This means, of course, that you have to design your own database,fields,forms, and reports.


text:
Web Design/About the web design learning project

Given that everything we need to learn about Web Design is already freely available online, the purpose of this course isn't to provide yet more content! Instead, this resource aims to provide a flexible learning pathway linking the excellent online resources together with fun learning activities. The best bit is, if you find a great resource or can improve this course in any way, you can update it (Be bold!)

Oduma World

Group/classroom activities
If you are lucky enough to be learning together with a group of people, you might want to break up your class or project work with some fun group activities related to your Web Design course that challenge the way the web is used for learning!


text:
Web Design/Advanced HTML Tutorial

Now that you have completed your first HTML page lets move on to some advanced HTML. Lets start off with Headers.

To add images to your web documents you need to use the image tag. Unlike other tags however, the image tag has no end tag (But you should end it with /> as per standard rules). In order to use the image tag we will have to go over attributes. Attributes are subsections that get added to a beginning tag to add functionality. Attributes DO NOT get added to end tags.

Insert the <img> tag where you want your image to go. Now in the tag add the "src" attribute and specify the path to the image file on the server (or local directory) that your document is on. Eg. <img src="images/image.gif/>. True HTML 4.01 requires that the image tag also have height, width, and alt, attributes.  But what do these do?

The height and width attributes specify the size of your image. Most browsers will determine this on their own but specifying them allows for faster download times. You can also change the values to something other than the original dimensions of the image. This, however, will NOT change the size of the file. You can even distort images by only changing 1 dimension.

The  attribute specifies the alternative text that comes up if the image can't be displayed. You would be surprised how often this is needed. If an image get corrupted, deleted, or moved without changing the path a graphical browser can't display it and instead will attempt to use alternative text. There are many text-only browsers that can ONLY display alternative text for images as well. A common example is Lynx. Alternative text should either say the text on an image or describe the image. E.g. An image that links to a downloads page says "Downloads" the alternative text should say "downloads" as well. E.g.(2) An image of a cat has no text should have alternative text that describes the cat.

Rami Reddy multimedia designer

title: Web Design/Advanced HTML Tutorial


text:
Learning to program with Alice

Meet Alice! Alice is an incredibly fun program that has been made freely available as a public service by Carnegie Melon University.

The great part about Alice is that you'll start learning the basics of computer programming without even knowing it! Just have fun exploring and creating your own virtual world!

Getting Started
You can freely download the Alice program from http://alice.org/, but it's quite large (over 100Mb) so if you're in a class then you may want to check whether someone else has already downloaded it!

Once it's downloaded, unzip the file into a location on your computer (such as the C:\Temp). Now if you look inside the Alice folder that's been created for you (ie. C:\Temp\Alice) you'll see a file called Alice.exe - just double-click on it to get started!

Tutorial 1: Ice skater
When Alice loads up, click on the big "Start the Tutorial" button and you'll be taken step-by-step through a fun activity... just watch that skater dance!

Activity 1: After finishing the first tutorial, see if you can get your ice-skater to skate out a square!

Tutorial 2: Crushing the phone
You might want to take a break or go on directly to the second tutorial.

Activity 2: When you finish the second tutorial, come back to tutorial 1 (the Ice Skater), and have a go at adding a new method for the skater called Do Square. Whenever your skater's Do Square method is called, she should do exactly that!

Now might be a good time to think a bit about what you've learned so far. If you keep a blog for your own thoughts/learning/fun, why not take 5mins now to summarise what you've learned so far, then ask someone you know to comment on your blog with some feedback!

Tutorial 3: A sing-a-long
After completing tutorial 3, you're ready to create your first computer game! Can you believe it?! Activity 3: Come back again to tutorial 1 (the Ice Skater), and try adding some events so that when you press the arrow keys your skater skates in that direction. You could even add the spacebar as a jump button!

Hint: You might need to create two new methods: Turn Left and Turn Right.

Make sure you save your Ice Skater example world in your own folder as we'll build on this later.

Tutorial 4: Creating your own Beach scene
The fourth tutorial will show you how you can create your own scenes, using all the great 3D models that come for free with Alice!

Activity 4: When you finish this tutorial, you'll be ready to start your own project! Start creating your own world and having a look at all the different available objects!

Activity 5: Learning about Variables
Opening up your own Ice Skater example world again:
 * If you haven't already done so, add an event so that when the space bar is pressed your skater jumps.
 * Test your program to make sure that this works.

We're going to get our ice skater to remember how many times she's jumped during her performance! But to do this, we'll first need to create a variable. Just think of a variable as a container where you can store things.
 * Click on the Iceskater object in the object browser and select the Properties tab of the IceSkaters details.
 * Click on the Create New Variable button.
 * Give your variable the name howmanyjumps. By creating this variable for our IceSkater, we can get her to remember how many jumps she's done. Set the type of the variable to Number and set it's initial value to 0 (as she hasn't jumped yet!)

Next we need to make sure that whenever our Ice Skater jumps, she adds 1 to our variable howmanyjumps:
 * Click on the Methods tab of the IceSkaters details.
 * Click on the Edit button next to the Jump method, as we want to change what happens whenever she jumps
 * You'll then see a lot of code (that's the code to make her jump). If it worries you, click on the '-' next to "Do Together" at the top to minimize all the code.
 * Click back on the Properties tab of the IceSkater details and drag your howmanyjumps variable over to the end of the Jump code (it should be just after the last "IceSkater Set Pose" command.)
 * When you drop your variable their, you'll be able to tell Alice what you want to do with it. Choose the option to increment your variable by 1.

Try running your world again... notice any difference?

That's right, it doesn't seem any different yet! Even though our new bit of code is working, we haven't done anything to help us see what's going on! To do so, we'll need to use an if statement!

Activity 6: Using IF-Statements in ALICE
If-statements are one of the most useful tools of computer programmers, as they allow your programs to make decisions!

We're going to modify our IceSkaters Jump method so that if she's jumped twice already, the next time we press the space bar she'll just say "I'm too tired to jump anymore!".

Here's the steps:
 * Click on the Edit button of your Iceskaters Jump method,
 * From the bottom of the screen, drag in the If/Else statement and drop it at the top of your Jump method. When you let go of the mouse button, you will be asked to choose the condition for your If statement... just choose "true" for the moment.

Now, we want to do something special when our IceSkater has jumped twice, ie. when our howmanyjumps variable is equal to 2. To make this happen:
 * Look at your Iceskaters Properties, and drag your howmanyjumps variable into your if statement (where it currently says "true").
 * When you drop your variable in the right spot, you will be asked what you want to set as the condition. We want to say something like "If howmanyjumps is equal to 2". See if you can make this happen (Hint: in computer programming "is equal to" is often represented by two equal signs ==.)

At this point, you'll notice that your If statement says: If howmanyjumps == 2 then Do Nothing, Else Do Nothing

We can now choose what we will do when she's jumped twice, and what she'll do otherwise:
 * Looking back at the methods for your IceSkater, you'll find there a method called Say. Drag this method and drop it onto the first "Do Nothing" of your If Statement. You'll be prompted as to what you want to say, choose Other and set the text to "I'm too tired to jump any more. Sorry."
 * If our IceSkater hasn't yet jumped twice, we just want her to do her normal thing, so drag all the statements that are below your If statement into the Else section of your If statement (where the remaining "Do Nothing" is).

Now test your program! You should find that your IceSkater will jump twice, but after that will tell you she's too tired.

Practice: To practice creating variables and using IF statements, we're going to modify our program so that our IceSkater gets dizzy if she spins too much! Here's some tips to get started:

 * Add a new event so that when the 'S' key is pressed, your skater spins (and test to make sure it works).
 * Create a new variable for your IceSkater called howmanyspins (set to 0 initially).
 * Edit your Iceskaters Spin method so that after all the other code, your new variable is incremented by 1.
 * Add an IF statement to your Spin method so that if your IceSkater has already done two spins she says "I'm feeling dizzy. Sorry.", otherwise she should do her normal Spin.

Test to make sure it works and get someone else to take a look at your work!

Activity 7: Using While-loops in ALICE
To be completed.

A design project
Now the fun begins... Let your imagination run wild and create your own interactive world!

Your situation is this: A recruiter at KidzWorks - a company that designs interactive computer experiences for toddlers - has heard some good reports about your creative abilities with computers (through your facilitator of course!). Her name is Janet and she's keen to see your creative flair in action. Janet's asked you to build a small interactive environment for 3-5 year olds. Here's what Janet's written:

Hi! Thanks for taking up this challenge! I hope it will be a rewarding experience for you too! Basically, we're keen to create small interactive worlds that young kids can play with - similar to the singing penguins that you should have already seen when you were learning Alice, but something of your own! Feel free to be creative, but be careful not to make your project too complicated... You might choose an activity that helps with counting or spelling or another idea of your own!

1. Deciding on your activity
The first decision you'll need make is how your users (remember, they're 3-5 years old!) will interact with your world. Most of our environments simply involve the user clicking on different objects - but don't let that restrict you! The objects can make sounds when clicked on, or change colour, or disappear... that's up to you. You may want to run your idea past your classmates or facilitator to get additional ideas too.

2. Designing your world
You'll then need to create your world, importing and arranging the 3D objects that will decorate your world! Note, you can grab lots of pre-designed objects from the Alice Gallery online

3. Creating your interaction
Once your world is ready you can begin adding interaction through mouse or keyboard events. You can have objects that change or make noises when your users click on them, or you might allow your users to control the movement of an object using the keyboard or mouse.

4. Creating your introduction
It's useful for your users to see what your world is about when it first starts - just like the brief song of the singing penguins in the third tutorial that helps you to see that the penguins each sing a note! Design and create a brief animated introduction (10-30secs) for your own world that is played whenever your world first starts. This intro should help your users see how they can interact with your world.

Checklist
Once your world is finished, you should find that you have:
 * imported objects into your world
 * used the methods and properties of different objects within your world
 * created your own methods for some objects within your world
 * added your own events to your world so that your world reacts to user interaction
 * had some fun learning the basics of computer programming!

In addition, you should have also
 * used a variable or two in your program to count something (or add functionality in some way!)
 * used an IF-statement or two to make decisions in your program

If you were really tricky, you may have also
 * used a While-loop to repeat a few things in your program!

I hope you enjoy creating your first interactive world, and if we like what we see, we might have a development position becoming available at Kidzworks shortly!

- Janet.

title: Learning to program with Alice


text:
Web Design/An Introduction to Programming with JavaScript

JavaScript has a tainted history of image-rollovers and marquee-texts flashing across the page, but it's now coming of age with heaps of amazing effects and new possibilities for Web Design! As an example, Google Maps is just one application that uses JavaScript to enable excellent user interaction on a web page. But getting back to the basics where we'll begin...

Outline
This topic aims to help you learn the basics of programming with JavaScript. Specifically,

 * How to include JavaScript code in your Web pages
 * Using the JavaScript 'alert' function
 * Events in a web-browser (onmouseover, onclick, etc.)
 * Creating pop-up windows
 * Getting your program to make decisions: if-statements
 * Form validation: Checking a HTML form with JavaScript.
 * Expanding/Collapsing sections of your HTML Page with JavaScript.

Suggested Activities

 * Alice in Wonderland - Have fun creating and interacting with your own 3D world... and learn the fundamentals of computer programming while you're at it!
 * Web Design/Getting to know JavaScript events - Taking your first steps through JavaScript with a bit of fun!
 * Web Design/Getting to know the Document Object Model with JavaScript - See how using the document and a few IF statements can help validate forms!
 * JavaScript Challenges Build on your skills with the document and window objects and apply your knowledge to solve these problems!
 * Debugging your JavaScript with Firebug - Learn how to find the errors in your JavaScript and fix them (using Firebug)!

 * Web Programming Intro - Research some of the fundamental principles of computer programming to create an ongoing resource of your own!
 * JavaScript Pen-n-paper Activities - Sometimes it's helpful to get away from the computer and get an old-fashioned pencil out and learn! These activities will help re-enforce your JavaScript skills.
 * Web Design/AJAX Challenges - (Advanced) Get started with some tutorials and challenges to learn the basics of AJAX.

Online tutorials

 * Web Development And Design Tutorials - This website provides a series of web development tutorials from creating simple HTML pages to more complex dynamic web pages.
 * Introduction to creating dynamic webpages! - This tutorial lets you learn through interactive coding, it sets you goals and progresses easily but thoroughly.
 * Introduction to Programming - This tutorial starts right from the beginning helping you to learn what programming is as a non-programmer (Written by a graphic artist!). Part 2 of this tutorial introduces some Object-Oriented programming concepts. It might be good to read this before going on to other more practical tutorials.
 * Learn to write JavaScript - An excellent free online intro to JavaScript! Includes basics through to form validation and DHTML! (Moves quite fast).
 * W3Schools JavaScript tutorial - Lots of info with some interactive activities (and lots of ads).
 * Code Avengers JavaScript course - Fun and effective course; especially great for the absolute beginner.

Examples
The following examples from W3Schools demonstrate some typical uses of JavaScript
 * Simple Popup - Opening a popup window.
 * More useful Popup - Controlling the popup window's size and other properties.
 * Form Validation 1 - Checking the number of characters entered into a form field.
 * Form Validation 2 - Validating a few fields on a form.
 * Basic email validation - Making sure the user included an '@' symbol in an email field.

Online Reference

 * CSS Cheat Sheet - everything you'll ever need to remember about CSS all packed onto one page!
 * Web Design References - A huge mega-reference (nearly 6,000 links) of information and articles about web design and development. It is dedicated to disseminating news and information about web design and development with emphasis on elements of JavaScript CSS, accessibility, web standards, user experience, and much more.
 * - Web Design Update - A a plain text email digest newsletter. It typically goes out once a week.  All web designers and developers are invited to join.

More advanced JavaScript
The following links might give you an idea of what's possible even though they go well beyond the scope of this topic!
 * Apple's Form Validation - a page explaining the JavaScript code that Apple recommends for email, numbers etc (more advanced - includes scary regular expressions!)
 * JavaScript form validation - Input validation that displays messages on your actual page (without using alert boxes). Looks great but is quite complex.
 * script.aculo.us - Examples of some of the visual effects and interactivity that's possible with modern JavaScript and CSS.
 * Getting started with jQuery - jQuery is an amazing JavaScript library that makes it easy to create wonderful web effects in just a few lines of code.

Books

 * JavaScript - A wikibook for learning JavaScript!

Related Qualifications
You can find out how what you've learned in this module relates to qualifications in your country on the An Introduction to Programming with JavaScript:Quals page.


text:
Web Design/An Introduction to Programming with Javascript:Quals

The module: An Introduction to Programming with JavaScript is related to qualifications in the following countries:

Australia
The following units of competency from the ICA40305 Certificate IV in Information Technology (Websites) are related
 * ICAB4137A Produce basic client side script for dynamic web pages


text:
Web Design/An introduction to Project Management

Here's an activity that will help you demonstrate your ability to create task-breakdowns and Gantt charts, as well as reflect on some of the underlying principles of Project Management.

Scenarios
Pick a scenario from the following, or create your own!

Scenario 1: Party socialite
You're known around the joint as a bit of a party goer... people constantly come up to you asking when your next party is going to happen. You've already put on 4 big nights this year, but organising the whole deal is not something that you like doing. So, to make things easier for next time, you decide to plan this one in a way that you can re-use...

Variations: Organising an day-trip, dinner party, pub-crawl etc, community event.

Scenario 2: A holiday with friends
Getting away with friends has always been important to you, but for some reason, your friends always leave it up to you to organise the whole trip! Every time that you go away, you always pack similar stuff, but up until now, you've never kept the list of things that you have to pack or get done before going away. Now's the time...

Variations:

Scenario 3: Choose your own adventure
And add it back in here so that other people can use your idea! You could even use a real project that you're working on!

Your task
With your chosen scenario, you'll be specifying and ordering your tasks, as well as setting their durations to produce a beautiful Gantt chart. As well as this, we'll research and reflect a bit on what we're actually doing with Project Management. You can choose whether you demonstrate your work by uploading it to your blog (including a screenshot of your Gantt chart), or as a printed document. Here we go:

Create a task-breakdown for your project
Use your scenario to create a task-breakdown for your project. You should aim to have around 15-20 tasks (don't make it too big!) that need completing for your project. A simple list will do fine, such as:
 * 1) Find out who's interested
 * 2) Ring Adam to see if he can round up the gang
 * 3) etc.
 * 4) Find accomodation

Estimate your task times
Once you're happy with your task-breakdown, using the project management tool of your choice (one that can be used to produce Gantt charts, MS Project and Primavera can be the best choices), have a go at estimating how long it will take to complete each task.

Produce your Gantt chart
Now you're ready to specify what comes before what! Use your tool to specify the predecessors for each task (what has to happen before a task can start). This should get you your Gannt chart!

When you're happy with your Gantt chart, you might want to do a screenshot so you can upload the image to your blog.

Research and Reflection
If you're planning on using your blog to demonstrate your work, now's a good time to create a new post introducing your scenario, add your task-breakdown and include the image of your Gannt chart.

Using your research skills, include a reflection on the following:
 * Outline the stages of a typical project management lifecycle. Describe how the some of the stages match your own project plan as well as where your own project plan differs. Make sure you include references/links to any resources you use!
 * List the variables that Project management tries to control. Describe three different scenarios that demonstrate how each of these variables will be affected if something unexpected occurs with your own plan (eg. a plane is delayed, less people turn up than expected, the food at your resort is a lot more expensive than expected).Again, make sure you include references/links to any resources you use!


text:
Web Design/Build a basic web page

We're going to start slowly and introduce the two main tools that you need to build a basic web page:
 * HyperText Markup Language (HTML), which we use for all the information or content of our web page, and
 * Cascading StyleSheets (CSS), which we use to style the content of our web page.

We'll be learning the basics of these two tools through some fun, hands-on, practical activities.

To get an idea of what is possible with HTML and CSS, take a few minutes to browse some of the designs at the css Zen Garden.

Once you've glimpsed some of the power of great HTML and CSS design, let's get back to the basics and start learning! To get started straight away, jump right in to the first learning activity: What is HTML anyway? Or, if you want to know what's covered by the activities in Build a basic web page, checkout the following checklist.

Checklist
After working through the activities in this section, you should be familiar with the following:

 * Creating your first HTML page
 * Using basic HTML tags and attributes ( ..., ... ,  ... )
 * Creating Page Titles, Paragraphs and Headings ( ..., ,  ... )
 * Creating Links, Images and lists ( ..., ,  ... )
 * Changing fonts and colors with CSS
 * Setting borders, margins and padding
 * Defining CSS selectors, properties and values
 * Validating our HTML documents using the W3C online validator and the DOCTYPE of your choice (such as the HTML 4.01 Strict DOCTYPE).
 * using

Ready for a test? Give the beginner HTML exam questions and CSS exam questions a try to check your familiarity with the new concepts!

Suggested activities
The following activities may help you apply the skills outlined above as you learn them in the context of a small project. To participate in collaborative "learn by doing" projects, get your account on the Wikiversity Sandbox Server. If you can think of new learning projects or ways to improve the existing ones, please edit!

 * What is HTML anyway? – Discovering that you've been marking-up stuff your whole life! Includes hands-on activities.

 * Try out the first challenge in HTML Challenges and learn how to structure your HTML code.

 * Work your way through the HTMLDog's HTML Beginners Guide.

 * Now try out the remaining challenges at HTML Challenges.

 * For most people, A step-by-step web design project is a great place to start to see how basic HTML and CSS skills can be put to work.

 * CSS challenges – Once you're feeling vaguely familiar with HTML and CSS, you might be ready to try Challenges 1 and 2.

 * HTML Quiz - an online multiple choice HTML quiz
 * Make a web page containing all of the tags you know embeded in that and use it for yor future reference and add more tags whenever you learn more and more tags.
 * The Structure of HTML – An introduction to elements.

 * Lists and Tables – An introduction to lists and tables in HTML.

 * Pen and Paper HTML activites – Get away from the screen and try to solve these HTML activities!
 * HTML Programming – create and validate a simple web page. Remember to validate every document you create for the other activities.

Your learning resources
The following resources may help you get started, but they are only suggestions. You may have other resources that you have found to be incredibly useful for learning the basics... and if so, why not update this page! Use these resources together with the suggested activities (or your own activities) to apply what you're learning as you go.

Online tutorials
There are a lot of excellent tutorials out there for learning the basics of HTML and CSS, but many are out of date and obsolete. Here are a few tutorials that some of us have found useful: (please feel free to recommend others, but try to limit this list to 5).
 * HTMLDog's HTML Beginners Guide and CSS Beginners Guide provide excellent step-by-step learning pathways!
 * Tizag also has a good series of HTML tutorials (along with many others although the last time this site was updated was 2008)
 * WestCiv's Hands-on CSS tutorial - An excellent hands-on project-based CSS tutorial (this tutorial builds on your HTML foundation)! This tutorial extends past the basics of CSS but includes an excellent intro too!
 * Mezzoblue's HTML markup guide - From the guy who created the css Zen Garden, this guide covers HTML basics including Headings, paragraphs, a number of inline text tags and lists.
 * CSS From the ground up - Another excellent step-by-step tutorial for learning the basics of HTML/CSS coding.
 * W3Schools tutorials - Some great step-by-step tutorials, but lots of ads.
 * Wikibooks CSS Guide - A detailed wikibook on CSS
 * Authoring Webpages - Another Wikibook tutorial
 * PHP Tutorial - HTML, CSS tutorials.

Several other tutorials can be found online.

As you move through a tutorial, you may want to apply some of what you're learning to one of the suggested activities.

Online references

 * CSS Cheat Sheet - everything you'll ever need to remember about CSS all packed onto one page!
 * Web Design References - A huge mega-reference (nearly 6,000 links) of information and articles about web design and development. It is dedicated to disseminating news and information about web design and development with emphasis on elements of CSS, accessibility, web standards, user experience, and much more.
 * - Web Design Update - A a plain text email digest newsletter. It typically goes out once a week.  All web designers and developers are invited to join.

Books
Like the tutorials, there's lots of great books and even more obsolete ones. One book that introduces the basic tools of the Web (HTML and CSS) using current standards but without overwhelming the reader with detail is Elizabeth Castro's Creating a Web Page with HTML. The book steps you through a small web project from beginning to end, including everything from creating the basic HTML, CSS and images, through to publishing your site on the web.

You might want to check out other Useful Books for learning the basics too my nigga!

An HTML Editor
To edit HTML you need a basic text editor. Although you can use something as simple as Notepad, a dedicated HTML editor can provide lots of useful features (such as colour syntax highlighting) and automatic error checking that will become more important as your HTML pages grow. At the other end of the spectrum, word processors (such as Microsoft Word) often provide "Save as HTML" functions but they add extra formatting that may make your HTML display unpredictably, and as a result are not recommended.

Ideally you'll find it easiest to use a text editor that provides a bit of extra functionality for editing HTML text. The best editor for Windows users (that can edit almost all languages and can open all file types) is VSCode. It's small and downloads fast, and it's pretty effective. Using the same link, Mac users can download VSCode for Mac. For Linux users, well, Linux comes with Vim, another code editor. For other HTML editors, see Useful Applications.

Related Qualifications
You can find out how what you've learned in this module relates to qualifications in your country on the Learning Basic HTML and CSS:Quals page.

title: Web Design/Build a basic web page


text:
Web Design/Basic HTML and CSS Tutorial

HTML stands for Hypertext Markup Language and is composed of many things called tags. An example of a tag is <tag>. Tags are used to tell a browser how to format text, mark different areas, and other thing. However, more recently many HTML formatting tags such as the <font> tag have been removed from HTML in favour of CSS. CSS stands for Cascading Style Sheets. We will go over that later in this chapter.

Basic HTML
Now you have to close the head of you document. That's right you need to add a </head> tag. Now you need to create a body. The body is where the content that the browser displays exists. To make it you need a <body> tag. Now we need to close our body and end the HTML Document and a </body> then a </html> tag to your document. Now between the <body> tags type some text and save your document. When you save you document save it as "index.html". Now that it is saved load up you HTML file in a browser.

There you have created a web page. Go pat yourself on the back. It may not be much yet but you will learn more in the next chapter.

title: Web Design/Basic HTML and CSS Tutorial


text:
Web Design/CSS challenges

These challenges are here to help you flex your CSS skills, and see where you need to practice more! Copy the text of the challenge to an HTML file on your own computer and add CSS in a  block to get the desired appearance.

If you can't remember what CSS properties are available, refer to the MDN CSS Reference.

Challenge 1: Fonts and Colours
This first challenge only involves changing your fonts and colours - no layout or other more advanced CSS here! Copy-n-paste the HTML to get started, and click on the image to see what your page should look like!

Hints:
 * You'll need to link your HTML to a new stylesheet.
 * You can use the following fonts list for help: http://www.w3.org/Style/Examples/007/fonts
 * Don't worry if your text doesn't wrap at the same word -- it will depend on the size of your browser window.

Challenge 2: Shakespeare's Sonnet

This second challenge will help you to re-cap your CSS text formatting skills, as well as start using margins and padding. Copy-n-paste the HTML to get started, and click on the image to see what your page should look like!

You can also try to get your page to look like the page from the image on the right (challenge 2-A), which uses a few more advanced (though not too hard) CSS techniques.

If you can improve on the design (shouldn't be too hard!) without increasing the difficulty of this challenge, great! I'll happily replace the image!

Hints:
 * The thumbnails are not very representative, but this challenge requires you to create a fixed-width layout that is centred in the browser window. Click on an image for a closer view.
 * To get the wrap division to stay centred, you'll need to set the left and right margins to a_t_ (you've got to fill in the blanks).

Challenge 3: 2-column layout

This one will get you fiddling with margins and padding!

Hints:
 * You'll need to set a fixed width for your wrap, and then float the navigation.
 * You may also want to fiddle with widths/margins of the navigation and content divisions!
 * For this and the next few challenges, you may want to first look through MaxDesign's Two columns with colour tutorial.

Challenge 4: 2 Columns with a header and footer

This time you've got an extra header and horizontal navigation to worry about!

Hints:
 * For some ideas for styling the horizontal nav bar, see listamatic.
 * You'll need to fiddle with paddings/margins to get the divs bumped up against each other.
 * If you get stuck, try following 456BereaStreet's 2-column layout tutorial.

Challenge 5: Gimme some whitespace

This one's inspired by the design of clearleft. A nice clean look with lots of whitespace. Have fun!

Hints:
 * You'll need to hide the h1 somehow! (for some good tips on the best and most appropriate way to do this, you might like to read through WebAIM's Invisible Content page).

Challenge 6: The Headline Challenge
This time you'll be working with a chunk of HTML similar to a blog post, but now you're in charge of the design. Create a colour scheme and layout that has a look and feel related to one of the following words:

 * Passion
 * Love
 * Funky
 * Creative
 * Elegant
 * Industrial
 * Gothic

Try using a background image that fits the aesthetic of your design, but remember to keep your text readable!

If you've started experimenting with CSS Web Fonts, this is a perfect place to use them. Font Squirrel and Google Web Fonts are excellent resources for finding decorative heading and body text fonts that are free to use.

For some inspiration, checkout the collection of Typography for Headlines

Hints:
 * You'll need to link your HTML to a new stylesheet.
 * Add some more content paragraphs if you like.
 * Try to use the HTML structure as-is, but add some extra <div>s if you really need to.

Challenge 7: Cutting the code
This challenge is designed to help you build your process for producing a CSS-based layout from scratch. The idea is to choose a design from Open Source Web Design (or otherwise) that:
 * 1) you like!
 * 2) is a little beyond your current skills
 * 3) is not too far beyond your current skills (so you don't get overwhelmed!)

Without looking at the HTML/CSS of the chosen design, you'll then work together or on your own to code the HTML and CSS for the layout using the steps below.

This challenge is designed so that you can do it multiple times at different levels of difficulty if you find it helpful!

Steps:

 * Choose and print off a design from Open Designs (or a website of your choice). Make sure you choose a design that is within your grasp - a little beyond your current skills, but not too far beyond so as to overwhelm you!
 * Use your printout to decide on your HTML structure (what divs you'll use etc.)
 * Create your HTML code with a DOCTYPE, head, title, body and your divs that you've decided on and link it to a stylesheet.
 * At this point, you might want to use a strategy such as Russ Weakley's coloured boxes to give your divs some colour so you can see where they are!
 * Add some content such as headings, navigation etc. If you need paragraphs of text, you might want to try the Lorum Ipsum generator
 * Get started styling your page! As you work, you might choose to just focus on the layout and not worry about the images. On the other hand, you might also choose to use the images for your chosen design and add them to your stylesheet.

If you get stuck, chat with the people around you to get ideas rather than looking at a solution. Only look at the solution if you're really really stuck and there's no one to talk with!

When you're happy with your design (and only then!), print out your HTML and CSS as well as the HTML and CSS that was used by the original author of your chosen design. Looking at the differences, work out the pro's and con's of your code versus the original.

Challenge 8: A CSS Zen Garden entry
The CSS Zen Garden site is a collection of unique designs that all use exactly the same HTML, with only the CSS changing between them. It's intended to show how powerful CSS can be in changing the site's style and appeal.

Your challenge is to create a simple CSS Zen Garden design. You'll find a link to the HTML and a simple starter CSS under the "Participation" heading on the front page. Download these files and work on your local computer to build something beautiful! If you're so inclined, you're welcome to contact the Zen Garden owners to get your design listed!

Challenge 9: CSSBattle targets
CSSBattle is an online code-golfing game where players have to visually replicate given targets using HTML/CSS. It's not only limited to code golfing but can also be used by developers starting to learn CSS to practice CSS properties.

There are plenty of targets there to practice your CSS skills there.

title: Web Design/CSS challenges


text:
Web Design/Design Principles for Web Design

Module Aim
In this module, we will consider some of the principles that you should remember and adhere to whenever making your website. We'll consider color blending on your website, which fonts are most web-friendly, image support, and even creating your website to suit your target audience. This module will expand on issues like webpage load speed and what code to use with what scripts at what time. Knowing which of the web design standards to use such as HTML or HTML5 will also be a point of focus. The following sections have much to offer. Go ahead.

Apart from the principles you need to nail down when designing your site, you need to also understand certain facts about your visitors and how to organize your contents to make the best first impression.

Suggested Activities
Under this section, we'll be considering some activities of which you will work on to see how best the principles discuss really work.

Since you're familiar with creating of HTML pages, only instructions on the activities will be given and you will have to try them yourself. Taking on these activities will help you appreciate how important those principles are and how they are going to facilitate the overall operation of your webpages. Its much important your take to heart these principles.

Basic Principles Grouped
The basic principles to keep in mind when creating your website can be grouped under some four main headings. These kind of categorize the whole idea of those principles. These are:
 * Colors
 * Layout
 * Navigation
 * Fonts

Colors
Color Theory for the web

Navigation
A navigation menu may be implemented through a top bar or side bar. Such may be fixed so to be readily accessible on screen.

Some older versions of mobile browsers might resize sticky elements such as top bars to force fitting within the viewport's width, causing them to get squished when zooming in. With more recent browser versions, this should not be much of a concern.

Expandable sections
Parts of the site can initially be hidden and revealed by the user through actuating a button. This can be implemented using traditional JavaScript or, more modernly, the CSS  pseudo-class.

A site that makes use of such is Reddit, where so-called expandos contain the body of text posts (Markdown), and can preview embeddable media such as images, videos (YouTube, Dailymotion, etc.), and audio from select sites (e.g. SoundCloud).

The content of expandable sections can be included in the HTML source code or only loaded when opened. For text content, including it into the HTML source code is recommended, as that allows immediate opening without delay, and makes indexing by search engines more efficient, as they see more text, and the size of text typically is negligible compared to multimedia content.

For photos, low resolution preview images may be used which link to the original resolution version for users who wish to see it.

Learning materials
Wikiversity lessons:
 * Named Colors

Resources
The following are external links that relate to Web Design Principles

Articles worth reading

 * The principles of Design - Starting with the basics of Balance, Proportion and Dominance, this article uses simple examples and has useful links too.
 * The elements of Design - Part 2 in the series, introduces the basic elements of design (point, line, form, texture, colour) and related areas.
 * Designing for the Web - Part 3 in the same series.
 * Principles and Elements of Design - Part 4 in the same series, brings everything together with examples.
 * Choosing a colour scheme - Dave Shea's own tips for choosing a colour scheme for your website (includes some great links).
 * Web Design Tutorial - An all-in-one guide for basic Web Designing tips. (includes links to other popular articles).

Online tutorials

 * WebDesign from Scratch - This section on visual design for clarity has some excellent explanations.
 * The Principles of Beautiful Web Design - Explains much you need to read about.
 * Top 22 Web Design training - Links to the 22 top tutorials for web designing.

Online references

 * The Web Style Guide - This section on Designing a User-Centered interface as well as the Visual Heirarchy section apply design principles directly to web design.


text:
Web Design/Developing a Client Project

Once you feel that you're starting to feel more confident with your HTML/CSS skills (see Intermediate HTML and CSS), you might want to flex your muscles and create your first real client project! This will give you a real experience of the web design process - from project conception through to hand-over and beyond!

Module Aim
In this section we'll aim to discover the process of web design through a real client project. Specifically we'll aim to:

 * Determine the needs of our client and their users
 * Define our project.
 * Plan and budget our project.
 * Design the Information Architecture (the way the sites information will be organised) for the site.
 * Design basic visual prototypes for the site
 * Implement the site
 * Conduct user (usability + accessibility) testing

Suggested Activities

 * A scaffolded Web Project - Step out and begin your first project with the help of a bit of scaffolding from some professionals!
 * An introduction to Project Management - Discover the essence of project management: what are we trying to control?
 * Completing the three Adobe tutorial below and applying them to your own client project.
 * Information Architecture Challenges - A chance to practise the process of going from site goals through to site prototype (these might be fun to do in a group!)
 * Validating your websites performance - Plan, test and document the performance of your client website!

Books

 * Web Re-design 2.0 - The best way to learn a professional web-design process is to work with a professional web designer - but failing that, this great book written by professional webdesigners outlining the process that they use (together with the resources they use) is the next best thing!

Online tutorials
 Are not available

 * Adobe have an excellent series stepping you through the information design process:
 * 1) Information Design - From Interview to Content
 * 2) Site Design - Site structure, navigation and usability.
 * 3) Page Design - Layout grids through to prototype.
 * Webmonkey's Info Architecture tutorial - A practical step-by-step guide for researching and documenting your websites information architecture.
 * WebDesignFromScratch's Web Design Process - Ben Hunt share's his own web design process from 10 years of experience in one concise page!

Tools

 * Information Architecture Institute Tools - Bringing new Information Architecture tools to the community so we can learn from each other. Some great free templates and toolkits!

Theory articles

 * What is Information Architecture - "Effective IA must reflect the way people think" - an excellent tutorial with tips, step-by-step guidelines and tools.

Online references

 * The Web Style Guide - The first chapter contains lots of info about the process of Web Design, including Information Architecture and defining your site.
 * WebDesign from Scratch - Lots of information about designing for your users, the tutorials demonstrate the process of putting "together a design that is appealing to use as well as to look at," covering some basic Information Architecture and Usability.

title: Web Design/Developing a Client Project


text:
Web Design/Dynamic websites with PHP

At its simplest, a dynamic website is one that provides customised content to you as you browse. This might depend on information you've provided through filling out an HTML form, or by clicking on products that you would like to add to your shopping cart.

These days, nearly all websites contain some dynamic functionality! We'll start out by seeing how we can respond to information a user enters into a form, and progress gradually to using databases with our dynamic sites.

Note: It is assumed that you are familiar with a little bit of computer programming (variables and if-statements in particular) - if not, please work through the Introduction to programming with Javascript.

Module Aim

 * Setting up your own webserver for testing
 * Responding to user information on forms
 * Web server/browser requests responses
 * Using PHP templates to maintain your site
 * PHP Strings
 * Arrays in PHP

Suggested Activities

 * Setting up your own webserver with XAMPP-Lite, Wampserver
 * Installing Wordpress - our first taste of what's possible with PHP, try out some different templates or even try your own http://urbangiraffe.com/2005/04/12/themeguide1/ has a good getting started template guide.
 * Using PHP to create a template for your website
 * Responding to HTML forms with PHP - From a simple "Thankyou Jerry for your details." through a complete receipt and automatic emails.
 * Calculating Totals and Discounts - Extending your simple receipt to calculate the total for the order, include a postage fee and apply a discount.
 * Work through parts 1-8 of the PHP for Beginners tutorial.
 * Creating Database Tables - Creating your first database table using PhpMyAdmin.
 * PHP Challenges - Get some practise applying your PHP skills! Includes responding to users, designing multi-page forms, getting the data into a database and displaying info from a database.
 * Simple Functions in PHP - get started using functions in PHP with links to more resources.
 * Under contsruction at the moment are the PHP exam questions.

More advanced

 * Email Injection - Learn how to modify your email sending PHP code to make it more secure.
 * The truth about sessions - Learn why you would use sessions in PHP, how you can use them, and what to watch out for in this great tutorial!
 * PHP tutorials - PHP and HTML tutorials
 * PHP sessions - A basic tutorial on using PHP Sessions
 * PHP sessions - Slightly more advanced tutorial on PHP Sessions
 * PHP User Sessions and Security - Site for PHP tutorials and more!
 * Taking Joomla for a test drive - experience for yourself what's possible and learn how to install your own fully fledged content management system (CMS)! Warning, Joomla is a huge application that can take some getting used to just to use!

Wikiversity & Wikibooks

 * Topic:PHP on Wikiversity - some basic guides to PHP still being written
 * Programming:PHP on Wikibooks - an excellent, fully featured wikibook nearing completion
 * Karrigell Tutorial on Wikibooks -- a tutorial using Karrigell, an Open Source Python web framework

Online tutorials

 * PHP for Beginners - Zend Technologies PHP for Absolute Beginners.
 * An intro to PHP - Free2Codes introductory PHP tutorial. Assumes you know nothing about PHP to start with!
 * Simple Templating - A great way to see one of the most-used features of Server-Side scripting: creating simple templates for your sites!
 * Learn PHP
 * Practical PHP Programing - A PHP programing wiki devoted to helping the beginner learn PHP.

Software

 * XAMPP Lite - Set up your own computer as a webserver with PHP.
 * wampserver - Similar to XAMPP but without FTP or mailserver
 * lighttpd - Lightweight, simple webserver with windows installer
 * dWebPro - you can set this up on your hard drive, and then copy it onto a USB device or CD for demonstrations and/or further development. It has plug in modules for MySQL (and other databases) and PHP (plus other programming languages, such as Perl, Python, Ruby and ASP.NET)

title: Web Design/Dynamic websites with PHP


text:
Web Design/Generating a receipt with PHP

Once your basic response and email are all happening, and you're feeling a bit more confident with your first PHP pages, it's a good time to start learning a bit more about PHP variables and control structures! But before moving on from here, please make sure that your response.php currently:
 * Responds personally to the user
 * Includes the details of the product selected by the user (its name and its price)
 * includes the billing information for the user.

Adding up the total
If a visitor to your site indicates that they want to buy 5 T-shirts at $15 each, we need to let them know what their total comes to! To do this, we'll need to create a variable.

You might have noticed that variables in PHP always have a dollar sign ($) in front of them. Here are a few examples: $num1 = 12;           // This is a number $string1 = "Here's a string in double quotes"; $string2 = 'Here\'s a string in single quotes';

Can you guess why the apostrophe (') in $string2 has a back-slash (\) in front of it?

We need to create a new variable called $total in our response.php. Initially we'll set it to 0 like this: $total = 0; // We'll use this variable to calculate the total for the order but your challenge is to print out the total for the order when your form is submitted!

Including postage in the total
Now that we've calculated the total for our order, we need to include a postage fee! The following exercise will help you along the way!

Free delivery for bulk buys
Let's say you decide it would be good for business if you offer free delivery if customers buy more than 6 items.

Your pseudo-code should look something like this: if the quantity is less than 7 then do the following: add the $20 postage fee to the total

You might want to take a look at if-statements in the PHP manual or Free2Code's explanation of if-statements to get an idea of how if-statements work in PHP (they're nearly identical to if-statements in JavaScript).

TO DO: Exercise with solution

Discount if you spend over $200
Finally, if your customers spend over $200 (modify to suit your needs), they get a 10% discount.

Again your pseudo-code should look like... $discountmin = 200; if the quantity is more than discountmin then: multiply amount by 0.9 //0.9 basically just takes away the 10%


text:
Web Design/Dynamic Websites/Creating Database Tables

Before we can start using databases to create dynamic sites, we first need to create a database table! Since most cheap hosting sites support MySQL as their database server, we're going to use a special program that's been written by someone else to help us setup and administer our MySQL databases... it's called PhpMyAdmin.

From the PhpMyAdmin homepage:

phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the Web. Currently it can create and drop databases, create/drop/alter tables, delete/edit/add fields, execute any SQL statement, manage keys on fields, manage privileges,export data into various formats and is available in 50 languages.

To take part in this activity, you'll need to know:
 * the URL of your database host, as well as your database username and password. If you are unsure about these, ask your hosting company or your facilitator.
 * Alternatively, you can install XAMPP Lite or WampServer on your local computer as it has PhpMyAdmin already installed for you.

Getting aquainted with PhpMyAdmin
To start getting aquainted, there's a nice and simple PhpMyAdmin Tutorial that will get you started creating your first example table using PhpMyAdmin, and inserting data into it. Try it out and see how you find the experience!

After finishing the tutorial, you might like to reflect on your blog or elsewhere:
 * Describe why database tables usually have one field set as the primary key?
 * How is the Auto Increment option useful?,
 * When adding a field to a database, what other information do we need to specify?

Creating your own table
Once you've finished with the example, we're ready to create our own database table! Referring back to an HTML form that you have created in the past (one that collects information from users, say for purchasing a product):
 * 1) write down the fields that will require to store this information in a database.
 * 2) Using PhpMyAdmin, create a new table in your database with a meaningful title (relevant to the data you're collecting, such as orders or enquiries etc)
 * 3) Specify the fields that you require to store your data (making sure that you choose the correct type, and that you've created a primary key etc).
 * 4) Insert 4 or 5 lines of sample data to your new table, each time noting the actual SQL code that is being used to add the information into your database.

More on Database Types
To re-cap some and pull together some of the things you've learned so far, read through Using MySQL down to (but not including unless you're keen) the Basic SQL Statement.

For the moment, it's important that you:
 * Feel comfortable creating a new table in a database using PhpMyAdmin,
 * Correctly select the type for each field in your table using only the simple types (e.g. int, text, varchar, datetime, but you should be aware that there's lots of other types),
 * Create a primary key for each table and use the auto-increment option correctly,
 * Have a vague idea of what an SQL statement looks like (more on this later!)

Phew! Enough for one day?! Next, we'll be finding out how we can connect to our database from PHP!


text:
Web Design/PHP challenges

Challenge 1: Idiot Box Survey
Scenario: You are working as IT Support for a small high school in your area. The Parents and Community committee has commissioned a small project to help kids in the school work out exactly how much time they're spending in front of the TV, Computer or Video Game Consoles, as well as collect data on how free time is spent.

Creating the form
You've been asked to whip up a prototype form to collect the following info (remember your target audience when labeling your fields!):
 * First and last name
 * Number of Years in Business
 * Year at School (e.g. 7-12)
 * Number of siblings
 * At what time do they go to bed, and at what time do they wake up.
 * Approximate time spent on homework per day
 * time spent watching TV/DVD etc. per day
 * Time spent using computer or games console per day
 * time spent with family per day
 * time spent with friends per day

You do not necessarily need to make your form pretty or worry about Javascript input validation for the prototype, but it certainly needs to be easy to use. For example: <!DOCTYPE html> colls data  FIRST NAME:  LAST NAME:  AGE:  GRADE:  How many siblings do you have?:  At what time do you go to bed?:
 At what time do you wakeup?:  what is the approximate time you spent on your homework per day?:

what is the approximate time you spent watching TV/DVD per day?:  what is the approximate time you spent using computer or games console per day?:  what is the approximate time you spent with family per day?:  what is the approximate time you spent with friends per day?:  hint click the clock icon to select time

Processing your form
Your prototype will also require a php script (or server-side language of your choice) to process the info. The P&C committee have asked for the following:
 * A message saying "Great! Thanks [firstname] for responding to our survey".
 * A display of the students details formatted suitably (just name, birth-year, current school year and number of siblings)
 * An email should be sent to a set email address with a subject of, for example, "David Terry's Survey results." and a message that includes the data entered (no need to worry about formatting or headers in the email).

Challenge 2: Idiot Box Statistics
You receive an email from the P&C Committee asking that once you have this working, your challenges are to modify your response so that it also says: "Based on the information you've entered, you will spend:"
 * x hours watching TV or movies per year.
 * y hours doing homework per year.
 * z hours per year in front of a TV or computer screen per year
 * a hours per year with friends and family

Note, this information does not need to be included in the email. With this you will be ready to demonstrate your prototype!

Extra challenges
Not for the faint-hearted!
 * Use the students' current year at school to work out how many years they have left at school, and from this, how many hours they will spend doing homework or watching a screen until they finish school.
 * Work out the percentage of awake time spent in front of a screen.

Challenge 3: Combining Your Form and Response
After working through Part 3 of Zend's PHP for beginners series, you've worked out that it's a bit neater to put all your code into the one file (rather than having separate files for your form and form processing).

Modify your prototype from Challenge 1 to use just one php file that either displays your survey form or processes the results, depending on whether the form has been submitted (based on the tutorial).

Challenge 3.5: Looping the Loop
Part 3 of Zend's PHP for beginners also gives you an overview of a few different ways that you can repeat stuff in your PHP code. The following challenges are designed to help you re-enforce in your mind how while loops and for loops can be used.

Take a look at the following piece of code and work out what it does as you read through it, then copy-n-paste it into a PHP file to test it out.

Your challenges:
 * Modify the loop so that it displays the numbers from 1 to 100
 * Modify the loop so that it displays the even numbers between 1 and 100
 * Modify the loop so that it displays the numbers from 100 to 1 (i.e. in reverse order)

The above while loop can also be written in other ways (such as a for-loop), but for the moment, it's best that you learn how to use one method well. For those who are interested and feel very confident, you might want to look through the following code (otherwise just skip over it!) PHP Manual - for loops does a great job explaining why you have three different things in the first line: for (part1; part2; part3). If you are keen to try out the for loop, you can do all of the above challenges, but using a for-loop instead of a while loop. Now, use the above to:
 * Copy-n-paste and modify the above piece of code so that it prints the numbers as a single unordered list. i.e. the HTML output should look like:

Last but not least,
 * Copy-n-paste and modify your code to create a simple form that allows the user to select the day of the month that they were born. i.e. the HTML output should look something like:

Challenge 4: Input Validation with PHP
Below is an example IF statement that will check if a user has entered any information into the 'first_name' field. Your challenge is after the example!

Now, for the IF statement in your PHP code: The first line of code checks for one thing, shown below:

It checks if  is NOT equal to an empty string.

If this is TRUE then the following will be printed:

Yes, the input box: 'first_name' was filled in!

And the contents of this input box was: Frank

But, if what the IF-statement checks is not true then the following will be printed:

The input box 'first_name' had nothing in it.

Your challenge is to use the above example to validate your Idiot box survey form! Remember, always break the problem down into small chunks... start by validating just one field, then when that works, add the next etc. (If you're already using JavaScript form validation for this exercise, you'll need to switch it off to test your PHP input validation!

Challenge 5: Putting Stuff into a DB
The P&C committee is happy with your prototype and have given you the go-ahead to develop the database functionality.

This challenge will require you to:
 * create the database table using PhpMyAdmin (or similar),
 * Using PhpMyAdmin, add some data to your database and note the SQL query that was used to add the data (copy the complete query).
 * Update your form processing code so that after displaying the results your code
 * 1) Connects to your database server
 * 2) Selects your database
 * 3) Runs the query that PhpMyAdmin generated for you
 * 4) Closes the connection to your database server

Here's some template code to get you started:

 * Once the last step has been tested and works (you'll need to check whether the test information has actually made its way into your database), modify your query so that the actual information entered into the form is inserted into your database and test it again.

Challenge 6: Getting Stuff out of a DB
After reviewing your form for entering new data for the survey, the P&C committee ask you to create a page that displays all the collected data.

You warn them that they will need to implement some security around this function before going live with the survey application (so that only certain people can view the information), but you agree to get a prototype going to show them how it will work (i.e., you don't need to worry about the security issue for the moment!).

Step-by-step:
 * Create a special page of your site that displays the data from your table. Here's some template code to look through, modify and try out:

After getting the above template code to work with your database (and more importantly, verifying that you understand how it's working, especially the while loop):
 * Modify the code above so that, instead of each row of your table being displayed as a paragraph, each row is outputted as a row of an HTML table.

Challenge 7: Displaying Details for One Record
The following week you meet up with the committee again to demonstrate your work. The committee is impressed to see that you've formatted the survey information in a nice table, but have a few concerns. The biggest concern of the committee is that it is a lot of information to display on the screen at once.

They would like to modify the application so that when the survey results from the database are displayed, only the following information is included in 3 columns:
 * Name: first name and last name,
 * Total hours spent in front of a screen per week,
 * Total hours spent with friends and family per week.

Furthermore, when these results are displayed, the committee would like to be able to click on the name of a student to view the details for that student.

On a piece of paper, see if you can break down your task into a number of steps to tackle (before going on)!

Step-by-step: Test this code by entering the URL "yourdomain.com/path_to_your_file/details.php?id=4" into your browser and see if you can get it working.
 * Modify your results from Challenge 6 so that each row displays the name, Screen hours per week and Social hours per week and test.
 * Add the following link around each student name:  Note that this linking URL contains some extra information so that the file details.php will know which student we want to view. Make sure the links appear.
 * Create a new file called details.php with the normal HTML structure. Initially, just add the following PHP code inside the body (Note, it includes an intentional error):

Hint 1: We've incorrectly used the $_POST array, even though we haven't actually posted any information from a form using the method="post". Hint 2: Instead we want to GET the information that was sent through the URL.

Once you think it's working, modify the url in your browser to "details.php?id=2" to see if it really is working! Next,
 * Check out the W3Schools explanation of the $_GET array in PHP.
 * Use PHPMyAdmin to see if you can find out the SQL query that will return one specific row of your database table (i.e., you want to select all the fields from your table WHERE the id is equal to 4.) Test that it works in PHPMyAdmin using other values for the ID.
 * Add the code to your details.php to:
 * 1) Connect to the database server,
 * 2) Select your database,
 * 3) Run your SQL query,
 * 4) Display the result of your query (Note: you won't need a while loop this time, as there should only ever be one result! You can use an if statement instead to make sure that your query did return a result)

Test that this works, first by entering the URL in your browser "details.php?id=4", then change the id to display different records.

Now the only remaining problem is that every student listed on our summary page links to the one student details page (the student with the id=4). The last element of this challenge is:
 * Modify the link around each student name so that each link contains the corresponding id for that student.

Challenge 8: Deleting Stuff from a Database
If you've come this far, then your PHP/MySQL skills have come a long way! This challenge provides hints, but doesn't give you the details. You'll need to work hard and use your resources well!

Hints:
 * Update your page that displays all the records, to include an extra column for each record that simply has the text "delete", or if you prefer icons, a little trash-can icon.
 * Add the following link around your trashcan icon:
 * Modify your page so that, when your delete link is clicked, your page displays the text "The record with the id of 4 would have been deleted" (you'll need to put this inside an if-statement so that it only appears when the user has clicked on one of your delete links).
 * Use PHPMyAdmin to find the SQL syntax required to delete an item from your database.
 * Update your if-statement so that your code runs the SQL query to delete the record.

Once you have your delete functionality working, it would be a great time to add a very simple menu to your survey application so that you can navigate between the form and the summary page (where you can delete records or view the details of records).

Lastly:
 * Add a link to the details page (where you view the details of one particular record, from Challenge 7) to delete the current record!

Challenge 9: Putting It All Together
After completing your survey application for the local Parents and Community committee, your application was used by hundreds of schools in your state! Everyone loved it! And lots of people saw your web application skills in action!

Now you've been approached by the department to develop a prototype for a school enrolment application! At the moment the application will just be for one school and will need to:
 * Allow new students to be added, assigning them to a certain year. Required info:
 * first and last name,
 * D.O.B.,
 * Enrollment Date
 * Current School year (e.g. 7-12),
 * home phone,
 * mobile,
 * email,
 * 1st Contact name (usually parent),
 * 1st Contact phone,
 * 2nd Contact name,
 * 2nd Contact phone.
 * View a summary of all the students currently enrolled at the school, sorted by year and then name. The summary should include the students name, school year and email.
 * View the details of a particular student.
 * Delete a student (both from the summary view as well as from the individual view).

After discussing the prototype with your client contact, you also thought of a few improvements that you might add if you have time:
 * Making the email displayed on the summary view a link that can be clicked on. For example:
 * Including a link on the summary view to edit a student record. This will bring a form up that is identical to the new student form, but with all the fields pre-populated from the record in the database.
 * The ability to upload a photo for a student (to help teachers and administrators put names to faces!)
 * A short report that shows from the database how many students are currently enrolled in each year.

This is your chance to get your business off the ground! A contract with the Education department will help pay the bills!

Once you finish your prototype, it will be worth discussing with others how your database design could be improved too.

title: Web Design/PHP challenges