Research Manual

advertisement
Web-Based Music School Manager
Research Manual
Author: Aaron Redmond
Student ID: C00002396
Supervisor: Paul Barry
Contents
Introduction ............................................................................................................................................ 6
Existing Music School Management System........................................................................................... 7
Questions for interview ...................................................................................................................... 7
Results of the Interview ...................................................................................................................... 7
How the time table is currently produced ...................................................................................... 7
Problems with the current system.................................................................................................. 7
Desires in a new system .................................................................................................................. 8
How a timetabling system works ............................................................................................................ 9
Existing timetabling systems ................................................................................................................. 10
FET ..................................................................................................................................................... 10
Paritor Academy ............................................................................................................................... 17
Lantiv Timetabler .............................................................................................................................. 21
Prime Timetable ................................................................................................................................ 23
Timetabling algorithms ......................................................................................................................... 26
Genetic Algorithms ........................................................................................................................... 26
Simulated annealing ......................................................................................................................... 27
Ant Colony Optimisation ................................................................................................................... 28
FET ..................................................................................................................................................... 28
Web Development ................................................................................................................................ 29
Technologies ..................................................................................................................................... 29
Architecture ...................................................................................................................................... 29
3-Tier Model.................................................................................................................................. 29
2-Tier Model.................................................................................................................................. 30
Model-View-Controller ................................................................................................................. 31
Server ................................................................................................................................................ 32
Client ................................................................................................................................................. 32
Data ................................................................................................................................................... 33
Database Systems ......................................................................................................................... 33
MySQL ....................................................................................................................................... 33
PostgreSQL ................................................................................................................................ 34
SQL Server Express .................................................................................................................... 34
SQLite ........................................................................................................................................ 34
Languages ......................................................................................................................................... 35
Server-side .................................................................................................................................... 35
ASP ............................................................................................................................................ 35
PHP ............................................................................................................................................ 36
Perl ............................................................................................................................................ 36
Python ....................................................................................................................................... 38
Ruby .......................................................................................................................................... 39
JavaScript .................................................................................................................................. 40
Client-side ..................................................................................................................................... 41
HTML ......................................................................................................................................... 41
CSS ............................................................................................................................................. 42
JavaScript .................................................................................................................................. 43
AJAX........................................................................................................................................... 44
Cloud Technologies ........................................................................................................................... 45
Google App Engine ........................................................................................................................ 45
Windows Azure ............................................................................................................................. 45
Amazon Web Services ................................................................................................................... 45
Web Application Frameworks........................................................................................................... 47
Django ........................................................................................................................................... 47
Zend .............................................................................................................................................. 47
Ruby on Rails ................................................................................................................................. 47
Conclusion ............................................................................................................................................. 48
References ............................................................................................................................................ 49
Appendix A ............................................................................................................................................ 51
Appendix B ............................................................................................................................................ 52
Web-Based Music School Manager: Research Manual
Introduction
My project is the Web Based Music School Manager. It is a real world project, for the local Carlow
music school. The local Carlow music school currently has no dedicated management software and at
present uses Microsoft Excel for it data entry and timetable creation.
The aim of this project is to create a piece of software which will allow the director of the music school
to easily enter and maintain student and school data. It should also provide a mechanism for
timetable creation; be it automated or manual, preferably both.
Initially we need to know is how the local music school currently operates: how does it currently
acquire student information; how does it currently store this information; how is the yearly timetable
put together; etc. This information was gathered by conducting an interview with the director of the
music school.
We also need to know exactly how a timetabling system works, exactly what information is required in
order to successfully compile a timetable. The best way to find this out is to look at what existing
systems are available.
We now know what data is needed in order to create a timetable, but what processes must be carried
out on this data. All automated timetabling systems run some sort of heuristic algorithm on the data in
order to create the timetables; there are several differing types of algorithms available within the
public domain.
Probably the biggest part of the research for this project is the research into web development
technologies. Firstly an architectural model must be decided upon; this will decide exactly how the
server and client will interact with each other. Then we must look at how we are going to store our
data. Fortunately there are a host of open source databases available for us to choose from. We must
also consider what languages we are going to use for both server and client side scripting. There are
a host of languages available, all claiming to be better than the next.
An intriguing new trend is cloud computing, so we must also take a look at what options are available
to us in this area.
Once we have decided what database to go with and exactly what scripting language to use, a web
application framework must be chosen. This will allow us to implement our chosen architectural model
in our language of choice; and supply us with connectivity to our chosen data store.
C00002396
Page 6
Web-Based Music School Manager: Research Manual
Existing Music School Management System
In order to understand exactly what was required for this project I had to look at the existing method
the music school uses to create its yearly timetable and how it got the information to do so. This was
done by conducting an interview with the director of the music school. This interview was conducted
at 12 noon on Thursday 21st of October and lasted approximately 20 minutes.
Questions for interview
The first task was to compile a list of relevant questions to ask the director of the music school. The
questions were based around how the music school currently collects information on its students,
what information is collected and how it is stored and compiled into a timetable. The following is the
list of questions brought to the interview.
1. Do you use a computer to timetable lessons? If yes then what applications do you currently
use?
2. Is there a set class length (20 minutes, 40 minutes, 60 minutes, etc.)?
3. How many different locations do you have classes in?
4. Do you have set classes such as 9am, 10am, etc.?
5. Do teachers teach multiple instruments?
6. How long is the academic day (6, 7, 8 hours)?
7. How long is the academic week (Mon – Fri, Mon – Sat)?
8. Are there evening classes?
9. What types of groups do you have (Theory, etc.)?
10. What is the average number of students per group?
11. How many classes would a teacher teach before taking a break?
12. Do you have different types of classes apart from the different grades being taught?
13. Do you have group and individual lessons? (Types of groups?)
14. What specific information do you need for teachers?
Results of the Interview
The results of the interview can be broken down into three sections. The following was garnered from
my interview with the music school director.
How the time table is currently produced
Before the start of the school year, once the majority of the enrolment forms have been returned, the
timetable for coming school year is complied. The first step in the process is to manually enter all the
student details, such as: name; address; age; grade; and instrument into an Excel spread sheet.
The next step is to group the students by their grade for theory class, as each grade represents a
different skill level. Once these groups have been made, they must be assigned to a teacher and a
room. Finally, individual instrument lessons must be timetabled and these also require the assignment
of a teacher and a room.
Problems with the current system
Apart from the time consuming effort required to create the timetable by hand, some of the major
problems with the current system are:


Constant feedback from the students and teachers about their available hours is required
before a final timetable can be produced.
If a problem arises where a teacher cannot take a class, the student or students affected must
either be distributed into other classes or a replacement class must be timetabled. This must
all be worked out by hand.
C00002396
Page 7
Web-Based Music School Manager: Research Manual


Each year students must fill in an enrolment form, which quickly mounts up to a lot of paper
work.
There is currently no system available where the director can view student details in one
place. At the moment this information is stored separately, part of the information is in Excel
and part on enrolment forms.
Desires in a new system
One of the pieces of information that emerged from the interview was the directors desire to be able
to just select a student and automatically view all their details in one place, such as the instrument
they are playing, the grade level they are currently at, who is teaching them and where they are to be
taught.
Also the ability to enrol students into the system, thereby doing away with the tedious yearly
enrolment forms. This would make the director and student’s life easier as it is a more efficient system
of enrolment. It is also greener.
C00002396
Page 8
Web-Based Music School Manager: Research Manual
How a timetabling system works
A school timetabling systems needs a certain amount of data before an actual timetable can be
compiled. The data needed is:






Rooms
o Where the actual lessons will take place. Rooms may or may not be part of a larger
building.
Subjects
o What subject or subjects will be taught to the class group by the teacher?
Class groups
o Who will be taught? The class group may be comprised of 1 or more students. The
size of the class group is usually determined by the average room capacity.
Teachers
o The person who will teach the subject to the class group.
Days per week
o How many days per week the school operates. The maximum number of days is
seven, which would be Monday through to Sunday. The usual is five days, Monday
through to Friday.
Hours per day
o The number of school working hours per day. The average working day comprises of
9 hours, with a 1 hour break which may be further sub-divided.
Of course, with music schools there will be a few unique situations that would not occur in a regular
school or college. Music students require one-to-one tutorials for their musical instrument of choice,
but still must take part in the group theory class for their grade. One-to-one tutorials for members of
the same family are frequently problematic when it comes time to creating a timetable. This is
because a parent will want their children scheduled as close to one another as possible, thereby
saving them time and multiple trips to and from the music school.
C00002396
Page 9
Web-Based Music School Manager: Research Manual
Existing timetabling systems
Currently there are several timetabling systems available, from open-source projects such as FET to
large commercial applications like Scientia’s Syllabus Plus, which is the timetabling software of choice
for I.T. Carlow. In the following section I will be looking at the following software: FET; Paritor; Lantiv
Timetabler and Prime Timetable.
FET
Figure 1: FET main form
FET is open source free software for automatically scheduling school timetables. It uses a fast and
efficient timetabling algorithm which is licensed under GNU GPL [3]. It uses an XML format for the
input file, so it can be easily modified with an XML editor.
In order to create a timetable with FET you must first generate the following data:
 Institution information
 Days per week
 Hours per day
 Subjects
 Teachers
 Students
 Activities
 Space (Building and/or Rooms)
We will now look at how to create a timetable using FET in detail.
C00002396
Page 10
Web-Based Music School Manager: Research Manual
The first thing to do in FET is set up your school’s information; a school name is all that is required in
FET.
Figure 2: FET - school information
Then enter the number of days per week. For our example we need to enter 6 days as the school
operates from Monday to Saturday, with only Sunday off.
Figure 3: FET - days per week
C00002396
Page 11
Web-Based Music School Manager: Research Manual
Next, you enter in the times during the day. In order to accommodate different schedules for different
parts of the school, the schedule should be broken down into the lowest common denominator of time
differences. In this example it has been broken into 30 minute periods, with no schedule between 12
mid-day and 3pm.
Figure 4: FET - set hours per day
Time constraints may also be added. In our example, adults are taught in the morning from 8am til
mid-day and students are taught from 3pm until 8pm. We can specifically specify that students cannot
have lessons scheduled before 3pm, and vice versa for the adults.
All subjects to be timetabled must then be entered.
Figure 5: FET - enter subjects
C00002396
Page 12
Web-Based Music School Manager: Research Manual
Then the teachers must be added.
Figure 6: FET - add teachers
Every school needs some students, so the next step is to add some students. In FET students cannot
be added individually, instead FEF has years, groups and subgroups, where:



Year
o
A set of students at the same stage of their schooling. For example an Irish
Secondary school has years 1 to 6. A year contains (in most cases) several groups
(classes). [4]
Group
o A set of students who visit the same activities. So they meet the same teachers to
study the same subjects at the same time. [4]
Subgroup
o A set of groups that might have activities simultaneously. If Group numbers are small
subgroups may not even be used. [4]
Figure 7: FET - students
C00002396
Page 13
Web-Based Music School Manager: Research Manual
Now that we have some basic data to work with, we can begin to construct lessons or “Activities” in
FET terminology [5]. To create an activity we must have the following data:
 Teacher(s)
 Student(s)
 A subject
It is here in this process that a lot of the timetabling work is done, you specify the teachers, students
and subject, along with how many hours per week you wish this subject to be taught, and if those
hours are on the same day or different days.
Figure 8: FET - activities
Finally if you wish you can enter the number of buildings and the rooms within that building. You may
then set the space constraints so that a certain subject, teacher or student can only be taught in that
room, or that you can only change rooms a set amount of times per week.
Once the activities and their durations have been defined, timetables can be generated. As you can
see in the screen shots bellow, FET can produce both teacher and student timetables. If you have
assigned specific rooms for all your activities then you can also produce timetables for those rooms.
In figure 10 bellow, you can see the time constraints which have been set for the students, that they
cannot have lessons in the morning, only from 3pm onwards.
C00002396
Page 14
Web-Based Music School Manager: Research Manual
Figure 9: FET - teacher’s timetable
Figure 10: FET - student’s timetable
C00002396
Page 15
Web-Based Music School Manager: Research Manual
Conclusion
FET is an excellent piece of open source software, which in my opinion could easily compete with
some of the expensive brand leaders where it to be given a more user friendly User Interface.
Probably the most important part of FET with regards to my project is the actual timetabling algorithm,
which I will look at in detail in the Timetabling algorithms section. One thing that FET does not contain
that I feel necessary for my project is the ability to enter individual student data.
C00002396
Page 16
Web-Based Music School Manager: Research Manual
Paritor Academy
Paritor are an independent software house based in the southwest of England who specialise in
software for the administration management of performing arts related businesses. They provide
software for individual teachers and local authority performing arts services as well as for private
studios, schools and academies. I will be looking at their academic package, Academy. [1]
While not a timetabling system, Academy gives great insight on what is needed in regards to student,
teacher, lesson and location details. It also uses the Microsoft cloud as its data storage location of
choice.
First I downloaded the installation package from their website [2]. Then I had to do the following
before the application was ready for use:
 Run the installation package which downloaded and installed the application.
 Register a new account and create a new cloud database.
 Follow a 7-step wizard for your initial data setup.
Figure 11: Paritor - Main Screen
This is a large application, so I will only be looking at the aspects of the software which relate to the
project, namely:
 Create a Pupil
 Activities
 Create a School
C00002396
Page 17
Web-Based Music School Manager: Research Manual
Create a Pupil
Figure 12: Paritor - create a pupil
The Academy pupil registration process allows the user to create a pupil and enter all their relevant
details. The Academy suite allows for a vast range of details to be entered and shows exactly what
details are required for the add student process, these details are:
 Name
 Mobile Number
 Email
 Emergency Contact Number
 Parent Name
 Parent Address
 Parent Mobile
 Parent Email
 Photo
C00002396
Page 18
Web-Based Music School Manager: Research Manual
Activities
Figure 13: Paritor - Activities
The Academy Activities section allows the user to define the activities of the organization i.e. what
subjects are taught. It is a simple process which allows the user to add, remove or edit an activity.
In relation to my project I envision a similar process for controlling the lesson types.
C00002396
Page 19
Web-Based Music School Manager: Research Manual
Create a School
Figure 14: Paritor – create a school
The Academy Schools process allows the user to add a School to the system. For my project I need a
way to add and edit locations and something similar to this process would be required, but containing
much less details. The details required would be:
 Name
 Address
 Telephone
 Email
Conclusion
Paritor’s Academy package is a very large and extensive piece of software. It would take weeks if not
months of use before a regular user could get to grips with it. But it certainly contains everything one
would need to manage a large performing arts centre. However, the software my project aims to
create in not for a large scale operation with dedicated administration staff but for a small school
administrated by a person who also teaches. What ideas I can take from this software are its data
input process and the idea of data storage on the cloud.
C00002396
Page 20
Web-Based Music School Manager: Research Manual
Lantiv Timetabler
Figure 15: LantivTimetabler
Lantiv Timetabler is a free client based timetabling application which allows users to schedule
activities either interactively by using a drag and drop facility or automatically based on constraints
entered [6]. It has very user friendly Interface and is quite easy to use; within a few minutes of
launching the application I was able to begin entering data. Data is saved using an XML format and
so may be easily edited using an XML editor.
Before a timetable can be created, the user must enter the following data: day; lesson; group; student;
teacher; room and activity data. This is all done via one interface.
Figure 16: LantivTimetabler - data entry
C00002396
Page 21
Web-Based Music School Manager: Research Manual
Once all the relevant data has been entered and you click OK, the scheduling workspace is opened; it
is here that you can create your timetable. If any violations occur, they may be automatically fixed with
the click of a button. A violation is a situation in which some constraint you entered is not fulfilled in
the timetable e.g. 4 hours of a lesson are required but only 3 are timetabled.
Conclusion
The simplicity and ease of use of the Lantiv Timetabler is what I like most, I could imagine anyone
with basic PC skills being able to use it. Data entry is very straight forward and it is all done via one
interface. Being able to drag and drop your activities into various time slots is a feature which would
be very useful for a small school that aims to accommodate parents, students, and teachers alike.
C00002396
Page 22
Web-Based Music School Manager: Research Manual
Prime Timetable
Prime Timetable describes itself as “online school timetable software for primary and secondary
schools” [7]. It uses Microsoft Silverlight technology to make it look and feel like a regular desktop
application, but has the advantage of being completely web-based and therefore accessible from PC
or MAC from any location with an available web connection.
For the purposes of this example I used the free edition, which is available via their website.
The first thing you must do is set-up the basic timetable information, such as the working days in a
week and the number of lessons per day. You must then enter the following data before a timetable
can be generated: subjects; rooms; teachers; classes and lessons.
Figure 17: Prime Timetable - data entry
Once this data has been entered you can generate a timetable.
C00002396
Page 23
Web-Based Music School Manager: Research Manual
Figure 18: Prime Timetable - basic timetable
You can then save the timetable in a variety of forms such as: HTML, JPEG or XML.
Figure 19: Prime Timetable - options
C00002396
Page 24
Web-Based Music School Manager: Research Manual
Conclusion
Primo Timetable is an excellent resource for primary or secondary schools. The ability to access your
timetable from anywhere via the web is a great selling point. For my project I would like to implement
similar features such as its data input and timetable view and generation facility.
The main disadvantages as far as my project is concerned would be the fact that you can only have a
maximum of 16 classes per day and you cannot specify individual students.
C00002396
Page 25
Web-Based Music School Manager: Research Manual
Timetabling algorithms
Course timetabling problems are an NP-hard problem, which means that they are difficult to solve
with conventional methods; and the amount of computation required to find an optimal solution
increases exponentially with the problem size. The main idea of this problem is to assign a set of
teachers to rooms and time slots while satisfying a number of constraints. The constraints are usually
divided into two sets: hard constraints and soft constraints. Hard constraints have a higher priority
than soft constraints. The objective of this problem is to satisfy the hard constraints and minimise the
violation of the soft constraints [33].
In the following section, we will look at some Meta-heuristic methods, such as genetic algorithms
(GA), simulated annealing (SA),Ant Colony Optimisation (ACO) as well as the algorithm used in FET.
Genetic Algorithms
Genetic algorithms (GA) are search procedures based on the mechanics of natural selection and
natural genetics. They were developed by Prof. John H. Holland and his students at the University of
Michigan during the 1960’s and 70’s.
Genetic algorithms operate on a set of possible solutions. Because of the random nature of the
genetic algorithm, solutions found by the algorithm can be good, poor or infeasible so there should be
a way to specify how good that solution is. This is done by assigning a fitness value to the solution.
Chromosomes represent solutions within the genetic algorithm. Two basic components of
chromosomes are the coded solution and its fitness value [32].
The outline of a basic genetic algorithm is:
1. [Start] Generate random population of n chromosomes (suitable solutions for the problem)
2. [Fitness] Evaluate the fitness f(x) of each chromosome x in the population
3. [New population] Create a new population by repeating following steps until the new
population is complete
a. [Selection] Select two parent chromosomes from a population according to their
fitness (the better fitness, the bigger chance to be selected)
b. [Crossover] With a crossover probability cross over the parents to form a new
offspring (children). If no crossover was performed, offspring is an exact copy of
parents.
c. [Mutation] With a mutation probability mutate new offspring at each locus (position in
chromosome).
d. [Accepting] Place new offspring in a new population
4. [Replace] Use new generated population for a further run of algorithm
5. [Test] If the end condition is satisfied, stop, and return the best solution in current population
6. [Loop] Go to step 2
[31]
Chromosomes are grouped into a population [set of solutions] on which the genetic algorithm
operates. In each step [generation] the genetic algorithm selects chromosomes from the population
[usually based on the fitness value of chromosome] and combines them to produce new
chromosomes [offspring]. These offspring chromosomes form a new population [or replace some of
the chromosomes in the existing population] in the hope that the new population will be better than
the previous one. Populations keep track of the best and worst chromosomes and stores additional
statistical information which can then be used by the genetic algorithm to determine the stop criteria
[32].
C00002396
Page 26
Web-Based Music School Manager: Research Manual
The general form for a genetic algorithm is defined as:
procedure genetic algorithm;
begin
set time t := 0;
initialise the population P(t);
while termination conditions not met do
begin
evaluate the fitness of each member of the population P(t);
select members from population P(t) based on fitness;
produce the offspring of these pairs using genetic operators;
replace, based on fitness, candidates of P(t), with these offspring;
set time t := t + 1;
end
end
Table 1: The genetic algorithm [30]
Simulated annealing
Simulated annealing is a Monte-Carlo technique which can be used to find solutions to optimisation
problems. The technique simulates the cooling of a collection of hot vibrating atoms in metal. The
heat causes the atoms to move around randomly, and as they cool the atoms find new positions. If
the mass is cooled quickly then chance of obtaining a low cost solution is lower than if it is cooled
slowly (or annealed). At any given temperature a new configuration of atoms is accepted if the system
energy is lowered. However, if the energy is higher, then the configuration is accepted only if the
probability of such an increase is lower than that expected at the given temperature.
To apply simulated annealing to the timetabling problem, you just need to replace the atoms with the
timetabling elements. The system energy is replaced by the timetable cost. An initial allocation is
made in which elements are placed in a randomly chosen period. The initial cost and an initial
temperature are computed. The cost is used to reflect the quality of the timetable, just as the system
energy reflects the quality of a substance being annealed. The temperature is used to control the
probability of an increase in cost and relates to the temperature of a physical substance. At each
iteration a period is chosen at random, called the ‘from’ period, and an element randomly selected
from that period. Another period is chosen at random, called the ‘to’ period. The change in cost is
calculated from two components:
1. The cost of removing the element from the ‘from’ period,
2. The cost of inserting the element into the ‘to’ period.
The change in cost is the difference of these two components. The element is moved if the change in
cost is accepted, either because it lowers the system cost, or the increase is allowed at the current
temperature [34].
C00002396
Page 27
Web-Based Music School Manager: Research Manual
s := s0
e := E(s)
k := 0
while k <kmax and e >emax
sn := neighbour(s)
en := E(sn)
if random() < P(en - e, temp(k/kmax)) then
s := sn;
e := en
k := k + 1
return s
Table 2: Pseudo-code implementation of the simulated annealing heuristic [35]
Ant Colony Optimisation
Ant Colony Optimisation (ACO) is a population based meta-heuristic that can be used to find
approximate solutions to difficult optimisation problems. In ACO, a set of software agents called
artificial ants search for good solutions to a given optimisation problem. To apply ACO, the
optimisation problem is transformed into the problem of finding the best path on a weighted graph.
The artificial ants (hereafter ants) incrementally build solutions by moving on the graph. The solution
construction process is stochastic and is biased by a pheromone model, that is, a set of parameters
associated with graph components (either nodes or edges) whose values are modified at runtime by
the ants [36].
procedure ACO_MetaHeuristic
while(not_termination)
generateSolutions()
daemonActions()
pheromoneUpdate()
end while
end procedure
Table 3: ACO example pseudo-code [37]
FET
The FET source code is freely available to download from “http://lalescu.ro/liviu/fet/download.html”. It
was written using QT C++ [28]. The actual source for the algorithm can be found in the file
‘generate.cpp’, with the initialisation being done with the file ‘generate_pre.cpp’.
Up to and including FET version 4, a genetic algorithm was used; however FET version 5 now uses a
recursive swapping algorithm. It places the activities in turn, starting with the most difficult ones. If it
cannot find a solution it points you to the potential impossible activities, so they can be manually
corrected. The algorithm swaps activities recursively in order to make space for a new activity or in
extreme cases, backtracks and switches the order of evaluation.
Unfortunately as with a lot of open-source software, the documentation for the code and algorithm is
very sparse and therefore hard to actually understand without intensive study as there are roughly
15,000 lines of code between the two files mentioned above.
C00002396
Page 28
Web-Based Music School Manager: Research Manual
Web Development
Technologies
Web technologies can be broken into two categories: Client-side technologies and Server-side
technologies. Client-side technologies are focused on the design and presentation of the browsers
output; be it on a desktop, laptop or mobile device. Server-side technologies deal with the processing
of requests from the client-side, be it a request for data or user validation. Once a request has been
processed it creates a response which it sends back to the calling client-side application.
The way we browser the web is changing; it’s no longer just the domain of desktop web browsers
such as Internet Explorer (IE), Firefox, etc. Televisions, games consoles such as the Playstation 3
and Xbox 360, Netbooks and mobile devices such as the iPhone and Andriod are becoming ever
more popular way for users to digest content. It is important to remember that our creation will
probably be viewed on any one of the aforementioned devices, and therefore the selection of
technologies is very important and must take these considerations into account.
Architecture
3-Tier Model
Figure 20: 3-tier model
As the name implies 3-Tier is a model which has the following three tiers:



Tier 1
o
Tier 2
o
Tier 3
o
The presentation Tier which deals with the GUI front-end, be it a web browser,
iPhone, iPad, etc. Client-side scripts can be run here via the browser.
The application or business tier where the application logic lives; it is where all the
content processing and generation will take place and where the server-side scripts
will be run. Provides the communication between tier 1 and tier 3.
The data tier which contains the data store. It could be a database or a flat file such
as XML.
In this model the client tier never communicates directly with the data tier; all communication must
pass through the middleware tier.
C00002396
Page 29
Web-Based Music School Manager: Research Manual
2-Tier Model
Figure 21: 2-tier model
In a 2-tier model the client talks directly to a server. There is no intermediate between client and
server as in the 3-Tier model.
The two tiers of two-tier architecture are:


Data tier
o The data store, where our database or flat file is stored.
Client tier
o The browser, which could be on a PC, laptop or mobile device.
With the 2-tier model understanding and maintenance is easier but come with the loss of performance
as the number of users increase.
C00002396
Page 30
Web-Based Music School Manager: Research Manual
Model-View-Controller
Figure 22: Model-View_Controller pattern
The Model-View-Controller (MVC) is an architectural design pattern which separates the modelling of
the domain, the presentation, and the actions based on user input into three separate classes [19]:



Model
o The model manages the behaviour and data of the application domain, responds to
requests for information about its state (usually from the view), and responds to
instructions to change state (usually from the controller) [20].
View
o The view manages the display of information [20]. It allows a developer to create
separate views for PC, iPhone, etc. without having to change the functionality of the
Model or Controller.
Controller
o This is the means by which the user interacts with the application. For example, if a
user clicks a menu item, the controller is responsible for determining how the
application should respond.
C00002396
Page 31
Web-Based Music School Manager: Research Manual
Server
The server is the machine on which the web server application is running, and in general when we
talk about the server we actually mean the web server. The primary job of a web server is to deliver
content to the client, over the World Wide Web (WWW), this content is generally HTML and whatever
content is associated with it: images, videos, etc.
Of course the server is responsible for more than the delivery of web pages; it might also be acting as
an e-mail server and an ftp server.
Client
Clients used to comprise of browsers running on desktop PC’s and MAC’s alone; presently there are
several devices capable of running an Internet browser, such as:






Desktop machines
o PC, MAC.
Laptops
Netbooks
Mobile Devices
o Such as iPhone, iPad, Andriod, etc.
Televisions
o One example would be the Sony Internet TV [21].
Game Consoles
o Modern consoles such as the Playstation 3, Wii and Xbox 360 all have Internet
connectivity, and are beginning to offer a number of internet related services such as
movies on demand, youtube, etc.
Clients rely on servers for resources, such as data, files and even processing power.
Basic Client Server Relationship
The stages involved in the delivery of a web page are as follows:






User enters URL into the address bar of their client.
o The URL (uniform resource locator) is generally comprised of 3 parts:
1. The protocol (“http”)
2. The server name (“www.itcarlow.ie”)
3. The file name (“index.htm”)
The client communicates with a name server, which translates the URL into an IP address.
The client then connects to the server at that IP address, usually on port 80.
The client the sends a GET request to the server, asking for the requested URL.
The server then processes that request and sends the HTML for the requested URL to the
client.
The client then reads the HTML, formats and finally displays the web.
C00002396
Page 32
Web-Based Music School Manager: Research Manual
Data
Probably the single most important aspect from a school administration point of view is its data. The
data required for a school can be broken into the following categories:



Student
o This is all the data relating to the student, the usual data such as name, address, etc.
o Additional parent/guardian information is also required.
o This data will have to be updated every year, as the student progresses through
school.
o New student will be added each year.
Teacher
o All relevant Teacher data, such as: name, address, subjects taught, etc.
o Once entered this data will be relatively static.
School
o General school information, such as: name, address, contact information, etc.
o Information on the number of building, rooms, etc.
o Available subjects.
o Lessons, which are a combination of subjects, teachers and students.
Database Systems
When considering the type of data store to use, cost is the major deciding factor and for that reason
we will be focusing on free and open-source database implementations. There are also some
interesting data store solutions to be found in the cloud, some of which are looked at in the Cloud
Technologies section.
MySQL
MySQL, “The world's most popular open source database”, is a fast, open-source Relational
Database Management System (RDBMS) that uses Structured Query Language (SQL) [22]. It is:


Transaction-safe
o Transaction-Safe Tables (TST) ensures that you can get your data back in the event
of a system crash or hardware failure. It also provides a ROLLBACK facility to ignore
changes and if an update fails, all your changes will be restored.
ACID compliant
o This means that the database transactions are processed reliably in accordance to
the set of properties defined by ACID: atomicity, consistency, isolation, durability.
The option to have Not Transaction-Safe Tables (NTST) is also available; this gives a speed
advantage over TST, but with the loss of restorative features.
Tables in MySQL are managed using storage engines. Different storage engines have differing
performance characteristics, so you can choose the engine which most closely matches the
characteristics you need. The most common engines used in MYSQL are InnoDB and MyISAM.
Stored procedures were introduced to MySQL in version 5.0, and allow us to automate many tasks
directly on the server, which previously required external scripts to do.
One of the most popular web applications for managing MyPhp is phpMyAdmin, currently it can
create, drop and alter tables; delete, edit and add fields; manage privileges and export data into
various formats.
Businesses such as Facebook, Yahoo, Google, Nokia and Youtube all use MySQL.
The latest version of MySQL is version 5.1.52.
C00002396
Page 33
Web-Based Music School Manager: Research Manual
PostgreSQL
PostgreSQL is a powerful, open source object-relational database system (ORDBMS). An ORDBMS
is similar to a relational database but supports objects, classes and inheritance.
It is fully ACID compliant, supports foreign keys and stored procedures. As well as supporting all the
regular data types: CHAR, INTEGER, BOOLEAN, etc; it also supports the storage of pictures, sound
and video. PostgreSQL has a single storage engine.
One of the most popular web applications for managing PostgreSQL is phpPgAdmin.
Prominent users of PostgreSQL include: the International Space Station; MySpace and Skype.
The latest version of PostgreSQL is version 9.0.1
SQL Server Express
Microsoft’s SQL Server Express is the free version of its commercial RDBMS, SQL Server. It is
recommended for web, desktop and small server applications. Some of the features available to SQL
Server Express are:






Same database engine as the higher editions of SQL Server.
Stored procedures.
Integration with many of the current crop of Microsoft products.
Backup and restore.
Compatible with SQL Azure Database service.
10 GB database storage.
SQL Server Express looks like a good package for small applications which in the main are going to
be run on a Windows platform [29].
SQLite
SQLite is an ACID-compliant embedded SQL database engine. Unlike other SQL databases, SQLite
does not have a separate server process. A complete SQL database is contained in a single crossplatform file on disk. It supports INTEGER, REAL, TEXT, BLOB and NULL data types, but uses
dynamic typing; which means that you can store a string in a database column of type integer, if you
so wish. Several processes may gain read access to a database at the same time, however only one
write may occur at a time.
SQLite has bindings for several languages, such as: C++, C#, Java, Perl, Php, Python, Ruby,
JavaScript and VBScript.
Some well know users of SQLite are Adobe; Apple and Mozilla to name but a few.
C00002396
Page 34
Web-Based Music School Manager: Research Manual
Languages
Server-side
Server-side scripting or programming is a technology which allows HTML to be created on the fly,
therefore providing interactive web sites that interface to databases or other data stores. The main
advantage to server-side scripting is the ability to create dynamic content, which customises the
response based on the user’s requirements, access rights, or queries [8]. Server-side scripting is
more secure than client-side scripting as it can be encrypted, therefore protecting user data against
hack attempts. Examples of some server-side scripting languages are: ASP; PHP; Perl; Python; Ruby
and Java Servlet, which we will be examining in detail bellow.
ASP
Active Server Pages (ASP), also known as Classic ASP are a free web application framework from
Microsoft that you can use to create and run dynamic, interactive Web server applications. With ASP,
you can combine HTML pages, script commands, and COM components to create interactive web
pages and applications. A Component Object Model (COM) can be described as a “black box” that
encompasses a set of methods and associated data, which allow web sites to access functionality in
compiled libraries such as DLLs.
ASP pages have the extension .asp, so when a page with this extension is requested by a browser
the web server knows to interpret any ASP contained within the web page before sending the HTML
produced to the browser. In this way all the ASP is run on the web server and no ASP will ever be
passed to the web browser. Web pages containing ASP cannot be run simply by opening them in a
web browser, the page must be requested through a web server that supports ASP.
The default scripting language used for writing ASP is VBScript, although other scripting languages
such as Jscript or PerlScript can be used. Jscript is Microsoft’s version of JavaScript.
<html>
<body>
<%
Dim theDate
theDate= Date()
Response.Write("The date is: " &theDate)
%>
</body>
</html>
Table 4: Simple VBScript which displays “The date is: <DATE>” in the body of a HTML document
C00002396
Page 35
Web-Based Music School Manager: Research Manual
In general ASP is run on Microsoft web servers such as WindowsNT Server running Internet
Information Services (IIS) which supports VBScript, Jscript, with ActiveX scripting plug-ins available
for REXX, Perl and Python. It can also be run on the Apache Web Server but this only supports Perl
scripting. There are some on-going projects which allow ASP to function with other environments and
web servers: InstantPHP [10]; Chili!Soft ASP [11]; and Mono [12].
PHP
PHP: Hypertext Preprocessor (PHP) is a free HTML-embedded scripting language, and is almost
always in the top 10 of any programming language survey or poll. PHP code is embedded into the
HTML source document and interpreted by a web server running a PHP processor module, which
then generates the web page.
The latest version of PHP is PHP5, which contains several new features such as improved MySQL
support, native SQLite support and a host of new functions. It is important to note that several
versions of PHP can be run at the same time.
It is claimed that “PHP can access virtually any database available today” [9]. This claim would
appear to be true as PHP has support for legacy databases such as IBM DB2; popular database
systems like MySQL and Oracle; and lesser known database systems such as PostgreSQL. I will be
investigating some of these database systems later on in the Data section.
Within a HTML document, PHP code is embedded within the PHP delimiters “<?php” and “?>”. Only
the code within these delimiters is parsed by the PHP engine. Other delimiters are also available.
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php
echo "Hello World";
?>
</body>
</html>
Table 5: PHP code embedded in an HTML document
PHP is widely used in web applications from blogging on WordPress to content management systems
such as Drupal and Joomla. One of the main advantages of PHP is the fact that it was specifically
designed for the web, and therefore includes many useful web-related features straight out of the box,
such as: functions for the creation and manipulation of graphics; functions for working with HTML; and
the ability to talk to databases.
Perl
Perl which officially stands for Practical Extraction and Report Language is a general purpose
programming language. Some of Perl’s uses include graphics programming, network programming,
and the one we are interested in CGI scripting on the web. Because of its flexibility Perl has acquired
the nickname “the Swiss Army chainsaw of scripting languages” [13].
A CGI script is a relatively small program that runs on the web server, which usually produces some
sort of dynamic web page. CGI stands for Common Gateway Interface, and is a mechanism which
allows web servers to run scripts when requested by a web browser.
C00002396
Page 36
Web-Based Music School Manager: Research Manual
#!/usr/bin/perl
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) =
localtime();
$year = 1900 + $yearOffset;
$theTime = "$weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
print "Content-type: text/html\n\n";
print <<HTML;
<html>
<head>
<title>A Simple Perl CGI</title>
</head>
<body>
<h1>A Simple Perl CGI</h1>
<p>$theTime</p>
</body>
HTML
exit;
Table 6: Simple CGI script which will insert the current date into the page each time the script is called. [14]
The main advantage of Perl is its string processing and regular expression support. This is because
Perl was originally developed as a way to make report processing easier and most of what is being
created on the web happens with text.
C00002396
Page 37
Web-Based Music School Manager: Research Manual
Python
Python is a powerful dynamic programming language that is used in a wide variety of application
domains such as: web and internet development; database access; desktop GUIs; and software
development to name but a few. Of course it is the web and internet development that we are
interested in. It is the cgi module at the core of Python CGI scripts, which defines a number of utilities
for use by CGI scripts written in Python. If you are using an Apache web server then you have the
option of using Mod_python which is much faster that CGI but only available for Apache.
#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
Table 7: "Hello World" in python CGI fashion [15]
All Python code will be executed at the server only. The client’s browser will never see a single line of
Python, instead it will only see the output of the Python script, be it text, HTML, CSS, etc.
The main advantages of using Python are its readability because Python’s syntax is very readable
due to imposed block structure defined by indentations and it is easy to learn because of the source
codes resemblance to pseudo code.
C00002396
Page 38
Web-Based Music School Manager: Research Manual
Ruby
Ruby is a dynamic object-orientated programming language, and is often used as an alternative to
PHP as a server-side language. In Ruby every data type is an object and every function is a method.
It is a very flexible language, as it allows users to freely alter its parts at will.
CGI scripts can be written quite easily in Ruby. To have a Ruby script generate HTML output, all you
need is
#!/usr/bin/ruby
print "HTTP/1.0 200 OK/r/n"
print "Content-type: text/html\r\n\r\n"
print"<html><body>Hello World! It’s #{Time.now}</body></html>\r\n”
Table 8: Simple Ruby CGI script which generates some HTML [16]
Ruby comes with a class library called cgi which enables more sophisticated interactions than those
above, such as: form processing; cookies; and sessions.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>Hello World!</body></html>"
Table 9: Simple CGI object
Important Note: Ruby should not be confused with Ruby on Rails, which is a web application
framework, built using Ruby.
C00002396
Page 39
Web-Based Music School Manager: Research Manual
JavaScript
Server-side JavaScript (SSJS) refers to JavaScript that runs on a server and is therefore not
downloaded to the browser. It is composed of core JavaScript (same as Client-side) and additional
objects and functions for accessing databases and file systems, sending e-mail, etc. SSJS must be
served by a JavaScript-enabled server.
The following is some sample JavaScript:
<%@LANGUAGE="JavaScript"%>
<%
Response.Write("<HTML>\r")
Response.Write("<FONT COLOR=\"red\">\"Hello World\"</FONT><BR>\r")
Response.Write("</HTML>\r")
%>
This produces the following HTML code for the browser to interpret and display.
<HTML>
<FONT COLOR="red">"Hello World"</FONT><BR>
</HTML>
One of the main advantages of JavaScript is that both Server and Client programs can be written in
the same language.
C00002396
Page 40
Web-Based Music School Manager: Research Manual
Client-side
When we talk about Client-side, we are interested in the technologies that are run on client machines,
usually by the browser. Some of the technologies we are going to examine are: HTML; CSS;
JavaScript; and AJAX.
HTML
HTML (HyperText Markup Language) is the main language used in the creation of web pages. It uses
sets of tags to specify the structure of the document. Within these tags the content of the document is
defined. HTML tags generally come in pairs, the first being the start tag with the second being the end
tag. The client’s web browser then uses these tags to interpret the content and structure of a web
page.
<html>
<head>
<title>Basic HTML test</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
Table 10: Simple HTML document
During its lifetime HTML has gone through many revisions, the next major revision is HTML5 which
adds a lot of new features to the HTML specification, such as:



Elements like<canvas>, <video>, and <audio> which allow you to easily add media elements
to your web page.
Structure tags to improve navigation and layout e.g. <section>, <article> and <aside>.
Improved Doctype tag e.g. <!doctype html >.
Browser compatibility for HTML5 is currently not at 100% for all browsers, with Apples Safari leading
the way [18].
C00002396
Page 41
Web-Based Music School Manager: Research Manual
CSS
Cascading Style Sheets (CSS) are used to describe the look and feel of a HTML document. It is
designed to separate the document contents from its presentation, which in turn provides more
flexibility and readability.
One simple example where CSS can be used is in changing the size of the text on a web page. If we
look at the I.T. Carlow web page, we can see a good example of this.
Figure 23: I.T. Carlow homepage - text resize
When a user clicks on their preferred text size, a simple CSS file is executed.
Figure 24: I.T. Carlow - HTML showing call to CSS files
This then changes the formatting of the HTML document.
Alongside HTML5, CSS3 will soon become the layout engine of choice for the web.
C00002396
Page 42
Web-Based Music School Manager: Research Manual
JavaScript
Client-side JavaScript (CSJS) is one of the most popular languages on the Internet. It was designed
to add interactivity to HTML pages and is generally embedded directly into HTML pages. CSJS is
composed of core JavaScript and many additional objects, such as: document; form; frame; and
window. The objects in CSJS enable you to manipulate HTML documents and the browser itself.
JavaScript in a page will be executed immediately while the page loads into the browser. If you need
it to be executed at a later event, such as when a user clicks a button, then the script must be put
inside a function. JavaScript can also be saved in an external file with a .js extension; this can then be
called by using the “src” attribute of the <script> tag.
<html>
<body>
<script type="text/javascript">
document.write("Hello World!");
</script>
</body>
</html>
Table 11: Simple JavaScript
C00002396
Page 43
Web-Based Music School Manager: Research Manual
AJAX
AJAX is short for Asynchronous JavaScript and XML, and it is not actually a programming language,
but a way of using existing standards. It allows us to update parts of a web page, without having to
reload the whole page. It does this by exchanging small amounts of data with the server behind the
scenes.
AJAX works by:




When a browser event occurs it creates an XMLHttpRequest object.
The HttpRequest is then sent to the server.
Server processes the HttpRequest and sends a response back to the browser.
Browser then processes the returned data using JavaScript and updates the page contents.
One advantage of using AJAX is the fact that pages using AJAX operate more like an application, as
the page can be refreshed dynamically and the response of the interface to the actions of the user is
much faster.
Some examples of applications which use AJAX: Google Maps, Youtube and Facebook.
Figure 25: Google Suggest is using AJAX: When you start typing in Google's search box, a JavaScript sends
the letters off to a server and the server returns a list of suggestions.
C00002396
Page 44
Web-Based Music School Manager: Research Manual
Cloud Technologies
Cloud computing is Internet based computing where both applications and data storage can be
provided over the Internet. We are moving away from the world where applications and data are
stored on one machine and are inaccessible anywhere else without the use of removable media. We
are moving towards an environment where our applications and data are accessible to us anywhere
in the world; providing we can get an Internet connection.
One example of cloud computing is Microsoft’s Windows Live service. Apart from the usual email and
chat facilities, it provides:


25GB online storage with their SkyDrive service.
An online Office where you can create and edit your Office document.
Google App Engine
The Google App Engine, allows you to build web applications using the same systems that power
Google applications such as Gmail, Google Docs, Google Maps, etc. It completely removes the need
for a server as that is provided and maintained by Google. For a small to medium size application,
App Engine is very affordable as you only have to pay once you go over 1GB of storage and 5 million
page views per month [23]. Probably the only drawback to the Google App Engine is the fact that it
only supports Python or Java.
Windows Azure
Windows Azure is described as “a cloud services operating system that serves as the development,
service hosting and service management environment for the Windows Azure platform”. This means
that we can develop, manage and host application using Windows Azure; all on servers owned and
operated by Microsoft. This means that as a developer you never have to worry about server load
[24].
In addition you can choose SQL Azure, which is built on SQL Server technologies, as your database
in the cloud. The benefits of this are that you never have to install setup or patch the database
software [25].
It is relatively easy to develop for; all one needs to do is download the Windows Azure Tools, which is
a plug-in for Visual Studio. Windows Azure also supports: SOAP, REST, XML, Java, PHP and Ruby.
Amazon Web Services
Amazon Web Services (AWS) provides a range of cloud products and services, such as:



Amazon Elastic Compute Cloud (Amazon EC2)
o Amazon EC2 is a web service that provides resizable compute capacity in the cloud.
It allows users to rent virtual machines on which to run their own applications. You
have a choice of operating systems, such as Linux, UNIX, or Windows. A user can
create, launch, and terminate server instances as needed, while only paying for
active servers [26].
Amazon Simple DB
o Amazon SimpleDB is a non-relational data store, where you just store and query data
items via simple web services requests, and Amazon SimpleDB does the rest.
o Amazon recommends SimpleDB for customers who principally utilize index and query
functions rather than more complex relational database functions such as complex
transactions or joins [27].
Amazon Relational Database Service (RDS)
C00002396
Page 45
Web-Based Music School Manager: Research Manual
o
C00002396
Amazon RDS is a distributed relational database service, running in the cloud. It
works similar to MySQL, which means that any applications or code that works on
MySQL, also works on Amazon RDS. Patching and backups of the database are
done automatically [28].
Page 46
Web-Based Music School Manager: Research Manual
Web Application Frameworks
A web application framework is a software tool that is commonly used to aid in the creation and
management of various types of online applications. The framework tends to include all the elements
needed to accomplish the desired tasks. This eliminating the overhead associated with the creation
and design of online applications, such as the need to secure all the necessary tools from different
sources.
In this section I will briefly examine the following open source web application frameworks: Django;
Zend and Ruby on Rails.
Django
Django is a web application framework, written in Python, which follows the model-view-controller
architectural pattern. It focuses on automating as much as possible and adhering to the Don’t Repeat
Yourself (DRY) principle, the aim of which is to reduce the repetition of information within a system.
Django’s database component, the Object-Relational Mapper (ORM) supports a large set of database
systems, and switching from one engine to another is just a matter of changing a configuration file.
Other Python based web frameworks include: TurboGears and Zope.
Zend
Zend framework (ZF) is an object-orientated web application framework which is implemented in PHP
5. ZF does not follow a single development pattern but does provide components for the model-viewcontroller pattern and others.
ZF offers great flexibility, as you do not have to use the complete framework, you can pick and
choose which items to use and plug it together with your own classes to get a complete product which
meets your needs. It also has great database support, with access to multiple databases such as:
MySQL, Oracle, SQL Server, PostgreSQL and SQLite; via a database independent object-oriented
interface.
Ruby on Rails
Ruby on Rails (Rails, RoR) is a web application framework written in the Ruby programming
language. Rails is an opinionated piece of software, it makes the assumption that there is a “best”
way to do things, and it is designed to encourage that way. This feature of Rails can make it hard
when you first approach it from a differing platform. Like Django, Rails uses the MVC architecture and
DRY principles. In addition, it also uses Convention over Configuration and REST.
C00002396
Page 47
Web-Based Music School Manager: Research Manual
Conclusion
There are several different aspects to this project. To define the aspects we must know exactly what
is required from the perspective of the Carlow music school.
From the interview we found out that Carlow music school requires a system which will allow them to:
A. Easily view all of a student’s detail in one place.
B. Create a timetable, which may be manually edited.
After examination of existing timetabling and management software, it is apparent that a data store
such as MySQL, PostgreSQL, etc. will satisfy our data storage needs.
We must provide a simple mechanism for data entry, which allows the music schools director to easily
and quickly enter information for both the school and the school’s students. In this report we have
looked at several scripting languages, from client-side scripting languages which provide us with the
means of acquiring the information to the server-side scripting that will take this information and store
it in our data store of choice.
Once the system has collected all the information necessary to create a timetable, this information
must be turned into a workable timetable using a heuristic algorithm. There are several algorithms
available that can be used to create a timetable. The limiting factor in any of the algorithms is the
amount of data it has to process, for a small amount of data the creation time for the timetable will be
relatively quick but as the amount of data increases so will the creation time. This is a major factor
when deciding on which algorithm to use.
We cannot forget about the cloud technologies available to us, the fact that we can now save our data
within the cloud, somewhat removes the need for a server and if correctly chosen the actual cost of
storage within the cloud could be relatively inexpensive.
C00002396
Page 48
Web-Based Music School Manager: Research Manual
References
[1]. Paritor.com, 2010, available: http://www.paritor.com/index.htm [accessed 28 October, 2010]
[2]. Paritor.com, 2010, Academy, available: http://www.paritor.com/Academy/index.htm [accessed
28 October, 2010]
[3]. FET, 2010, available: http://lalescu.ro/liviu/fet/[accessed 28 October, 2010]
[4]. FET Manual, 2009, available: http://www.timetabling.de/manual/FET-manual.en.html
[accessed 09 November, 2010]
[5]. FET Basic Guide 2009, available: http://www.hosty.org/fet/FET%20Guide.htm [accessed 09
November, 2010]
[6]. Lantiv, 2010, Lantiv Free Timetabler, available: http://www.lantiv.com/ [accessed 09
November, 2010]
[7]. Prime Timetable, 2010, available: http://www.primetimetable.com [accessed 10 November
2010]
[8]. Server-side scripting, 2010, Wikipedia, The Free Encyclopedia, available:
http://en.wikipedia.org/w/index.php?title=Server-side_scripting&oldid=390839720 [accessed
11 November 2010]
[9]. Database issues, 2010, php, available: http://www.php.net/manual/en/faq.databases.php
[accessed 11 November 2010]
[10]. InstantPhp, 2010, InstantPhp, available: http://www.instantphp.com/ [accessed 11 November
2010]
[11]. Chili!Soft ASP, 2005, GSP Services, available:
http://www.gsp.com/support/virtual/web/asp/chili/ [accessed 11 November 2010]
[12]. Mono, 2010, Mono, available: http://mono-project.com/Main_Page [accessed 11 November
2010]
[13]. Sheppard, Doug, 2000, Beginner's Introduction to Perl, available:
http://www.perl.com/pub/2000/10/begperl1.html [accessed 11 November 2010]
[14]. Brown, Kirk, 2010, How to Create a Simple Perl CGI, available:
http://perl.about.com/od/perltutorials/a/hellocgi.htm [accessed 11 November 2010]
[15]. Hello World, 2010, Web Python Tutorial, available:
http://webpython.codepoint.net/cgi_hello_world [accessed 11 November 2010]
[16]. Thomas, Dave (2006). Programming Ruby, The Pragmatic Programmers' Guide. Dallas: The
Pragmatic Bookshelf. p235.
[17]. Oracle, 2010, Java Servlet Technology Overview, available:
http://www.oracle.com/technetwork/java/overview-137084.html [accessed 12 November 2010]
[18]. HTML5, 2010, Safari 5, available: http://www.apple.com/safari/whats-new.html#html5
[accessed 12 November 2010]
[19]. Burbeck, Steve, 1992, “Application Programming in Smalltalk-80: How to use Model-ViewController (MVC)."University of Illinois in Urbana-Champaign (UIUC) Smalltalk
Archive. Available at: http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html.
[20]. Model-View-Controler, 2010, msdn, available: http://msdn.microsoft.com/enus/library/ff649643.aspx [accessed 15 November 2010]
[21]. Sony Internet TV, 2010, Sony, available: http://discover.sonystyle.com/internettv/#/home
[accessed 16 November 2010]
[22]. MySQL, 2010, MySQL, available: http://www.mysql.com/ [accessed 16 November 2010]
C00002396
Page 49
Web-Based Music School Manager: Research Manual
[23]. Why App Engine, 2010, Google App Engine, available:
http://code.google.com/appengine/whyappengine.html [accessed 16 November 2010]
[24]. Windows Azure, 2010, Windows Azure, available:
http://www.microsoft.com/windowsazure/windowsazure/default.aspx [accessed 17 November
2010]
[25]. SQL Azure, 2010, SQL Azure, available: http://www.microsoft.com/enus/sqlazure/database.aspx[accessed 17 November 2010]
[26]. Amazon Elastic Compute Cloud (Amazon EC2), 2010, Amazon Web Services, available:
http://aws.amazon.com/ec2/ [accessed 17 November 2010]
[27]. Amazon SimpleDB, 2010, Amazon Web Services, available:
http://aws.amazon.com/simpledb/ [accessed 17 November 2010]
[28]. Amazon Relational Database Service (Amazon RDS), 2010, Amazon Web Services,
available: http://aws.amazon.com/rds/ [accessed 17 November 2010]
[29]. Express Edition, 2010, Microsoft SQL Server 2008 R2, available:
http://www.microsoft.com/sqlserver/en/us/editions/express.aspx [accessed 18 November
2010]
[30]. Luger, George F., 2005, Artificial intelligence (5thed.): structures and strategies for complex
problem-solving, Addison-Wesley
[31]. Basic Description, 2010, Introduction to Genetic Algorithms, available:
http://www.obitko.com/tutorials/genetic-algorithms/ga-basic-description.php [accessed 18
November 2010]
[32]. Genetic Algorithms Overview, 2010, Coolsoft, available: http://www.coolsoftsd.com/ArticleText.aspx?id=4 [accessed 18 November 2010]
[33]. Nabeel R. AL-Milli, 2010, Hybrid Genetic Algorithms with Great Deluge For Course
Timetabling, IJCSNS International Journal of Computer Science and Network Security,
VOL.10 No.4, April 2010,pp. 283-288
[34]. Abramson D., 1991, Constructing School Timetables Using Simulated Annealing: Sequential
and Parallel Algorithms, Management Science, Vol. 37, No. 1, January 1991, pp. 98-113
[35]. Simulated annealing – Definition, 2010, wordiQ.com, available:
http://www.wordiq.com/definition/Simulated_annealing [accessed 19 November 2010]
[36]. Marco Dorigo, 2007, Ant colony optimization, Scholarpedia, 2(3):1461, available:
http://www.scholarpedia.org/wiki/index.php?title=Ant_colony_optimization&oldid=82084
[accessed 19 November 2010]
[37]. Wikipedia contributors, 2010, Ant colony optimization, available:
http://en.wikipedia.org/w/index.php?title=Ant_colony_optimization&oldid=395963635
[accessed 19 November 2010]
[38]. QT, 2010, Nokia, available: http://qt.nokia.com/ [accessed 19 November 2010]
C00002396
Page 50
Web-Based Music School Manager: Research Manual
Appendix A
Copy of Registration/Enrolment Form.
C00002396
Page 51
Web-Based Music School Manager: Research Manual
Appendix B
Mondays timetable for Carlow College of Music.
C00002396
Page 52
Download