Monday, October 10, 2011

Stop this madness: Open source CSSPS

It is that time of the year again when parents and their wards are left sitting on tenterhooks awaiting omniscient oracles to tell them where some sequence of bits thinks the wards should go to school. That would not be such a bad deal if we could trust that stream of bits to do the right thing. The quest for disinterested, unemotional, and incorruptible bits to tell us our future has resulted in this system we call the Computerised School Selection and Placement System (CSSPS). Has this system also been corrupted? There are allegations that some of the bits have been tweaked by highly skilled monkeys who have been offered a few fingers of banana by anxious parents.

The only defence offered so far is that the monkeys are too honorable to do such a thing. Or even worse, it is impossible for there to be errors in the system. Nonsense! Programming is a very precise craft--it is logic in a language that computers can understand. What this means is that one can test for the expected behaviour without having to rely on faith in the programmer. The programmer can make a mistake so he has to check all cases to ensure the programme does what he wants. Often this is not possible but that is not an excuse when the client is willing to go through the trouble. Every client (parent, candidate) who has a grievance can easily verify that the programme works by testing it with the data he has. Why the data and the programme have not been made publicly available for such testing is mind-boggling. That such opaqueness has been allowed to plague a system whose main purpose was to offer transparency is a disgrace.

What would it take to write a programme that solves this basic problem? Very little, actually. A programmer with the skill of a BECE candidate can produce code that solves this problem in one day. To understand the problem let us break it down: Students are ranked based on their raw scores. They are then assigned to their preferred schools in order until the school is filled to capacity. Suppose we have the students and the preferences as listed below:

Adongo   {Abusco,  Aquinas,    Odorgonno, Prempeh,   Presec}
Brenya   {Prempeh, Mfantsipim, Adisco,    Opass,     Kass}
Chiana   {Holyco,  Achimota,   GeyHey,    Opass,     Abusco}
Danso    {Opass,   Abuso,      Abugiss,   GeyHey,    Roses}
Effah    {Roses,   Abugiss,    Opass,     Odorgonno, GeyHey}
Frempong {Aquinas, Prempeh,    Presec,    Opass,     Achimota}
Gamey    {Abusco,  Aquinas,    Opass,     Prempeh,   Presec}   
Humado   {Holyco,  Roses,      Achimota,  Abusco,    Opass}
Issah    {Roses,   Holyco,     GeyHey,    Opass,     Abusco}
Jabah    {Prempeh, Aquinas,    Achimota,  Kass,      Odorgonno}
Komey    {GeyHey,  Achimota,   Roses,     Abusco,    Opass}
Larbi    {Abusco,  Prempeh,    Achimota,  Presec,    Kass}

Every student lists their preferences in order from the more preferred to the less preferred. There is no reason to stop at five since it is easy to make the list as long as the number of secondary schools in Ghana. There is also talk that students provide preference lists with the courses they want to pursue (eg. General Science, Business, Visual Arts, etc). All of this can easily be factored in. But this level of detail will do for our example. Suppose also that the students obtain the following raw scores from six subjects (based on some rules about which subjects have priority etc.):

Candidate   Raw Score
Danso       576
Chiana      529
Adongo      484
Frempong    441
Effah       400
Brenya      361
Jabah       324
Gamey       289
Larbi       256
Humado      225
Issah       196
Komey       169

With this information, and the fictitious capacities for the schools listed below, the candidates will be placed as follows:

School              Capacity      Admitted Candidates
Abusco              2             Adongo, Gamey 
Achimota            4             Larbi
Aquinas             3             Frempong
Holyco              3             Chiana, Humado
Kass                2
Mfantsipim          4
Odorgonno           3
Opass               2             Danso 
Prempeh             2             Brenya, Jabah
Presec              2
Roses               4             Effah, Issah
GeyHey              4             Komey

It is as simple as that. So why is there so much mystery and controversy surrounding this issue? Is it because like all other statistics in Ghana the few who curate it have decided to hide it so they can use it for their own purposes? My suggestion for removing this cloak of secrecy is to make the code that does the placement open source. The Ghana Education Service is probably paying a lot of money to some company to devise the software. Open sourcing the project will give more confidence that it does what it claims to do. There will be more people looking at it and, hence, less probability for error. It will be much cheaper if not completely free. All the data can be made public with candidate names replaced by other identifying information that is only known to the candidates. This way, anybody can check the results to their satisfaction.

Like I said, a 15 year old BECE candidate can write the code that does this and there are many capable programmers in Ghana so there is no reason to leave such a mission-critical assignment in the hands of a few who can tweak it to their delight. It is only in Ghana that a problem that can be solved by a simple sorting algorithm can dominate the airwaves for a week year after year. What a shame.