ET: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(23 intermediate revisions by 3 users not shown)
Line 232: Line 232:


===Solution===
===Solution===
System which augments Moodle's services and allows end user (Professor) to manage student courses, evaluate exercises and communicate with them.
====Creation Of Teacher's touchscreen-compatible local application to manage, evaluate and communicate with students:====
====Creation Of Teacher's touchscreen-compatible local application to manage, evaluate and communicate with students:====


The application was implemented in Processing and Java programming language.


Source code can be found in below links.


{|
{|
  |[[Link For Video Demo Here.]]
  |[http://enos.itcollege.ee/~irokk/E_teacher/E_teacher.mp4 Link For Video Demo Here].
|}
|}


{|
{|
|[[Source Code.]]
|[http://enos.itcollege.ee/~irokk/E_teacher/ET_Evaluation/ Source Code].
|}
|}


====Changes in Moodle environment:====
====Set up new Moodle's functions====
 
''If you have Windows executable Moodle server, you should see .exe files and a folder named "server"''
 
 
*Unpack this ZIP-file: [http://enos.itcollege.ee/~imitt/eteacher.zip E-teacher external functions]
 
*Put the unpacked folder named "eteacher" to \server\moodle\
 
*Add into the file \server\moodle\lib\db\services.php into $functions array:
    'core_get_id_by_token' => array(
        'classname'  => 'core_eteacher_external',
        'methodname'  => 'get_id_by_token',
        'classpath'  => 'eteacher/externallib.php',
        'description' => 'Returns id by token',
        'type'        => 'moodle/user:viewdetails',
    ),
   
    'core_get_files_by_userid' => array(
        'classname'  => 'core_eteacher_external',
        'methodname'  => 'get_files_by_userid',
        'classpath'  => 'eteacher/externallib.php',
        'description' => 'Returns files by user id',
        'type'        => 'moodle/user:viewdetails',
    ),


===== Part one =====
*If you installed Moodle before adding previous functions, you have to execute following SQL Queries in Moodle's phpMyAdmin:
Go to:
    INSERT INTO `mdl_external_functions` (name, classname, methodname, classpath, component, capabilities) VALUES ("core_get_id_by_token", "core_eteacher_external", "get_id_by_token", "eteacher/externallib.php", "moodle", "moodle/user:viewdetails");
    INSERT INTO `mdl_external_functions` (name, classname, methodname, classpath, component, capabilities) VALUES ("core_get_files_by_userid", "core_eteacher_external", "get_files_by_userid, "eteacher/externallib.php", "moodle", "moodle/user:viewdetails");


Site administration->Advanced features-> Plugins->Web services ->External services->
*If you installed Moodle after adding those new functions to services.php, you should be fine.


Add :
====Set up Moodle environment====


1) Go to: Site administration->Advanced features-> Plugins->Web services ->External services->


1)Add new external service
2) Add new external service


2)To new external service add functions:  
3) To new external service add functions:  


*core_course_get_courses  (Get the list of courses where a user is enrolled in)
*core_course_get_courses  (Get the list of courses where a user is enrolled in)
Line 263: Line 294:
*core_files_get_files  (browse moodle files)
*core_files_get_files  (browse moodle files)
*core_files_upload  (upload a file to moodle)  
*core_files_upload  (upload a file to moodle)  
These functions need to be crated before they can be added:
These functions are created in previous step:
*core_get_files_by_userid  (Returns files by user id)
*core_get_files_by_userid  (Returns files by user id)
*core_get_id_by_token  (Returns id by token)
*core_get_id_by_token  (Returns id by token)


3)For new external service add -> Authorised users
4) For new external service check "Authorised users"
 
Example:
{| 
|[[File:Moodle_Extetrnal_services.png|600px|thumb|left|Moodle external services]]
|}
 
5) Click on "Authorised users" and add users
 
====Access local Moodle from other computers====
 
1) Open Start Menu -> Run -> type: CMD -> Enter
 
2) Get your IP Address from there


[[File:Moodle_Extetrnal_services.png|400px|thumb|left|Moodle external services]]
3) Inside \server\moodle\config.php change from:
    $CFG->wwwroot  = 'http://localhost';
* to:
    $CFG->wwwroot  = 'http://IP.Address.you.have';


=====Part two=====
4) Now you can access local Moodle from other computers using that IP Address. Just type it in the address bar.
Create new functions:


==IP Feedback==
==IP Feedback==
Line 284: Line 330:


===Panagiota Chatzi's feedback===
===Panagiota Chatzi's feedback===
I liked this and that.
It was a very interesting project for me! I learned new things. I learned how to co-operate with others under pressure and I made many new friends.


===Nikolaos Karadimitriou's feedback===
===Nikolaos Karadimitriou's feedback===
Very interesting project-completion oriented program. Stress everyone's skills to the limits and in most times it successfully expands them and new skills and knowledge is retrieved.
Very interesting project-completion oriented program. Stress everyone's skills to the limits and in most times it successfully expands them and new skills and knowledge is retrieved.

Latest revision as of 15:05, 7 July 2013

Team page for ET.

Members

  • Indrek Mitt, IT College
  • Sander Saarm, IT College
  • Panagiota Chatzi, T.E.I. of Crete, Department Of Applied Informatics And Multimedia
  • Nikolaos Karadimitriou, T.E.I. of Crete, Department Of Applied Informatics And Multimedia


Goal

  • Create an application for our client that is very effective and user friendly.
  • A familiar environment for students to upload their exercises.
  • In general, to augment E-Learning Environments and facilitate students' exercises evaluation by using our application.

Activity

Monday - 25.03.13

Things that we did that day

  • Learned about documentation and data mining
  • Programmed sumo robots
  • Got to know our team at welcome dinner in St. Patrick's

Tuesday - 26.03.13

Things that we did that day

  • Talked about our case and made sure everybody is on the same page
  • Put together a list of questions for our client
  • Thought of different solutions for our project
  • Seperated tasks between team members

Problems that we faced:

  • We didn't have enough information about our case
  • We wanted to use Moodle, but we didn't know if it's suitable for our project

Things that we plan to do:

  • Ask our mentor if Moodle environment suitable for our project
  • Prepared to speak to our client Priit Raspel

Wednesday - 27.03.13

Things that we did that day

  • Spoke to our clent Priit Raspel.
  • Learned about Moodle and installed it.

Problems that we faced:

  • We couldn't access installed Moodle on Sander's computer.
  • We needed a laptop with touchscreen.

Questions and answers from client (consultation)

  • The client explained his visions on the project, that were quite similar to our vision. So we didn't have many questions.
  • Mostly we talked about the user interface on the teacher's side. We got to know his exact requirements.
  • We got telefon numbers of our client and our mentor for further questions.
  • We asked about Moodle and it's API from our mentor Mart Mangus.
  • We asked for client's touchscreen laptop for two weeks' testings and we got it.

Things that what we plan to do:

  • Need to get a wireless router form Indrek Rokk for our own network to access installed Moodle.
  • Get to know Moodle's API.
  • Creating user interface.

Thursday - 28.03.13

Things that we did that day

  • Had lecture about Innovation
  • Studied Moodle documentation
  • Set up our Moodle test environment
  • Created test course and users
  • Checked if Moodle has needed options for our client's specific needs
  • Nikolaos is programming the UI

Problems that we faced:

  • Had little problems setting up our workstation
  • Some network problems

Things that we plan to do:

  • Work more on UI
  • Try if Moodle's options and API are enough to continue

Friday - 29.03.13

Things that we did that day

  • Read the documentation about API in Moodle.
  • We divided the parts of documentation for reading & we tried to familiarize with the Moodle's API.
  • We created and enrolled users in order to put some necessary and specific requirements that our client needs.
  • We logged in as admin, teacher, student to make the proper tests to see if our choices work properly.
  • We also created a user through our standalone application using Moodle's API and the service.
  • We had to test which protocol suits to our project's requirements because we wanted the right one for connecting with the GUI. The best for us is REST.

Problems that we faced:

  • Couldn't login to Moodle with the standalone application (we fixed it).
  • A bug since v2.1 in Moodle doesn't record the shortname of the service that the user creates and makes it impossible for the user to log in (we fixed it).
    • In table external_services: "shortname" should be the same as "name".

Things that we plan to do:

  • Work on the standalone application.
  • To get the standalone application to communicate with Moodle.
  • Find a way to get names of all students for this course and their files:
    • Get courses of teacher.
    • Get groups of course.
    • Get students of course.
    • Get student's assignments.
    • Get assignment files.
  • Find the functions to upload and download files.

Saturday - 30.03.13

Cultural Estonia's day

Monday - 01.04.13

Things that we did that day

  • Worked on standalone application (implemented the remove functions)
  • Worked on Moodle API's connection and functions.

Problems that we faced:

  • BIG PROBLEM - Didn't have any success in implementing functions.

Things that we plan to do:

  • Work on implementing functions to get standalone app communicating with Moodle.
  • Work on the standalone application.
  • Meet with client to specify his needs.

Tuesday - 02.04.13

Things that we did that day

  • Worked on Moodle API's connection and functions.
  • Augmenting teacher's application functionality

Problems that we faced:

  • MoodleREST API connection with Moodle.

Things that we plan to do:

  • Try to finalize the connection to Moodle.

Wednesday - 03.04.13

Things that we did that day

  • Further functionality in teacher's application and partial connection with MoodleREST API.
  • We completed the functions to retrieve data from Moodle through MoodleREST API
  • We worked hard till midnight

Problems that we faced:

  • Time

Things that we plan to do:

  • Integrating data retrieving functions in teacher's application

Thursday - 04.04.13

Things that we did that day

  • Prepared our presentation
  • Nikolaos prepared the demo on client's touchpad
  • Sander did some more Java code: getting teacher's students according to courses
  • Did the presentation

Problems that we faced:

  • A little stage nerv
  • Getting the right student files from Moodle

Things that we plan to do:

  • Finalize our project

Friday - 05.04.13

  • Did give feedback to IP
  • We did the finalization of the application
  • Finalized our wiki

Results

We developed a new system for client, so he can use the touchscreen of his laptop, or use the mouse or even a interactive whiteboard to evaluate and manage all of the students' projects(e.g. Entity Relationship Diagrams), instead of undergoing the time-consuming and chaotic process of hand-evaluation with a pen on a paper. Our solution benefits an organizational structure which promotes efficiency and deduction of supply usage(paper, pen, printer, printer cartridge).

Personal Input

Indrek Mitt

Our first task was to generate ideas how our solution could work. After we decided to use Moodle environment, me and Sander setup our Moodle test environment and with Panagiota create the needed users and courses. Later we did all the needed testing with users and courses. Then after Moodle was set up we studied Moodles API, to help Sander create new functions in Moodle and get his part of the java code right. Also my part was to set up extra meetings with our client. In the last stage of our project I created the skeleton of the presentation, which we finalized together.

What did I learn:

  • different things from lectures
  • very valuable group work experience in international group
  • very good language practice
  • experience in real project with time limit
  • learned to know Moodle environment much better
  • got to know programming a bit better

Sander Saarm

First I studied Moodle and it's API, read the documentation and then we (with Panagiota and Indrek) created some test users: students and teachers. Then I started to do the code in Java (used REST protocol) and with the little help from Nikolaos I managed to use Moodle API functions to get different information from database for the application Nikolaos did. I had some help also from Panagiota and Indrek finding all the functions and their descriptions. Mart Mangus, our mentor, gave also some help with creating new functions to Moodle API.


What did I learn:

  • A lot about Moodle and Java implementation
  • Using and creating Moodle API's functions
  • Getting the information from Moodle's database
  • Communication with Moodle services through MoodleRest API

Panagiota Chatzi

Firstly we divided the reading of the Moodle documentation into parts and with Indrek and Sander we tried to familiarize with it. We created some users, we enrolled them and we made the proper testings in order to see how Moodle works. We were given specific requirements from our client, so we had to put them into Moodle. When Sander began to do the code, me and Indrek helped him by finding all the functions and their descriptions. I want to thank Mart Mangus, for his precious help. He gave us really useful advices during this project. I want to thank also my colleagues for the efficient team work.

What have I learnt:

  • How to co-operate and work with other people in such intensive projects
  • How to behave in front of a client in order to promote a solution
  • I began to familiarize with the idea of a presentation in a different language
  • This program gave me the chance to see how companies work and broaden my horizons
  • I worked with my colleagues on trying to understand APIs

Nikolaos Karadimitriou

What did I do to successfully bring our project to a sufficient state(working):


At first I suggested the task division into 2 parts and the assignment of them to 2 teams. Following this way the strengths of each team member could be exploited in more sufficient form. My main goal was to create an easy to use, functional application which comprises the following:

  • 1. Communication with Moodle services through MoodleRest API
  • 2. Retrieval of several data from Moodle system and translate them to usable and understandable graphical interface objects (e.g. Lists of students in a course(Json Structure) => Table Structure (java))
  • 3. Image(exercise files, .jpg .bmp .tiff .png) processing and manipulation, in order to evaluate ER-Diagrams.
  • 4. Correcting marks. Comments. New tables etc. On screen.
  • 5. Student management and grading frames communicating with Moodle services.
  • 6. On screen image processing with functional interactive buttons and features.
  • 7. Touch screen usability.
  • 8. Application’s capability in working with interactive whiteboards.
  • 9. The application was implemented in Java and Processing programming language.
  • My secondary part in the project was to coordinate the project’s process and give advice to all the members of the project.


Knowledge and Skills I've acquired:

  • The most beneficial experience I’ve gained was the teamwork and cooperation with international students, and of course a sufficient and concrete knowledge on presentation methods and methodology in general. I believe some substantial skills, in coordinating and task assigning group members were also acquired.
  • Also in the programming domain, I’ve gained a useful amount of skills regarding image manipulation and touchscreen usable graphical interfaces as well as API integration to custom systems.
  • One thing also worth mentioning is the familiarization with different cultures and languages.

Final documentation

Analysis

Current Evaluation Process Analysis
Analysis of The Task and System Implementation

Solution

System which augments Moodle's services and allows end user (Professor) to manage student courses, evaluate exercises and communicate with them.

Creation Of Teacher's touchscreen-compatible local application to manage, evaluate and communicate with students:

The application was implemented in Processing and Java programming language.

Source code can be found in below links.

Link For Video Demo Here.
Source Code.

Set up new Moodle's functions

If you have Windows executable Moodle server, you should see .exe files and a folder named "server"


  • Put the unpacked folder named "eteacher" to \server\moodle\
  • Add into the file \server\moodle\lib\db\services.php into $functions array:
   'core_get_id_by_token' => array(
       'classname'   => 'core_eteacher_external',
       'methodname'  => 'get_id_by_token',
       'classpath'   => 'eteacher/externallib.php',
       'description' => 'Returns id by token',
       'type'        => 'moodle/user:viewdetails',
   ),
   
   'core_get_files_by_userid' => array(
       'classname'   => 'core_eteacher_external',
       'methodname'  => 'get_files_by_userid',
       'classpath'   => 'eteacher/externallib.php',
       'description' => 'Returns files by user id',
       'type'        => 'moodle/user:viewdetails',
   ),
  • If you installed Moodle before adding previous functions, you have to execute following SQL Queries in Moodle's phpMyAdmin:
   INSERT INTO `mdl_external_functions` (name, classname, methodname, classpath, component, capabilities) VALUES ("core_get_id_by_token", "core_eteacher_external", "get_id_by_token", "eteacher/externallib.php", "moodle", "moodle/user:viewdetails");
   INSERT INTO `mdl_external_functions` (name, classname, methodname, classpath, component, capabilities) VALUES ("core_get_files_by_userid", "core_eteacher_external", "get_files_by_userid, "eteacher/externallib.php", "moodle", "moodle/user:viewdetails");
  • If you installed Moodle after adding those new functions to services.php, you should be fine.

Set up Moodle environment

1) Go to: Site administration->Advanced features-> Plugins->Web services ->External services->

2) Add new external service

3) To new external service add functions:

  • core_course_get_courses (Get the list of courses where a user is enrolled in)
  • core_enrol_get_users_courses (core_enrol_get_users_courses)
  • core_enrol_get_enrolled_users (Get enrolled users by course id.)
  • core_files_get_files (browse moodle files)
  • core_files_upload (upload a file to moodle)

These functions are created in previous step:

  • core_get_files_by_userid (Returns files by user id)
  • core_get_id_by_token (Returns id by token)

4) For new external service check "Authorised users"

Example:

Moodle external services

5) Click on "Authorised users" and add users

Access local Moodle from other computers

1) Open Start Menu -> Run -> type: CMD -> Enter

2) Get your IP Address from there

3) Inside \server\moodle\config.php change from:

   $CFG->wwwroot   = 'http://localhost';
  • to:
   $CFG->wwwroot   = 'http://IP.Address.you.have';

4) Now you can access local Moodle from other computers using that IP Address. Just type it in the address bar.

IP Feedback

Indrek Mitt's feedback

I liked the IP and I think that the organisation side was very good. You always knew what will happen next. Very good international teamwork experience. Lectures were interesting as well. Choice of cafeteria was very good. The majority of teamwork topics were in my opinion to much programmer based. No networking projects! Social events helped to get to know everybody better.

Sander Saarm's feedback

  • I liked the internationality in this course, because I found out so many friendly people from other countries (Lithuania, Greece and Finland). We had our good and bad times during these two weeks.
  • I'm glad we also had different cultural activities. I had never been to TV Tower since the restoring and also the Plane Harbour was new and very interesting to me.
  • I actually think we could have had a little more time to finish our project 100%, but we have made 90% in my oppinion, so it's pretty great.

Panagiota Chatzi's feedback

It was a very interesting project for me! I learned new things. I learned how to co-operate with others under pressure and I made many new friends.

Nikolaos Karadimitriou's feedback

Very interesting project-completion oriented program. Stress everyone's skills to the limits and in most times it successfully expands them and new skills and knowledge is retrieved.