This section deals with Computer Based Tools, any single one of which can form the basis of a skilled career path. The tools and the projects that use them are appropriate for Year 12 and 13 secondary school students.
Achieving the ICT skills to be able to use these tools is all very laudable, but may be too high an expectation of the education system. Each particular tool is sophisticated, and a secondary school course can only be expected to cover the basics at an introductory level. It may not be possible to find teachers suitably skilled in the use of a complete range of these tools. Staff mobility may impact on what courses can be provided. The school board may have to make formal decisions as to which of these tools it wishes to support as a plank in the school prospectus. And certainly no student should be expected to be familiar with more than one of these tools.
It is very likely that any student who is interested in computers, will get acquainted with one of the advanced tools listed here outside of the school curriculum. This could be taken as the self-referential definition of a "computer nerd". It is also likely that any class will have students who together represent a wide range of the interests expressed by these tools, from music, to graphics, to website, to publishing and so on. Integrating students' extracurricula computer interests with intramural activities is also another delicate issue which needs to be considered, even if no definite policy resolution is made.
Despite their sophistication and apparent specialization, the tools listed here are not particular to any specific career and further specialization would occur when the student enters a specific professional career. So these tools should not be considered "Specialist". For example Autocad LT is not included as it requires a dedicated "architectural office" environment in which to deliver benefits.
Because of this specialization, it is not a reasonable approach to expect everyone in a class to be familiar with a desktop publishing package, especially if the student has learnt another skill such as C++, or 3D graphics. So railroading students into a particular ICT program simply "because it is there" - the resources are there and a teacher knows how to teach it - is not such a good idea. Instead a process of recognising skills that are being acquired and presenting projects which utilise those skills, should be developed. We don't need to repeat the old turnip - "we have a teacher who knows Latin so we should have a Latin class".
Special recognition can be given to students who use these advanced tools effectively to solve problems, or create objects or events.
The emphasis of the WEBSCOOL website on ICT may give the impression that school leavers at Y13 should have some advanced ICT skills. This certainly need not be the case. School leavers do not need to be familiar with any of these tools in order to pursue a high quality career path, for instance, in medicine. ICT skills should not be considered a prerequisite of high achievement. In any case, our system of values regarding high achievement is becoming a moveable feast these days.
It is also arguable that the amount of time invested in learning to use one of these tools is disproportionately large with respect to the general syllabus. The issue of achieving a balanced education is an interesting one and there are a lot of valid viewpoints. The section on the Future considers what the educational requirements should be. They have to do with teaching students how to access information and use it to learn to use new tools or to build new tools. They are not so much to do with having a balanced or broad view of a number of subjects. This viewpoint is of course arguable, and many teachers will argue, and many parents expect, their students to get a broad-based education rather than one which specializes, even if the specialisation is highly creative/constructive. Therefore students who do not study an advanced computer tool should not be considered to have "not qualified" in any sense.
A more general approach should be taken, combining these topics with other major topics such as Machining Skills, Creative Arts, and Social Projects - all of which can be considered as student achievements at the same level. Recognition should also be given to projects which might be conducted outside of the school, such as performance and social work.
The degree to which the school can support students in these projects will have to be carefully considered as some of them require considerable resource availability although they may not be expensive to do, for example making a video documentary about social issues in the neighborhood.
Two genres of class project together cover most of the skills covered in this section. They are the Social or Community Studies Project and the Event Project. Schools could look at identifying two major projects for the year which integrate student skills in either or both these projects. Certain skills such as Music will only suit the Event Project, and others such as Database only the Community Studies Project.
It may be possible for schools in an area to support a "resource pool" for such tasks as video editing which are resource and time intensive, but cheap in material usage. Rural schools which cannot pool resources due to their physical isolation will be disadvantaged in this respect. Identifying a subset which can be used in rural areas would be a useful task. Possible examples are:
Managing a website - little computer resource, free software
Desktop Publishing Packages have full tutorial information provided with them. At this level students should be able to access the tutorial information provided by themselves. However, at this level, the software packages are extremely complex, and teachers need to be sure that students are aware of all the facilities that the package provides that will help to make the project completion easier and of high quality.
Students should be introduced to the various features in the software package in class context and allowed to study the details in the tutorial provided.
Desktop Publishing Software is required only for text-based documents that are so large that supporting tools are required to manage the document and its content or for documents that have special typesetting requirements such as mathematical equations.
These supporting tools are:
Automatic Contents Building
Automatic Index Maintenance
Automatic Repagination and laying out
Integration of sub-documents
The most generally used software in this category is LaTeX (pronounced LayTech) which is portable and consistent over a wide range of platforms. It is also stable unlike many other publishing methods such as HTML for which browsers may "interpret" instructions and change their interpretation from one version of software to the next. LaTeX is used as a standard means of publishing papers in tertiary institutions.
The student newsletter may be produced in a variety of formats using a variety of publishing techniques. While computers provide excellent tools for this task there is no particular reason to emphasize computer technology in this project.
English online offers this page and several others as a resource for a class newspaper. But there are many unforeseen issues that arise when studying newspapers. Most of these issues relate to the way truth and fact are compromised in our society. WEBSCOOL is about the use of ICT in teaching so we could say that such issues are off topic, but this is not the case. The use of ICT by youngsters is introducing them to social issues of important at an earlier age than our society might be willing to consider. There are major cultural issues about ICT which are created by the innovations that ICT bring, so this is the first place that these issues begin to be discussed.
Much of the editorial content of a newspaper is copied or rehashed from other sources. Electronic media, and common typesetting protocols mean that whole articles can be distributed around the world and slotted into the pages of newspapers everywhere with very little intervention, critical or otherwise. Many newspapers, and television news in particular now rely heavily on this technology. Thus what we read tends to be "other people's news" seen from an undeclared cultural viewpoint.
The look of a newspaper is the result of years of expertise on the job and hundreds of thousands of dollars worth of computer typesetting technology, which even takes experts several years to get to work properly. HTML and other page setting technologies offer a lot of wonderful techniques for formatting content and images but there is a huge learning curve involved in getting everything to work right and look good. This kind of learning curve does not have high educational rewards, and is better left to the commercial sector where this skill can be honed over time.
The School Yearbook is a Senior Student Project which computer tools can assist in producing. The usefulness of the computer tools will depend on how much of the source material is already computer-based. The main features of this project are:
Selection of content and editorial decisions
Quality of available information sources
Production of quality printed Yearbook - including colour production and printing techniques.
Working with budget and deadline constraints in a public forum.
The subject of this class project could be almost anything - however it should be a reasonably large-scale subject. This project should not be regarded as a futile exercise to be thrown away when it is over. The resulting document can be published on the web and maintained. It can be used as the base for next years class who can read what last years class produced and so learn about the subject and then add their own new sections. Alternatively the scope of the project can be extended a little each year to provide "fresh space" for the current years students to work in. The resulting document can itself become an important teaching resource.
The project has three stages:
Defining the general content of the Document and assigning Sections to each student to complete.
The first computers, Boroughs Machine, punched cards, plugboard, card sorting
machine, semi-conductor, magnetic tape media, Management Information System,
Database Management Systems, Theory of Relational Database, UNIX, the language "C",
IBM, PC, Apple.
Many more keywords can be added to this list. Keywords can be distributed to each student who then prepares a page on that keyword.
The whole project can be managed by the teacher or by an editorial team. The editorial tasks are:
Creating a "look" for the document. Webpage and graphic design skills
can be employed here.
Creating a template for the student pages to give a uniform result. This requires webpage design skills.
Managing the structure of the document using Desktop Publishing Tools.
Creating Front, Content and Index pages. This requires use of Desktop Publishing Features.
Monitoring Student completion of each section.
Members of the Editorial team are the students who will learn the most from this Project. While it is too much to expect them to contribute pages, they will still learn about the subject itself by working with the material.
Integration and Publication
The Web now makes it possible for a student project to be published in the International Forum. In addition others can access it, maintain it and add to it. The published document could be reworked by a number of different classes throughout the country until it is considered a complete unit no longer suitable as subject material for this project.
Students who contribute pages can be assessed on their own pages using the usual standards for any essay. Assessment of the editorial team is more difficult. The editorial team and the contributors rely on each other to make a successful final product and the contributors will want their pages to look good within the final publication. Therefore it could be appropriate for the contributors to assess the Editorial team based on how well the team is perceived to have done its job.
Other possibilities for X which give emphasis to Information Technology subjects are:
Rock Concert Technology
Event Creation - e.g. Commonwealth and Olympic Games Openings
Accounting Systems - including prehistoric examples
Special Effects in Entertainment Media (Film and TV)
Colour - using the Colour Theory Section above as a starting point
Creating Logos is an important task for any business enterprise, even for zero-budget non-profit charities. Presenting an image which catches the imagination of the public for whom you are providing your service is an important part of establishing the service you seek to provide. Because of the large range of media which are used to project an image in today's world a lot of constraints have to be born in mind. There are two major media constraints:
While signs can be painted in colour, complex signs which require artwork over and above what can be provided by letteraset type sign painting become expensive. The cheapest signs should be designed to use only basic shapes, flat colours, and letters using fonts available in letteraset catalogues.
Printing in magazines and newspapers
While a complex design can be used in printing, it needs to be simple enough to be clear when printed in the suboptimal quality provided by newspapers, and of course restricted to grayscale. Because newspaper is not very white to begin with, and black print is not really black , gray shades should not be relied on too much.
There is a tendency that can be observed in all company logos, to simplify and stylize the logo over a period of time. Examples are Coca-Cola, Kentucky Fried Chicken, and most any newspaper banner. This is not so much a trend to the "cheap and tacky" so much as a realization that logos can look degraded in a medium that is of substandard quality and so make the logo look bad, and also that a logo works on the basis of its generic impact, rather than on intricate detail.
Ideally, a logo designer will design a range of logos for the service or product which are appropriate to specific medium, and which take advantage of whatever features the particular medium provides. For newspaper advertising, a dramatic black and white logo with some detail may be used, for instance 3D effects and decorative effects. For signage, the image may be simplified, but enhanced by using colour effects. For quality printing of company stationary and advertising in glossy magazines, and expensive billboards, simplicity can be enhanced with more complex colour schemes, colour gradients, and colour images. Here the main issue will be the number of colours to be used in the printing process. Otherwise, computer image and photolithography techniques cost the same regardless of the content of the images.
On the net where complexity, colour, and even animation cost nothing to reproduce, the cost lies entirely in the initial design effort. Because of the limited size of a computer screen, special efforts are made to create an impact, and so much more expense is put into the design phase of creating logos on the web than are for creating business letterhead although the effective use is much the same, something to go at the top of the page.
Beyond the aspects of general graphic design for the look of a page, is the design of the logo, which will at some stage employ lettering representing the product or service. The detail that may look good in print media may not work on the web and differing design concepts may be required which use the same underlying logo. It is easy to think initially that a product or service is entirely web-based, but as it matures it may well need to move to print media to advertise its presence on the web to a wider audience, or to advertise specific product releases. Therefore it is not wise to rely on logo features that will not translate to the print media, but rather for web design to build on a basic design and heighten impact with special features.
The key to giving a brand name a unique look over and above its basic design features of:
the name itself,
letter alignment ( or non-alignment ),
and its graphic qualities of texture (fill) and edging (border) for the letters
is the use of shadowing and 3Dlettering effects.
There are a number of programs which provide 3D font design tools which also incorporate special graphic effects and animations. These programs are more advanced versions of the GIF-animators mentioned in the Intermediate Chapter. They typically produce GIF and/or animated GIF images but provide special tools for sculpting letters in 3 dimensions and providing special lighting and textures similar to that provided by pure 3D image tools such as POVRAY.
There are a number of leading graphics software packages which include 3D logo design and animation, including Corel, Ulead and Adobe. These products compete in the marketplace and do so by attempting to lock the user into their range of products. You buy a painting package such as Adobe Photoshop, which stores your work in file formats specific to Adobe. If you then want a 3D animation package that you can combine with Photoshop, you find that Ulead Cool 3D for example also stores your work in its own specific file formats. Important files such as vector maps (files which describe the shapes of objects) are not easily transferred from one company's range to another. Also libraries of supporting graphics such as texture tiles are held in specific formats which cannot be transferred. If you use a texture in CorelDraw which you decide you also want to use elsewhere in other graphic work using Ulead COOL 3D, you are stuck.
For this reason, it is important not to assess any graphics program simply on its own merits. In addition you must assess its position within the manufacturer's full range of graphics programs, and how it integrates with both those programs and other manufacturers' programs.
Description: Ulead COOL 3D 3.0 gives you the power to create stunning animated 3D titles and graphics for Web pages, videos and presentations. Use True Type fonts, import graphics and even draw your own objects or convert images into 3D graphics. COOL 3D 3.0 delivers over 20 exclusive special effects like Blast, Distort and Fire that no other 3D titling package offers. Drag-and-drop all your effects for fast and easy results or customize to perfection. And do it all in real-time without any complicated commands or modeling.
The above abstract is quoted from TUCOWS 30 Aug 2000. Ulead has been a leading vendor of imaging software for over 4 years and has developed good market share and sophisticated products from an initial base of simpler products. This product is tailored for ease of use for generating logos but is so very fully featured that it is not a simple program that can be picked up and used quickly. Learning the features of the program and how to use them effectively takes many hours study and training. This is a semi-professional type of product which is a step below getting involved in all the complexities of professional quality 3D modeling and light-tracing techniques. The special features and transforms mentioned in the abstract give the user the opportunity to recast a basic logo in a variety of forms and actions which can add interest and humour to webpages, such as making characters shatter, collapse or burst into flames.
The Chapter on future careers for students refers to future careers in image design and in 3D rendering. If you have looked at the prelude to virtual reality you will appreciate that Active Worlds is a challenging medium in which to work. But it is also one of the most accessable for beginners and the most rewarding. It provides most "bang for buck" for beginners. It is also conceivably a career path in its own rigtht. AW is actively advertising for staff on the front page of its site. Also Y12-13 students could set up their own AW servers for about $200 NZ on their home computer and sell web access services to local businesses.
Avatar is a word that is slowly coming back into the public vocabulary. Webster defines it as "the descent of a deity to earth in an incarnate form; a manifestation or embodiment."
This idea of avatar has been appropriated to mean something new. An avatar may be solid or ethereal. An avatar is a figure representing an animistic figure which is used as a guide or representative for some body which may be a person, a company, or country for example. Avatars may be realistic representations of real people or they may be totally fantastic, surreal or even dada. Avatars have existed under other names such as mascot for some time. It is only with the development of avatar technology on the web that the notion of Avatar is being generalized into an overall and comprehensive concept.
The most famous avatar existing today is Mickey Mouse. MM is used as a guide for children to relate to, but does not have a lot of character. MM is the emblem (mascot) of the Disney Company. Compare MM to other Disney comic characters and MM can be seen to be a figure that lacks character, bias, and excess, compared to say Donald Duck. MM acts as an ambassador to Disneyland.
Each Olympic Host Country now creates an avatar to act as ambassador to the Games. Avatars are very important as advertising tools. Many companies use avatars to promote their products. The avatars may even be represented by people as actors. Particularly in the USA, godhead is replaced by the cult of fame, and the famous can be their own avatars.
Due to the need to deliver an avatar to the public in as complete a number of formats as possible, avatars must be conceived three dimensionally, and are best of they can be realised physically in 3-D. Mickey Mouse started as an animated black and white graphic drawing but was altered until he could be represented by a person in a costume.
Avatars were rediscovered when pictorial representations of people were required to populate 3-D chat worlds. Avatars have a cyber representation which allows them to do several functions. The expected functionality of an avatar is still being developed, but has major articulation joints for walking, sitting, etc and can express a basic set of attitudes and behaviours, like say no, say no emphatically, wave good-bye, etc.
Avatars are used for modelling human sporting activity, and as the basis for creating 2-d images for movies and cartoons. But the most useful purpose they have in the educational field is to act as ambassadors to various school lessons, subjects or projects. They can engage younger children and draw them into the learning experience. Avatars have a big future in education.
A useful avatar project might be to take an existing webquest project for instance and add an avatar to it to make it more approachable for young children. The avatar is created as a 3-d model even though only 2-d images of it may be presented on the final webpage. Dammy the Beaver is an example of a mascot (here only in 2-d form) used to make a webpage more accessible to primary school children. Creating such mascots in 2-d in a consistent manner requires good cartoon drawing skills. Using an avatar generating package overcomes this problem. Also the avatar can be reused even if its creator moves on.
The science of avatars is only just beginning. In the next 20 years, yes the lifetime of the next school generation, avatars will be used to model genetic modification and selection of us humans. This will be a huge issue and industry by 2020.
In the Intermediate Section, two webservers were recommended, Sambar and Tclhttpd, both being free and easy to use. But Tclhhtpd does require profficiency with Tcl to make proper use of. Well, now is the time.
Here are some notes on using Tclhttpd.
An additional feature of Tclhttpd is the .tml format file type called a 'template'. This is a text file which is processed bu the Tcl command [subst] to create the page text. In this format text is written as is (with some protection of [ $ " characters) and Tcl procedures can be dropped anywhere in the text inside [ ... ]. It has been named "template" but this is a misnomer because it gives the impression that the .tml file provides a framework that you then fill with content. While this can be the case, it can also be used to hold content with a thin shell of framework around it. This depends, for instance on whether your website content is held in text files or in an RDB.
In particular the html package for generating htm tags finds a use here. Using the html package may sound like extra bother if you are fluent enough in raw html, but the server together with the html package provide some useful management facilities. Each directory in the docs directory tree can have a file called simply .tml. This file will be read first before a .tml file in the directory is processed. In addition, for any .tml tmplate file in a given directory the .tml files in the parent directories are processed in descending order. This means that you can put general management procedures in these files and tailor them to the particular directory application you are working in.
Now the html package provides a hook into these files by having a global variable which you have access to and can store any configuration data that you like. In particular the html package looks for array elements of the form tagname.option and inserts these option values as the default in your html tags unless you override them with explicit values in the text. This gives you more flexibility than using CSS. The html configuration naturally cascades down the file structure. You dont have to manage it as you do with CSS. To a large extent this restores the formatting power back to html tags directly. For this reasone you may want to think very carefully about how you structure your docs directory and the kind of layers of format specification that you want to have available to work with when you design a website.
This aspect of the tclhttpd server has not been fully worked out yet. People are only just beginning to make use of the potential functions available here. As I discover new ways to do things I will add them into WEBSCOOL so watch this space.
Some useful hints are being put in the wiki.
Needless to say, these features should be considered when embarking on any of the web projects later in this Section.
It is relatively easy to design and publish a webpage. But to design and maintain a reasonably sized website over a longer period of time, that remains interesting to return visitors, stays lively and fresh, is easily maintained with fresh material, and looks good on most browsers; - that is different ballgame entirely.
The first issue is of longterm maintenance. The solution to this is to house the webpage content in scripting code (such as Tcl) which takes care of the general page layout. Typically there will be a pageheader procedure and a pagefooter procedure. Many of the HTML tags used in the page content may also be driven by procedures so that they can be changed globally by a script. One way of extending the power of HTML to include refinements in layout is to also use CSS (Cascading Style Sheet) specifications. CSS offers additional effects at a level lower even than HTML provides for. Using the more arcane elements of HTML and CSS brings up the problem of designing layout that looks good under most common browsers. The webpage designer must also be aware of which fonts are available on target browsers and how to invoke generic fonts to get reliable effects, this also applies to which colours to use. The pages will be served from a webserver that supplies various built-in functions such as auto-includes and in-line macros. The webmaster will also be familiar with the CGI scripting required to process forms and cookies. Finally there is the issue of keeping up with current developments. Webpage specification is perhaps the most volatile software technology ever to come into being.
The above list of technical issues demonstrates the complexity of maintaining a website, without even considering the issues of system administration and graphic design. This is all complicated by the fact that much browser implementation of CSS is incomplete and buggy.
Cascading Style Sheets were developed for three reasons. Firstly to provide a markup language which was an International Standard immune to corruption by proprietary interests. HTML had become so degradated with proprietary variations that it was becoming impossible to write a useful browser.
CSS was also introduced in an attempt to break loose from the HTML definition. The HTML definition was itself being set as an international standard and as such would become difficult to change and develop in future. IN the late 1990's many people had realised they wanted a markup language that was far more detailed then anything that HTML was ever likely to allow for. HTML was becoming fossilised. The CSS definition incorporated all the proprietary variations into a cohesive system so that it provided a comprehensive layout system.
The third reason claimed is a little more difficult to justify. The use of CSS is also claimed to allow for the encapsulation of markup language outside of the editorial content (actual text) of the page. IN a sense this is nonsense. HTML never was editorial content. In fact most any text needs some kind of presentation standard to make it readable. HTML is a markup language which means it is content surrounded by instructions on how that content should look in its media. However it is difficult to manage HTML unless all the webpages are script generated. In HTML there was no way for the webauthor to specify a particular kind of layout for some specific regularly-used form. In addition to the lack of standard enforcement, HTML provided many tags that did some things OK such as <PRE>, <EM>, <CITE> and so on. But if an author wanted something different to be used over a whole website each individual occurrence had to be handcoded, and maintenance of this could become expensive. HTML did not provide a mechanism for purpose-built tags to be introduced. CSS provides a data-definition language which allows for the encapsulation of new kinds of layout definitions. It also has a lot of refinements to layout which can de retrofitted to html by using the style attribute in most html tags.
But for websites in general CSS does not solve the problem of encapsulating website layout. It bridges the requirements halfway, the other half is made up by the use of scripting languages and server side support functions.
The following links are to sites which offer advice on webpage authoring from a visual design perspective:
Dmitry's Design Lab - this site has a wealth of detailed information on a huge range of aspects from a professional viewpoint. Dmitry Kirsanov is the author of "HTML Unleashed".
Desktop Publishing. As the title suggests, this site deals with printing as well as web design issues. Many of the design criteria relate to printed media. Notice how the examples given in ten rules of good design are print media and deal with issues more particular to printed page layout than to webpage layout where the view of the page is only partial.
The HTML Tutorials covers a few topics, including heading decoration and table decoration.
Design a webpage so that young children can select the style of webpage they want, write in some content and add a picture they have drawn themselves. The webpage should allow for a variety of colour options and libraries of image options where appropriate. These include:
background colour or image
margin colour or image
a selection of fonts for a heading again with colour selection.
At the same time more new applications are appearing which take a slice out of your computer resources. webcasting, P2P file sharing, media playing etc. And your state of the art computer of 2 years ago can no longer keep 6 IE browser windows open without falling flat on its face. People fall back on lite webbrowsers. They dont really need all that flash stuff to do the job that they want to do, but they do need webpages that load easily and have their necessary functionality to do the job they are there for.
There has been a trend to load entertainment content into webpages, but people are getting their entertainment content on their computer by other means which gives them more choice about what they hear and see, rather than being driven by the page content that is pushed to them in conjunction with a particular webpage function. For example, people play mp3 music files on their computers while they work. A webpage that delivers streaming audio at the same time is an intrusion. People would rather hear what they wish to, their own choice, rather than have a webpage force what they hear. The only exception is if they go to the webpage to listen to the music on the webpage. The same applies to video content for example pop music videos which you can now play in the media fold-out of your BIG browser.
The move to lite browsers is a reaction to the media pushiness of the BIG browser and its capabilities and its power to intrude : as well as to the BIG browsers impact on a computer that is having to do more than it did when you first bought it.
Lite browsers typically do not support CSS or JS, only HTML! This means that your HTML must be written as well today as it had to be written in 1995.
A third factor which re-establishes the fundamental importance of HTML is its use in many other applications for information sharing, documentation and reporting. The HTML widget brings HTML presentation of information into every application. It is no longer the preserve of the dedicated web-browser. The creation of this material is generated by computer programs, and is kept relatively simple and as straight forward as possible. Layers of CSS and JS are a burden to the application development and the running of the application. The appearance and general use of the HTML widget also returns us to the fundamentals of writing good HTML that requires no added extras.
This means that no matter what fancy tools you are using to buils your beautiful webpages, CSS and JS of course, you must always take care of essentials.
Because of the move to lightness, away from CSS, in lite browsers, there is still a willingness to embrace as much functionality in HTML as is practical. This means that many features deprecated in the HTML 4 standard, it having being envisioned that they will be forced out into CSS, are being maintained in lite browsers.
An example of a lite browser built on an HTML widget is BrowseX which uses the TkHTML widget which can be included in most scripting languages, perl, python and of course tcl. TkHTML is pretty basic but good enough to present any well designed webpage. It omits fancy features that are in HTML 4 standard as we shall soon see. It is a good example of what a basic HTML page should be designed to render in. If your webpage does not look good in BrowseX then it needs some reworking - its an acid test.
Currently in 2006 there appear to be two developments in progress to produce a new Mk 3 TkHTML widget.
When you read the HTML 4 standard, in light of these trends, you can see that it is in fact a strongly political document that seeks to undermine basic functionality in HTML and replace it with layers of complexity. Using CSS does not release the author from having to write complete HTML. It only adds another level of complexity (and expense) that provides additional features to the basic bread and butter.
This in turn creates an extra management problem - to make sure the HTML and CSS stay in sync.
The following topics look more closely at these issues. They should be read in at least two browsers at the same time.A Mozilla based, a gecko based (the new Mozilla) such as Forefox, a Tkhtml widget based such as BrowseX and MS IE are good candidates. As time goes on antiquated machinery becomes more common. Particularly in the education sector which does make huge demands on resources, hardware is often second-hand and 5 years or more old. This means the webpages should be written that look reasonably good on old browsers. The webpages should at least be functional.
It is difficult for adults to believe - but many fortunes in the computer industry have been made by teenagers who designed a simple tool that was useful at their time and situation. A famous one is the HotDog HTML editor written by an 18 year old Australian and sold over the Web. Opportunities in this area abound and will continue to be available for many years as the technological coalface continues to change dramatically. It is very plausible that a class project to build a piece of software could result in fame and fortune. There are 3 major areas in which this can be achieved.
These tools can be built in the main using only scripting languages. Knowledge of a compiler language such as C++ completes the skills requirement to undertake any of these tasks - but does not need to be known by everyone.
There is no point outlining any specific project definitions here because the
creation of a tool is a product of a perceived need to help solve a specific problem.
But possible examples are:
Scripting language extension for virtual reality definitions
Scripting language extension for a midi or mod music definition
Scripting language extension for audio definition and manipulation
Painting tools based on the above language extensions
Multimedia Painting tools suitable for pre-schoolers, Y1-2 etc. One example is to write a colour selection window which provides words for many colours and pronounces the words. It may also provide some information about the origin or association of the colour name such as a description of why salmon pink is named after salmon, and what salmon is.
Script Macros for theatrical light sequences
Graphic image generators - both still and video
Application System - A possible application system could be a household kitchen inventory, order, schedule and recipe(bill of materials) system. A database models the kitchen stock and also holds a recipe book and a schedule of meals that are planned to be prepared.
This book by Brent B. Welch is now in its fourth edition and has replaced Ousterhout's original book on Tcl. You also get a CD with all the code examples listed for easy copying.
Welch often pre-publishes a few major new chapters on the web. Keep an eye out for these, download them and print them out for easy reference. You need the book too as these only cover a few of the 50-plus Chapters in the book.
The help documentation which comes with the ActiveState version, bundled in Windows and Mac but not with Linux. Download the Active State HTML Help documentation along with any release of the ActiveState version you install and add it to your webbrowser favourites.
At 3Mb it is a big document, not easy reading and can be real cryptic. Besides being able to check up on Tcl and Tk commands, this help documentation includes many extensions and the Tcl Library Tcllib and the Tk library Tklib.
Here is a shortlist of extensions which you should be aware of before you start any advanced project in Tcl:
This is half of the major extensions. Make yourself well acquainted with what they do and when you might want to use them. Check out the other extensions to see roughly what it is they are used for.
This is just a handful of the available modules most of which are rather specialised, but the above list is fundamental to anything you might want to do. You will quite likely use all of them in any well-developed application you write.
A careful read of htmlparse will reveal that it does not do anything too clever, simply identify tag blocks in html, or anything tag delimited for that matter.
Tcl/Tk has its own wiki. Checkout the wiki's wiki entry for notes and links on the history of wiki. wiki.tcl.tk is the first stop for all things regarding Tcl and Tk, a marvellous resource that is constantly updated. The home page tells you everything you need to know, including how to search the site. There is more to this than just putting a word in the search box. This is a must read because search methods are being refined with time. In particular there are handy hints on how to use google on the wiki and how to embed the wiki in your browser search engines.
It is possible to list a host of handy pages from the wiki here, but that would just be duplication. Where particular pages support a particular WEBSCOOL section they are mentioned. Tcl, Tk, extension and library commands all have pages in the wiki which often feature interesting ways to use each command, and sometimes tutorials and helpful hints which the documentation totally lacks. For instance some basic Tcl commands like [lindex] and [foreach] have been extended with new features which may not be in your copy of "Practical Programming in Tcl and Tk".
However this section does list wiki pages which can be considered as a basis for advanced Tcl. Things that it is helpful to know before you even get started, as these features, which you may not have the word for to begin a search, or which you had not figured would even exist but just happen to do what you want, or which save you the trouble of having to do it all yourself from scratch.
Once students can write html fluently by hand they can then look at using the html package. The html package in Tcl, in theory, saves you the trouble of having to write html by hand, so why learn html first?
The html package assumes the user is fluent in writing html and knows precisely the effect he wants to achieve with html and so can then use the html package to achieve that effect more conveniently. The html package does not do anything smart, but it does provide additional structure which makes the managing of large complex webpages simpler. This is in particular when combined with the tclhttpd webserver, .tml template files and directory templates. The html package only begins to show its virtues compared to hand writing html when used in this context.
A basic paradigm that is necessary in order to write more complex programs is the notion of programming objects. This notion has been developed in various ways depending on the programming environment in which the notion of object has been developed. There is as yet no uniform notion of exactly what an object is or how it works, although there are some very well-established programming systems which use this idea. The reason that no uniform notion of object has yet formalised is that most of the paradigms is use today have flaws which prevent them from being adopted as obvious solutions to all situations. Major models of object oriented programming are C++ and Eiffel.
In this section we will take an intuitive look at what an object is, so as not to dogmatise exactly what objects have to be, but rather give the reasons why objects are a useful notion, and how to make them work well no matter what context or form of implementation they may have.
Firstly, an object is designed to be a useful reasonably complex, self contained function. This is a good definition of the sort of programming task that is given to an individual to complete as part of a large project, and this is the raison d'etre for the notion of object. It was invented in order to encapsulate a specific function within the context of a large project.
This encapsulation provides the following benefits if it is designed properly:
Makes for easier maintenance of the project in the long term.
Protects the module from changes made to other parts of the project, both in the design and implementation stage, but also long term.
Allows for independent testing of the specific object functions without having to be attached to the rest of the project.
Allows for easy diagnosis of problems occurring throughout the life of the program.
The success of an object's design can be measured against the above parameters. There is after all good and bad object design as with anything else. Designing objects is an Art.
Object Oriented Design is an essential skill in the design of any project that is more than trivial. Indeed the reason that the text editor project was such a trivial exercise is because we reused objects when had already been written such as the button and text widgets and the file search methods. Consequently this exercise MUST be completed before any advanced programming tasks are attempted. For one thing completing this exercise will take many hours off every new project that is attempted.
Because Tcl is an interpretive language, it offers special techniques with which to work with the idea of an object, which compiled languages like C++ cannot provide. To look more closely at what an object is, we use an example that can be reused by every application that you ever write from now on; this is the Application Base. This module can be used as the base module for every other application that you ever write.
A class can undertake a small-scale project to produce a software product using a scripting language.
One possibility is to coordinate this through all participating schools and hold a competition for the best result. This would ensure that creative flair enters the exercise, rather than it being an exercise simply to be completed. A project can be chosen for all classes to complete. The project can be a product that schools themselves can use, such as educational tools, a web-based typing tutor for example. By undertaking a new project each year - schools will arm themselves with their own teaching tools. ICT can now be applied to every sphere of human endeavor and so the number of possible projects is huge and covers every facet of education. The following list of projects is grouped by major curriculum subject, although most of these projects are interdisciplinary. Cross references are provided where appropriate.
Tcl can be reconfigured by replacing the procedure names and options with other equivalents (in NZ - Maori). This is not such a difficult task. The more interesting question arising from this project is what does it achieve? Or is it counterproductive? The language issues in this project are perhaps more important than the scripting project itself, which may be redundant.
There is less semantic debate about this project. Many applications such as the typing tutor could be reconfigured to provide an ethnic language version, with exercises in that language. This can make tools more approachable by older people.
This is also mainly a programming project. The application provides a writing environment. In addition the way that the reader communicates with the story is via language, so the application has to be able to understand language itself.
A number of scripting projects have been suggested in the Introductory and Intermediate Chapters which could be untertaken at this level. The products are tools which are tailored to operate within the education sector at a specific level to acheive specific educational goals.
Simple class webpage authoring tool for primary schools Y1-. This tool would be a webpage tool with forms. Some forms would be used by the school webmaster to define the overall page look. Another page would be designed for students to fill in the page content.
Introductory level webpage authoring tool.
Introductory level website tutorial on <html> - should be done in Intermediate Level webauthoring project instead.
<html> text editor - with syntax (conformance) checking, tag highlighting and auto endtag insertion.
A WSYSIWYG editor constructed by attaching an updating tkhtml widget to the text editor. This gives two parrallel panes of text and html.
There are many typing tutors around that are available for students to pick up and use to learn to touch type. In fact there are so many that it is difficult to chose. Many do not have a graded instructional course with them. Neither Students nor Teachers can tell if they are using a Typing Tutor that will really give them a full graded introduction to good touch typing technique. Many available over the web are not free. Also they are standalone programs which have to be downloaded and installed before they can be run, and they occupy space on your computer. They may not track the progress of a class of students. They also tend to be much larger than is necessary.
A web-based typing tutor would be available to all students to use either at home or at school. The webpage would itself be the functioning typing tutor, with no special downloading or installation required on the part of the trainee. Progress can be centrally filed for every class and student so that the teacher at school can monitor exercises completed at home. Again this would be done by webpage access.
The actual problem is well known, and many of the students will have learnt touch typing using various tools, from self-instruction books, through classwork, and computer teaching aids.
The most successful product will be the one that pays attention to aspects such as
The quality of the instructions and sample files
Progress monitoring and reporting for the teacher
Fun to use elements - such as use of sounds
Provision of a class template so that the webpage looks
tailored to the class.
The project can be judged by teachers all over NZ who can access all
the products over the web and decide which one they like best.
The purpose of this exercise is to give the student an idea of Relational Database internals.
The project can be divided up into two sections: Learning about the basic structure and designing and implementing new features.
Learning about the basic structure can be done either by way of passive tutorial, or by actively building the RDB from scratch.
The basic structure of an RDB is simple enough that it can be constructed from scratch with guidance. The process will also give students some idea about problem solving techniques so that they can apply what they learn from this first section when they come to design and implement their own features in the second section.
In the second section students decide how they want to extend the functionality of the RDB. There are a large number of topics to choose from and as they are implemented by various classes in the future a fully featured "not so micro" RDB will emerge. At some stage the resulting product will be too cumbersome to be the subject for this project and it will be time to revisit the project from the start again, or perhaps look for new directions in a cut down version of the product.
Students will already be familiar enough with other RDB products to see many possible feature extensions to implement.
Deciding which one to implement may be more of a problem. They will need to make bang-for-buck judgements. That is to say determine which feature is feasible within the constraints of the classes available resources, and which delivers the most useful features for the comparative amount of effort required.
Here is a list of some of the more obvious features which could be introduced:
File locking and security
Diagramatic key mapping
HTML formatting of Select Statement output
Report formatting of Select Statement Output
RDB Web Server
Improve the efficiency of the Select Statement
This is an interesting project to do using Tcl, because Tcl uses associative arrays with very efficient binary hash searching techniques. Tcl also has state-of-the-art pattern matching functions which are better than anything that many RDB's currently use. These functions, combined with Tcl's own command list structure, make it a feasible language in which to develop an RDB for small applications with tables that do not exceed 1 Mb or so. However databases of up to 50 Mb are being written using Tcl in production on-line environments.
In addition the Tcl Micro-RDB can be developed with Tcl intrinsics which give the RDB special smart features. For instance Tcl commands can be embedded in the RDB data or Table descriptions. There is room here for truly creative feature extension and the development of totally new products based on the underlying Micro-RDB.
SQLite is a popular small database engine. It is fast, compact and very accessible. In speed it compares favourably with other DB engines such as Oracle, mySql, postgres, informix etc being a little faster than these on on typical requests. In size it is about 300kb, that is a very small footprint. It is very easy to download and install and get operating. The phrase "in 5 minutes or under" is quite valid. SQLite can be downloaded in 1-2 minutes on even a slow modem, installs in a few seconds. The documentation to get started is clear and can be read in about a minute and you are on your way with a minute to spare for operator glitche.
SQLite has a couple of other good points.
A database is held in one single file that can be ported within the operating system it is created on. It may yet become a standard format for monolithic databases. Most other databases have a complex hierarchical file structure.
It has Windows and Linux binary distributions. A database can be ported between Linux and Windows in text form. The database file itself does not port.
As well as the sqlite program to access the database, a Tcl binding is provided which makes a SQLite database available in a Tcl program with two commands.
SQLite is basically a btree file structure into which anything can be poured, on the basic of all records in the file structure having a unique key of (table, rowid). The rowid is a default field applied to all db tables as the physical primary key. If the table has a logical primary key which is an integer, this can double as the rowid. SQLite has its own table in the database called sqlite_master in which the dtabase structure is held and described.
SQLite is a very simple implementation of relational database principles. Far more simple than Codd's model. SQLite is not concerned with domain space compatibility and is untyped. All data is inherently text of no particular type. SQLite 3 permits two forms of character base, both covering all language types which have character encoding. Numeric data is held in character form (except for the physical key rowid). Numeric data in SQL expressions is handled by a set of default conversion operators not worry about the domain space of
There are some things SQLite does NOT have because it is so small.
There are no application front ends for inputting data.
SQLite handled all non-integer arithmetic as real and so rounding errors proliferate for non-integer expressions. There is no fixed decimal arithmetic. This means that monetary values such as dollars and cents have to be handled either as cents (as integers) or else all arithmetic expressions in SQLite have to be rounded. SQLite provides an intrinsic round function. This is an inconvenience which can be dealt with.
While SQL has TRIGGER and VALIDATE clauses, in general, logical field and table constraints cannot be embedded in SQL in a flexible manner. ALTERing logical constraints in the TABLE definition typically requires deleting the table and recreating it. This is not such a problem if fields are being added or deleted, but if only logical attributes are being changed, this is overkill. This issue serves to emphasise SQLite is being simple a physical implementation for a relational database rather than an implementaion of the complex logical model used by postgres and other higher end databases.
This project picks up on ideas from the Micro database project and builds a wrapper for SQLite which gives access to the more logical model of a relational database. This is done by using the MicroRDB logical model as a base for the definition of a database using SQLite. The domain, table and field tables are set up in SQLite and are used as the basis for generating the SQL code required to define the user tables in SQLite. These tables have option fields which imitate the Tk option database, so that widget options can be easily matched. This provides a close bridge between the data definition and the way it is displayed in widgets, html and printed form.
Front end applications provide user friendly access to data. There are two main formd for this, a table (spreadsheet) form, and a record oriented form which can be used for a dataentry application program or for record oriented dataentry via HTML over the net. These applications use logical validation, logical keys and representation options held in the logical definition tables.
A Manager program frames all this and provides management support for creating, backingup and moving databases.
The material for the SQLite Manager Class Project is here
This project is based on the educational web server used by schools. It combines web processing, with algorithms to manipulate relations, searching and storing techniques, and relation database.
Web Search Engine Class Project
This is a project for computer music students. There are two major and very different formats for sound:
WAV format corresponds to literal sound in a digitized form. MIDI on the other hand is closely related to western 12 semitone scale music and uses the idea of bars, notes, and pitch. However MIDI is an imperfect medium in which to create music and its imperfections need to be understood in order not to attempt impossible tasks using it. But much of what we know as Western Classical music can be coded in MIDI format if care is taken and some special techniques are used.
This MIDI editor gives the student insight into how midi works, and the way that different machines interpret midi files and translate them into sound. This way a student can use this editor to experiment with MIDI coding that may fall outside that which is allowed by the usual MIDI software editors which tend to be score-based.
This MIDI editor is not designed for coding pieces of music - but is rather a tool for creating and testing special MIDI phrases to see how a particular sound card interprets the MIDI code.
The starting point is the text editor from the intermediate section. Firstly it is changed so that it displays hexadecimal format.
Many links including links to MIDI format are on this page.
Simply by adding the Tcl [after] command to the set of commands which the graphical painter uses, an animated graphical painter can be built. The painter is equipped with an extra animation toolbar which allows time related changes to the objects in the canvas. The three main changes are change in colour of an object, change in position and orientation of an object, and change in coordinate specification. Various other changes may be specified which are particular to specific kinds of objects.
The most interesting aspect of this project is the idea of drawing lines that represent time-based trajectories. This will give some insight into how time and space interrelate.
Finding maths projects which engage the eye and the heart is a difficult task. This project engages the eye, and hopefully the heart, as well as the mind.
Painting pictures may not seem to be a task involving mathematics, but painting tiles is a major exception. Tiles are the background textures used in webpages. They are rectangles of colour and texture which join together seamlessly with themselves. The label or canvas Tcl widgets can be used as the basis for painting tiles. The mathematical notions involved in creating tiles are so diverse that only Y12-13 students will have sufficient knowledge to undertake this challenge.
The Mathematical principles involved are:
using toroidal space, which is the constraint defined by the tile's edges having to match up.
using differentiation to control 3D effects
using integration over two dimensions to create balance.
using algebraic inequality expressions to define lines and shapes
using parametric equations
using finite mathematical expressions using modulus to define periodic patterns
using random numbers to generate random effects within controlled constraints
using complex mathematics to define transformations
Not all of this should be attempted at once. Any class undertaking this exercise should look at what has already been done, and at ways to build on existing projects and then use the project design and implementation processes already learned to develop their tile painter further.
This image calculator is sourced from the Tcl wikibook. This is an interesting visual introduction to general function theory and its practical useage in a manner which is immediately realised. It uses parametric functions to define images. So this is also a good tool to use to get a feel for how parametric functions work. You can use this calculator to ask students to create images with their own parametric functions, such as circle, elipse, staircase, bell curve etc.
Create a more sophisticated image calculator based on the paradigm used in the Chu Space Calculator, to which the user can apply constant, unary and binary functions on graphic images, and store and execute simple scripts. Use the functional image calculator above as a starting point.
Constants can be saved images, flat colour planes, or planes generated by equations.
The unary functions can be colour transforms, discrete, or continuous, over the whole colour range, or over one particular colour axis, or 3-d functions over the colour range. In particular students might get some real feel for how continuous complex functions behave. The calculator could have a window which allows the user to draw functions in the three colour dimensions and then apply the resulting functions.
Other types of functions may be able to be written in Tcl and applied. In addition another window can be used to define topological functions such as sharpen, emboss and blur.
The binary operations can be of masks, that is a binary map applied to an image, the merging of two images, more complex functions which still operate pixel-wise, and then the more complex merge functions which operate on neighborhoods of pixels.
(Lambda after the Greek name for the letter L)-Calculus is a very simple notation that has proved to have surprising power. It is one of several models developed mid-20th Centruy to resolve issues in logic, which all proved to be different ways of describing the same thing, that is, what is effectively computable. -Calculus is the simplest of these systems and proves to have relevance in computing languages. So while it can be easily explained, the ramifications are considerable, and so it is left to this advanced section to consider.
Here are some links to an intro to -Calculus:
wikipedia Monash University and Google
One practical approach to understanding -Calculus is to create a [lambda] procedure in Tcl which can be used to explore the power of this deceptively simple structure.
This book has already been mentioned in the Intermediate Section. Here is a short list of projects suggested in the Art of Computer Programming - Chapter 1 with comments on what might be required to do each project. They involve more maths sophistication than simply playing with numbers.
Knuth - Exercise 1.2.1/14 - This is a major unsolved problem at the core of the Artificial Intelligence issue. Simply by considering this problem, students will get some real idea of what constitutes Artificial Intelligence.
This section presents some ideas for special website projects. These projects call on a broad range of advanced skills: scripting, webpage and graphic design. They are a suitable year-long class project for Y12 or Y13. They could also be used as the basis for National School Competitions.
In some of these, not only must the site be designed, but critical content must be provided. The projects described so far relate to the "Language" curriculum in its most general sense, perhaps "Communication" would be a better term. Some sites could be static one-off webpages, but the idea here is to create a site which has a life of its own and which can be developed over time as more information is contributed. The "site" design should provide the functions which allows the site to have a continuing life, perhaps by providing message boards, continuing avenues of research, or an archive base.
The site can ensure its continued viability by having information which others will want to refer to: either as reference material for projects, or for practical ideas for school productions, or source material for critical studies.
Https is the Secure http protocol. This protocol has two functions, to encrypt the data being transferred so that noone "listening" to the http transaction can determine its contents, and secondly to ensure the sender and the receiver of the data are who they claim to be. This is required in order to overcome the very public way information is transferred using http version 4.
Http version 6 has already been defined and exists in sub networks of the www, and it provides a secure tunnel for the transmission of data between client and server. But only ISP's with a special interest in version 6 are using it. Everybody else will cintue to use version until they are forced to adopt version 6.
And so https is used to cover this aspect in the meantime.
Https is considered indispensible to secure the transfer of information that could have monetary value such as credit card details. Banks and customers get quite uptight about this, but think nothing of having their credit card details written down on a card at the loacl video rental store for anyone to look at. But this is the way things are.
https works by using a hierachy of encryption keys. Each key comes as a pair. One of the pair, the public key is passed over the net automatically by the webserver and the webbrowser programs. This key is used to encrypt data being transferred. Its mate is a private key that resides on the webserver computer and this key is used to decrypt the incoming data that was encrypted by its companion. This covers the encrytpion aspect.
In addition to this there is the authority part of the key which insures that the data comes from the intended sender. The encryption key has an authority stamp that relates to a certicifate of another encryption key. The authorities must also match up when the webserver decodes the data. In addition at the webbrowser encryption end the authority of the key is checked against a table of certificates that all webbrowsers now maintain. The encryption key which the webserver sends to the browser in order to encrypt the data must have a certificate that the browser can recognise as valid, and that it does indeed come from the webserver it claims to come from. This is to prevent a bogus key being sent which encodes your valuable data and then catches it intransit, and decodes it, leaving something undecodable to be sent to the original webserver. At the webserver end a similar situation applies to ensure that bogus information has not replaced the original information that was sent in transit. As you can see this is a very elaborate system that is designed to be used at the levels of security required by secret government departments.
The result of this certificate of authority check system is that all certificates relate back to original certificates issued by only two companies in the world, Verisign and Thwaite. Thwaite is a later arrival on the scene and charges a little less than Verisign. But basically these two companies have a stranglehold on the business of issuing certificates. These companies to some extent determine what certificates are in your wbebrowser. This is a wonderful way for the US to make an awful lot of money out of paranoia.
There are ways around this. You may require https, but if your requirement is limited to a special audience, for instance your company staff, your can create a self-signed certificate with keys. When the company staff try to send or receive data ( a webpage or form data) their browser gives a popup noting the authority of the key and sayiong that it is not trusted because it has not originated from a chain that the browser already knows (from verisign or thwaite). However your staff know your company and expect to see this pop-up, because you have already advised them of it, and they approve it. It then gets added to the approved certificates in their personal webbrowser (and nobody elses) and from then on your https keys work just as well as a verisign one.
Much software uses this sytem internally and you never see it, for instance the Linux Secure Shell (ssh) in which all information passed between remote computers is encrypted. When the secure shell is first initiated it creates its set of public and private keys and then starts the sshd, secure shell deamon, which normally runs all the time on all Linux systems.
The business of setting this up is covered here.
Needless to say, when dealing with personal student data you will probably want to be using https.
A continuous story is one where a literary genre is specified and an opening sentence or paragraph is provided. Authors add to the paragraph in sequence. The English on-line Writer's Window provides a forum for a number of genres. One problem with this particular setup is that it only allows one strand per story. A website that allowed a tree structure to develop for each story would be better. The website could also monitor the most popular strands of the story and prune less active strands, or strands that get too old. This would allow for a more creative and consistent development of story ideas.
Other ways of building the story could also be attempted, such as building the story back from both ends together. Another option is writing chapters in parallel from the point of view of particular characters.
Plays could also be attempted. This is a favourite mechanism used in TheatreSports.
The site could include an archive of completed stories.
Build a site devoted to a particular text being studied in class. It may be assumed that once one such site for a text has been created, that others are superfluous or repetitious. It is possible for sites to become copies, but a good classic can be interpreted in many ways. In addition, our rapidly changing social values will mean that each new class of students will have different perspectives on the social issues embedded in the text.
This project may be specially suited to plays.
Special features may be included in the site that keep it live rather than a museum piece. A discussion forum on some aspect, like ways that special effects are handled in productions, such as Macbeth, Tempest and so on. Various production themes for plays such as Julius Caesar, both in schools and in professional theatre.
Build a site which allows students to contribute to the documentation of school slang, both in spelling and speech. It can also examine the values embodied in the slang expressions used. How much is deprecatory, how much is positively expressive and so on. It can also look at variations across age groups and regions.
Movies do not yet make it into the School Syllabus yet, despite now being accepted as the major and defining Art Form of the 20th Century. Similarly the way that TV series reflect our social values is also a worthy subject for study. Sites devotoed to particular movies, or aspects of movies, or genres such a movies of Shakespearian plays could be set up. Social values embodied in movies and TV could be explored in these sites.
Also the way source material is manipulated and distorted in order to make a product which flatters the audience could be looked at. Even a prescribed text play such as "The Crucible" can be studied in this light.
One interesting jumping off point is to see how a classic text has been reinterpreted in the movies. Examples are Biblical stories such as Samson, and the way it is used in some very unusual ways. (I have in mind a movie in which the Samson story is replayed in the context of a currupt TV evangalist church set up in an old theatre in a small town in Tennessee). Also, Greek Plays such as "The Wasps" which provide the basic characters for TV Series like "Steptoe and Son". Also stories of Mythology such as Hercules, or the Norse Gods and the way these are reinterpreted in Opera, Theatre, Movies, TV and cartoons.
A second jumping off point is historical events, and the way the historical reality is twisted to provide the entertainment version. Again, "The Crucible" is a good example. Then to observe the ways in which the entertainment version becomes "the Truth" and replaces the historical reality.
With the advent of computer controlled lighting, theatrical staging has undergone a total revolution.
This is not about laser-lights, which are themselves computer-controlled,
but about the complete synchronisation of a theatrical event.
Having used Tcl to achieve a lot of results, one might think that is the end to the subject of computer languages. However Tcl is only one of three major kinds of languages that are used for programming today. Working with Tcl in a number of projects will soon have one thinking, "isn't there an easier way to do this?". While there may not be an easier way, other styles of programming languages offer better alternatives in many cases. Tcl was chosen for WEBSCOOL projects because it was extremely simple and yet full of the basic features which are required to accomplish the required tasks. Tcl is an example of a "scripting" language. Typically scripting languages have very simple syntax rules, they are interpretive, they perform functions on simple objects. These three properties are virtues when writing small programs for quick results. But for large projects with a long lifespan other languages are better. There are two main classes of languages in addition to scripting. These are imperative languages and functional languages. Here is a list which classifies some languages:
Developed syntax Compiled Fast Variety of Types Mild to Strong Type Checking
Simple syntax Intepretive Slow Few Types Loose Type Checking
Developed syntax Interpreted/Compiled Slow/Fast User Extensible Types Strict Type Checking
FORTRAN COBOL C PL/1 C++
UNIX OS commands FORTH Tcl Python perl
Spreadsheet Programs SQL SML HaskellHUGS
Imperative Languages were the first to be developed beginning in the mid 1950's as the first development beyond Assembly Language. They were mainly concerned with "instructing" the computer, in other words giving the computer computational instructions. Examples are FORTRAN and COBOL. This continued to be the paradigm for the next 20 years. As the computers and the languages developed in power over the next decade more complex ways of delivering instructions to the computer were developed culminating in the LALR syntax compilers. The best examples are C a relatively simple language compared to PL/1, one of the more complex languages. These languages attempted to be reasonably fully featured, a "total package". Both languages were extended by preprocessor engines, the extension to C being C++. Extensions to PL/1 did not survive because they were not supported by IBM, the author of PL/1.
Half way through this process, in the 1970's midi (not to be confused wilt the music file format) computer systems appeared for which compiler languages like PL/1 were too cumbersome. Indeed C was designed for midi computers and its design benefitted from LALR parsers and the "structured" programming paradigm. C was the first new major language to not have a GOTO statement. Very simple interpretive script languages had already existed such as BASIC and ALGOL which were both mainly used in academic circles. But the midi computers also spawned UNIX, a script based operating system command language in which files were the main objects.
As computers became faster and larger over the 1980's, a reaction to the heavy syntactical rigour, and the maintenance of a complex compiling system spawned the interpretive languages we have today, such as Tcl and perl. The idea behind these languages was that they could help glue together existing applications or be used to prototype functions. These languages were extremely simple and were quickly developed and written.
At the other end of the scale the Object Oriented Programming paradigm was developing mainly via C++. But C++ had problems and so Object Oriented Langauges such as Eiffel were developed. The next level in modular extension of language constructs is still ongoing. These are the Functional Languages, so called because they are based on Function Theory. Languages such as SMP and Haskell are still being developed and are mainly used in academic circles. It may be ten years before there is a commercial market for programmers for these languages, however the concepts underlying functional languages are already mimicked in various ways by existing languages, so that a language like Haskell is probably the best language to use as an exemplar of current paradigms of programming constructs. For instance the language used to write the DOOM computer game and its sequels uses many of these paradigms in a competitive commercial world which is always trying to push the boundaries.
Scripting languages employ few concepts and are a good way for beginners to learn to program computers. Imperative languages introduce additional concepts of syntax, type, and data structures. Because they predate scripting languages they also use computer-derived concepts such as single or double word integer arithmetic and pointers. It is functional languages that introduce new language concepts in a rigourous manner which requires some depth of understanding of basic mathemetical concepts. These concepts can then be applied to imperative languages to the degree that the imperative langauge may use some of these concepts.
This section could arguably be in the Intermediate Section because it is a self-contained Tcl only project. Parsing tools are typically only one of the many tools which are used together in Advanced level Projects. However the whole subject of language design and parsing is generally placed in the Advanced category due to the bundle of new concepts and complex algorithms that are used in these tools.
Functional Progamming Languages mine the basics of mathematical theory starting with Functions, Relations and Logic and proceeding from there to encompass as much as possible. Trying to take in all of the Haskell programming language definition is impossible. Instead we develop a Functional Language which we call Omega in which we progressively introduce and implement the concepts of Functional Languages.
In the process of designing Omega, it is necessary to cover the subject common to all compiled languages, and indeed to any language of any sophistication, that of parsing syntax. All language has rules of association which prescribe where in a sequence of words, certain particular types of words are appropriate, where they have meaning, and the type of meaning they convey in that position. The first two items are called syntax and the last is called semantics. It is possible to write sequences of words with dubious, obscure and ambiguous meanings. Ambiguous phrases are the kind loved by Oracles. But if the writer wishes to communicate a particular idea precisely then syntax becomes of paramount importance. Generally with computer languages, all communication is precise. However there are several occasions when we require computers to produce vague output, usually when testing programs for correctness or efficiency.
Parsing is the process of reading phrases and breaking them into syntactic units, verifying that they can have a meaning and delivering the resulting information structure to another process which translates the result into another language, usually one which a computer can execute directly. But a computer can parse a language such as Omega, it needs to be told what the syntax rules are. This is done using a program called a syntax analyser. A syntax analyser reads a collection of syntax rules, usually written in rather simple tabular form and produces a program which is able to check the syntax of each phrase written according to the syntax rules provided. That is, the output of a syntax analyser is a program!. This kind of program has be written in C and is used a lot. The original C program provided with the Unix OS was called Yet Another Compiler Compiler (YACC). A compiler compiler being a program that compiles syntax rules and produces a compiler, effectively compiling a compiler. Since then YACC has been extended to such an extent that a new program was developed called BISON, a bovine cousin to the yak. These programs allow you to attach semantic interpretations to the syntax rules and produce a complete compiler or interpreter.
Computers have spawned a number of interesting aleotoric devices. These a re visual fields which you manipulate to produce music. The kinds of sounds that can be produced can be quite inspiring.
Exercise. Do a survey of aleotoric musical devices based on graphical computer displays.
There are more strictly painterly ways of producing sound from graphic images. One is < a href='http://muse.eolas.com/' > muze which produces musoc from a drawing. You can download and run the free trial version. As you can see this is a Tk canvas with some drawing pallettes, rather like TkPaint. But the colours represent sound pitches. You have only to do a little of a Propgressive Music Course to appreciate the awful limitations of muse in its current incarnation version 1.0. For a fun play thingf for Y-2 to Y1 it is a bit like a toy zylophone, but much better featured. However it does pose an intriguing point that a piece of music can be composed in 2 or even 3 dimensions and played by passing paths through the space.
The limitations of muse in terms of basic musical expression are overwhelming. You cannot specify note duration, volume or decay or dynamic. You cannot make notes trill, or tremulo and you cant slide from one note to another.
Exercise 1 - write a specification based on the muse idea which incorporates this musical expressiveness
Exercise 2 - choose an aspect of this specification and implement it. Dont attempt to implement everything right off, but fit your project to the resources, time and people, available.
With Linux, Windows and Mac computer systems all having their fortes, we can expect to live with all three operating systems for some time to come. Statistically Windows is proliferating, but Mac is the system of choice in the publishing world, for newspapers, magazines, advertising agencies and other hard copy publishers. Linux is the favoured system for communications systems and any large multiuser enterprise. But Linux is also well used in smaller enterprises as it providfes many features which can only emulate poorly. Linux also has a large body of free software for doing many heavyweight jobs such as database server and web server. However for the general user Windows offers a wide range of accessable tools covering the field of applications. Unfortunately Windows products are also fraught with obstructions which do not allow the integration of non-MS software. This anti-trust software architecture has lead to court cases with the Federal US.
So what are the chances of finding some common ground between these three OS ?
Tcl (and some other scripting languages) cover all three platforms. Though as an example of anti-trust tactics MS Internet Explorer does not support Tcl plugins, however Netscape does.
The other major integration feature is cygwin, a port of Linux operating/application system commands to Windows. This software is free. It consists of four parts:
cygnus which is a Linux emulator which runs on Windows,
a suite of the common Linux application commands,
the GNU language development suites for C++ etc.
additional software packages supported by RedHat ( a major Linux provider ) including such systems as the Postgres Database.
To install cygwin jus click on the "Install Cygwin now" icon on the Cygwin's main page. Installation is straightforward but takes some time over the net as it is a big suite of programs.
Cygwin brings many features to the Windows environment that are not in the Windows API. These are standard features of Linux which give Linux its power, such as forking processes so that two programs can appear to run in tandem, spawning of processes, sockets for communication and so on. The core program bash(Bourne again shell) looks like a Linux console program (sh or csh etc) and is the equivalent of the wish, the Tcl command shell. This serves as an introduction to Linux operating systems on a Windows machine.
Redhat hosts the current User Guide. While this Guide is describes the portability issues of programs written in C++ to and from Linux, this is not the reason why cygwin is important from an educational view. Cygwin provides a common system environment which is even more powerful than the usual Windows API, one that is also used in Linux. This means that a student has a tool base that can be used in both environments.
The Mac operation API is sufficiently different from Windows and Linux to prevent an emulation of Linux on Mac. Mac systems are popular not so much for develping complex systems and applications as for the quality of their graphics and desktop applications.