Please check the following Blog Entry for details about the pause of the system
Hope systems activity will be back as soon as possible, though I am not sure.
Thank You
Wednesday, December 12, 2007
Saturday, December 8, 2007
System Design is Ready
It took me five hours to insert the 197 student names of System Design, the 100 True/False Questions, and the 50 MCQs. It was quiet an experience for me alone to insert this huge amount of data; I have never tried to work as a data entry, but still an amazing experience. I really want this thing to work, and I am working a lot on it. System Design Exam will be on: Wednesday 12th of December, and Thursday 13th of December. Will let you know the experience day by day.
Wish me Luck
Wish me Luck
Interface Design
If you think interface is the last thing to design in your web site, then believe me you are making a big mistake. If you believe interface does not deserve the design effort, and two or three pictures will be enough, then again - you are making a mistake. Please take care that: Interface gives life to your Web site. Most of the time, users do not care that much about the programming in your Web site, and the value it adds to their lives as much as they care about the interface. They love to see a Web site that tracks their eyes, keeps them interested no matter how long they spend there, and attracts them within the usability and simplicity rules of: Web sites.
I had this experience myself with this site. I even started programming without caring that much about the interface, so what? I shall add the functionality first, then design the site, and believe me: I was wrong.
I thought that I will add two or three pictures to the site and it will be amazing, but it did not. I had to contact a Graphic Designer I know to give me a hand at this site, till it turned to the way it is now, and I had to go through hell to deliver it the way it is now. It needs some tricks to wrap the pages you have already built within the new interface you have added, specially if you are not following the standards; and that was the case.
Any way, thankfully I managed to unleash the site with this interface; that will stay as it is quiet long enough. Hopefully you like it. Please for comments regarding the interface design, do not hesitate to mail me.
I had this experience myself with this site. I even started programming without caring that much about the interface, so what? I shall add the functionality first, then design the site, and believe me: I was wrong.
I thought that I will add two or three pictures to the site and it will be amazing, but it did not. I had to contact a Graphic Designer I know to give me a hand at this site, till it turned to the way it is now, and I had to go through hell to deliver it the way it is now. It needs some tricks to wrap the pages you have already built within the new interface you have added, specially if you are not following the standards; and that was the case.
Any way, thankfully I managed to unleash the site with this interface; that will stay as it is quiet long enough. Hopefully you like it. Please for comments regarding the interface design, do not hesitate to mail me.
Monday, November 26, 2007
Services
I am not sure where did that came from, but I think about system as collection of services [i]. This gives at least three tangible advantages [ii]:
- Reusability: When you add the functionality as a service in your application, it becomes reusable more than you think. Let's take the easiest example: The Random Number Generator. I wanted a good random number generator, so I searched over the internet for one, and I found this one. It seemed really interesting; depending on the server clock [iii], so I decided I will consume it. I felt the Reusability advantage with I wanted to generate 5 random numbers to be used for retrieving the MCQs, and another 5 numbers for retrieving the True/False questions. I did not have to rewrite the random number generator code for the TF Qs, I just reused it.
- Single Code File: Later, I noticed that this Random Number Generator can produce repeated values, which is not accepted. I had to modify the code to eliminate redundancy. Because Random Number Generator exists in a single file, I needed to modify this only file.
- Modifiability: If you checked the article before this one, you should have found the part that talks about: Adding an email field to Students table. So, when I add this field, do you think current stored procedures and / or direct SQL statements will continue working peacefully, or I will just start getting the non lovely debugging page ? Well, if you hate this page; like me, you will do anything to avoid seeing it, and one of those things you can do is using: Services. Let us see, I have implemented the database; without the email field for student, implemented the stored procedure, consumed it in the Student Web service, exposed the service, consumed it in the application, and it is working. When I add the email field, I will need to write a new stored procedure, add a new method to the Student Service, update the Student Service Web reference at the application, and start using the new service immediately leaving the old one running and leaving existing application not affected.
Those are the direct effects I felt immediately when I implemented Web services in the Assessment Management System. Later, we will discover many advantages of presenting our Information Systems as collection of services [iv].
During my previous evaluation of Stored Procedure against Dynamic SQL [v], Performance was not affected by implementing one over the other; so it is up to you to decide the way you will go. Now, we have two stored procedures:
- Insert Results
- Insert Passwords
- Random Number Generator
- Student
- Results
- Grade
- MCQ
- True / False
[i] Web services are not Service Oriented Architecture (SOA) despite the fact that Web services are the main SOA enabler. For more discussions about that topic, please contact me.
[ii] Those entries does not include definitions that can be used for scientific research. You know where to get those definitions, but here I am relating my background with the experience I gained from implementing that system.
[iii] Discussions over the internet regarding efficiency of random number generators are widely available. If you are interested in such a topic, you might want to take a look.
[iv] My Master Thesis is entitled: Evaluation of Service Oriented Architecture (SOA) in e-Learning. I think I have designed and implemented enough SOA based applications to feel SOA's effect.
[v] This evaluation was a Performance one; so from performance perspective Stored Procedures and Dynamic SQL is the same at performance. Still the fact remains that; from Security perspective, it is not a recommended practice to include Dynamic SQL Statements in your application. I use a hybrid of both techniques.
Database
Basically, there are three approaches for building any Information System:
1. Student
ID, University_ID, Name
2. Course
ID, Title, Description
3. Assessment
ID, Title, Course ID
4. MCQ Items
ID, Question, Choice 1, Choice 2, Choice 3, Choice 4, Correct Choice, Assessment ID
5. True False Items
ID, Question, Answer, Assessment ID
6. Student Results
Stuudent ID, Assessment ID, Date, Result
7. Passowrds
Student ID, Password
--
[i] Ask Seyam for more details. His master thesis is about "Agile Methodologies"
[ii] Ask Codd, C. J. Date, or Thomas Conolley about those three forms
[iii] I thought about adding an E-R Diagram or a Database Diagram to illustrate the database, then I thought it is really so simple.
[iv] I think the optimum solution is to generate passwords automatically for each assessment, and mail them to students at the assessment day. Regarding exams, we will deliver passwords personally. But, that will need the modification of Students Table to include the email field.
- Top-Down: I think about this approach as the one that starts by designing the interfaces, and building the system that fits and satisfies those interfaces. This approach has the advantage of getting users satisfactions and limiting clients' expectations before implementations. Unfortunately, this approach fits well only with new systems.
- Bottom-Up: We start defining current Information System components, study system requirements, design the suitable database and services, then compose the interface that fits those designs. This approach fits the scenario where we need to edit current/existing systems, or we think about Information Systems in the form of Services. It is great in integrating different systems.
- Agile: It is the combination of both in a certain way that enhanced programming and teams collaborations [i].
1. Student
ID, University_ID, Name
2. Course
ID, Title, Description
3. Assessment
ID, Title, Course ID
4. MCQ Items
ID, Question, Choice 1, Choice 2, Choice 3, Choice 4, Correct Choice, Assessment ID
5. True False Items
ID, Question, Answer, Assessment ID
6. Student Results
Stuudent ID, Assessment ID, Date, Result
7. Passowrds
Student ID, Password
I have highlighted Foreign Key relationships in the red color[iii]. I am so suspicious regarding students and their welling to pass passwords to each other, so I thought about the following: I will take the passwords away from students table, generate passwords automatically, and make it available to them, either before assessment [iv] or at the time of taking the exam. Making passwords with me at the exam time gives me the option of assuring that everyone is taking only her/his password.
--
[i] Ask Seyam for more details. His master thesis is about "Agile Methodologies"
[ii] Ask Codd, C. J. Date, or Thomas Conolley about those three forms
[iii] I thought about adding an E-R Diagram or a Database Diagram to illustrate the database, then I thought it is really so simple.
[iv] I think the optimum solution is to generate passwords automatically for each assessment, and mail them to students at the assessment day. Regarding exams, we will deliver passwords personally. But, that will need the modification of Students Table to include the email field.
Requirements Gathering
I start building the system by defining System Requirements, and Application Domain. Assessment Management System will provide a Web utility to assess students online. It will not need to integrate with any other systems, so its application domain is really so simple.
We need three areas (Pages) for the application:
1 - Administration Pages
1.1 Manage Students Data ( Insert, Update, Delete, Display All)
1.2 Manage Courses Data ( Insert, Update, Delete, Display All)
1.3 Manage Assessments Data ( Insert, Update, Delete, Display All)
1.4 Manage Assessment Items Data ( Insert, Update, Delete, Display All)
2 - Take Assessment Page
2.1 Assessment Template: Page with Two Parts: 5 Questions MCQ,
and 5 Questions True/False
3 - Results Page
3.1 Display all supported courses, related with assessments, and questions
3.2 Display students results
Those were the first System Requirements. There has been slight modifications regarding those requirements during implementation. There are delays, enhancements, and more work to be done.
Customized Solution
I have always been confused what the idea: Make a Product and Deliver a Solution means. I have considered products; as moodle for example, a product. It is available for download, easy to install, customizable, and open source. What a product !! Every time I hear the word: Product, I connect it to an the moodle, and say "Well! I do not think I can provide a product like that, may be not now; I need time :) " But, when Prof. Dr.Alaa talked to Dr.Ahmed Hassan about passing the product the latter uses to asses Students in the Faculty, the latter mentioned something about purchasing the product after trial and stuff like that. I rethought about the concepts I am misunderstanding. I do not need to provide a product that contains all moodle customization features to be good. We started this simple Assessment Management System; internally, hoping it will lead us some where. I think about it as a Customized Solution. This Customized Solution can be further customized based on the situation you will use it for, and it is available. Right, it will need work from guys who made it in the first place, it will need their presence, their help with the installation, but come on; when you need it, you will get it. I am not saying it because I am selling this thing, it is just I wanted to send a message to everyone all over the world. I have been waiting a lot for illusions, many years I have not started achieving a real working system because I believed it has to be like moodle; till I figured out it does not have to be. Take my advice; and if you are a programmer, you shall start thinking about real system to implement, real life scenario/situation to automate. You will feel ultimate happiness.
I am thinking about Customization all the way through this experience. I might not provide it from the early beginning, but I believe there are customization that Assessment Management Systems shall provide; like:
I am thinking about Customization all the way through this experience. I might not provide it from the early beginning, but I believe there are customization that Assessment Management Systems shall provide; like:
- You can manage how many assessments you want for each course, provide dates, periods of times, times for each assessment, question types, and difficulty level.
- Assessment Management System shall be able to differentiate between different Assessment levels. Assessments shall not be too easy or too hard. Assessment Management System shall include a predefined number of different questions' classes.
- More than one question formats are available for online assessments. Assessment Management Systems provide Multiple Choice Questions (MCQs) and True/False ones because they are so simple to mark, can be fully automated. I prefer thinking about Match Questions, Fill in the Blanks, as available for Assessment Management Systems. Essay questions are important, Assessment Management Systems can provide this option, tools and techniques to help instructor marks those questions, but to automate essay questions, I do not believe in that.
- MCQs need to be customized. Not all MCQs utilize four choices only, you can use five or more. You can set this up also.
- A Service Layer shall be provided over the database and the application, so Assessment Management System can be integrated with other systems.
- Mobile Assessment is one of the options that Assessment Management Systems shall provide. And that takes us; again to the difference between assessment and exam. Students can take assessments via mobiles, but not exams. I prefer adding the required two services over the application; so the solution is available for mobile plug-in upon request.
Subscribe to:
Posts (Atom)