University (software engineering) senior project collaboration?

University (software engineering) senior project collaboration?

by Cris Fuhrman -
Number of replies: 10

I'm a university professor who supervises senior projects in software engineering. Some of my students are looking for challenging real-world projects (representing roughly 100 hours of work in a 4-month period). They can be either individual projects or team-oriented. These are engineering students who must show proof of an analysis, a design and of course a working implementation (preferably with tests). 

Moodle has a set of undeveloped features and certainly needs developers. 

Obviously nothing stops students from forging ahead blindly and trying to develop features on their own, but I'm wondering if there's a track record of this kind of collaboration and how it has best worked in the past.

Would senior Moodle developers be interested in a coordinated kind of collaboration? I'd like to discuss it with them (perhaps offline, if appropriate).

Average of ratings:Useful (1)
In reply to Cris Fuhrman

Re: University (software engineering) senior project collaboration?

by Tim Hunt -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers

Have you heard of Google summar-of-code? Moodle has participated in that with very mixed results.

Also, there have been a very few occasions in the past where teachers have tried to get their students to contribute, with even more mixed results.

Things may be better these days since

  • We have tools like codechecker to make it easier for students to check their own work for the basics.
  • There is better documentation.

I agree that in principle, getting students to do real work is a good concept.

The biggest difficulty is proably that most university courses teach students to write code, whereas the most important skill is to read code.

Average of ratings:Useful (3)
In reply to Tim Hunt

Re: University (software engineering) senior project collaboration?

by Dan Marsden -
Picture of Core developers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Plugins guardians Picture of Testers Picture of Translators

Hi Cris,

Mentoring students on a development project can be a big commitment - Google Summer of Code is good because it allows the Mentor to choose a student that they would be willing to mentor on a project they are interested in. In my experience working with University projects this is a bit harder to get right.

If you could match your project timeline with GSOC it could help a lot - from what I understand the GSOC guidelines allow this:

http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs#course_credit

I do have an interest in mentoring students on development projects but I don't have a lot of available time - you could reach out to some of the local Moodle Partners in your area who may be interested in partnering with you - they may even be interested in hiring students after graduation!

Average of ratings:Useful (1)
In reply to Dan Marsden

Re: University (software engineering) senior project collaboration?

by Cris Fuhrman -

Dan, etc.,

Thanks for your replies. The GSOC angle and getting credit is interesting, but not what I was aiming for. I should explain more how our senior projects work:

  • mandatory one semester project (4 months, 135 hours, but at least 20 go to preparing a summary report and presentation for the course grade)
  • students are at the end of a software engineering bachelor's degree (capstone project, aka senior project)
  • they already have a professor mentor (e.g., me)
  • they usually already have an idea for a project, but often it's not feasible and they need a backup (e.g., a Moodle feature, such as TAG search for questions)
  • they must do analysis and design as well as coding (e.g., a conceptual UML model of relationships between questions and non-hierarchical keywords, a class design showing PHP elements and database elements in the solution, a working solution).
  • they must develop iteratively (2-3 week iterations where they demo their result to a "client" and get feedback to drive the next iteration)
  • they must track risks and mitigations (e.g., search algorithm XYZ used to find questions is not optimal and may have bad performance with large question banks, perform tests with huge question banks).

Iterative projects (I avoid the word agile because it means different things to different people) don't have firm commitments as to what will completely work at the end. In one semester, students get at most 4 iterations (usually only 3) and so I hope they can get 2-3 important features working well. Sometimes, it's easier than they imagined and they get more working. The idea is to start with a set of related features that are sufficiently complex, but prioritizing them in the development so that the most important (risky) ones get working as soon as possible. 

The angle I'm looking for from Moodle's developing community is an eventual commitment to a project schedule for collaboration (not managing, but mentoring is always great). That is, some senior Moodle developers could give suggest features that are needed urgently, provide feedback at the end of iterations, provide input into design decisions and code revues (not mandatory, but would be awesome), etc. It's the prof's responsibility to supervise the academic engineering part of the project, but it's way more useful if the "problem domain" part has input from an expert community. 

I only tried once to use an open-source project with a senior project a few years back (there were only two developers on the project). There was really very little input from them, but I suspect there were several reasons: 1) the project was not as active as Moodle, 2) they weren't very interested in the extension the student had chosen. Regardless, the project was a success and the little input from the open-source developers was better than a virtual project with no collaboration.

To maximize the benefit, it would be good to get input on what features are priorities at Moodle and which ones can easily be broken into iterative chunks for a student. I'm aware of the tracker site, but not sure how it can be browsed to find those answers. That's probably where senior Moodle developers can help to provide that kind of advice. Having that "prioritized feature list," I can suggest it to students who are at the choice-phase (before the semester starts).

Average of ratings:Useful (1)
In reply to Cris Fuhrman

Re: University (software engineering) senior project collaboration?

by Itamar Tzadok -

Cris, many small (100 hours) but important and highly desirable enhancements can be packaged in Moodle plugins such as blocks, locals etc. Your students' projects can be designed and developed as such. In the requirement analysis students can justify the importance by referencing tracker issues and forum discussions. You can install these plugins in your local environment and evaluate them for grades. Then they can be contributed to the community via the Moodle plugin repository or git. And some of these enhancements may some day find their way to core in a controlled way. Everybody wins. smile

Average of ratings:Useful (3)
In reply to Itamar Tzadok

Re: University (software engineering) senior project collaboration?

by Cris Fuhrman -

Itamar, 

Great suggestion. Can you help me with the tracker? 

I'm guessing that searches of Type "New Feature" with Priority "Critical" could be interesting projects for acceptance.

Should students go for "unassigned" issues only, or are assigned ones OK, too? 

https://tracker.moodle.org/browse/MDL-28308 seems to be an interesting problem (questions searchable by tags), but I'm confused as it seems someone already did a plug-in for this https://tracker.moodle.org/browse/MDL-40313

Some tracker items that fit the above criteria, such as https://tracker.moodle.org/browse/MDL-1626 have submitted patches (e.g., for 2.5.0) but are still outstanding. It seems they have been patched but are in some kind of purgatory. 

Any hints from experienced folks on what kind of query to use in the tracker for work that needs doing but where nothing has started yet?

Average of ratings:Useful (1)
In reply to Cris Fuhrman

Re: University (software engineering) senior project collaboration?

by Derek Chirnside -

Cris: Your description of these languishing tracker items as purgatory is quite apt!!  I wonder what Anthony will think of this term.  Theologically it may be accurate.  A staging place on the way to a better place.  smile

There are a large number of items that are core to the basic way user manage a Moodle site that Moodle has just not bothered about.  There are a range of reasons why which are not really pertinent here.  I have been banging on at this question now for 5 years, but there are still a lot of issues languishing in the tracker.  

There has been more of a push to make Moodle plugable rather than sort some of these things.  Martin's latest statement recently is this: "I try to get myself and my small company involved with the many parts of Moodle as much as I can, but mostly we focus on making a stable core platform for the community to build on and share code via moodle.org/plugins etc" - so effort in your students in plugins is a good place to start as someone has said.

 

There is a list here which I wrote: https://moodle.org/mod/forum/discuss.php?d=245531 which is a few enhancements I think would be very valuable to a typical admin/teacher.  Moodle really has not a good track record in picking off even the low hanging fruit here.  As far as I can see there are almost none of these requests in either 2.6 or 2.7.  These are some tracker items worth looking at.  IMO, an opinion of one.  smile

By the way, as of last month, this plugin lacks a maintainer: https://moodle.org/plugins/view.php?plugin=mod_certificate

As to supervision, there are probably issues with senior developers getting involved in terms of time.  And there is another issue written up here: https://moodle.org/mod/forum/discuss.php?d=180865#p788945, the language barrier.

However, I believe if you work on a problem in Moodle, of which there are many great problems to choose from in my list (and believe me I can expand it by another 15-20) you will get a lot of help in the forums from non-HQ developers.  Many of them are too busy coding to post here anyway.

BUT: caution your students.  Coming here and saying "I have a masters project to do, plez help me, cheers" never endears anyone.  smile  

Just my opinion.

-Derek

 

Average of ratings:Useful (1)
In reply to Derek Chirnside

Re: University (software engineering) senior project collaboration?

by dawn alderson -

Hi,

I have read this discussion with much interest. I have also followed up the links and noticed that some of the issues span a number of years.  To be fair, I am of the understanding that a pilot study was implemented in the past (by HQ), and the results were acted upon, in relation to the user-voice in terms of the efficiency of Moodle UI.  Hence, such research provided for a bridge between the user and developers.  Naturally there is going to be a disparity, as the forum threads have highlighted, between  the users' and the developers' focus , in some shape or form.... we do afterall see things in different ways- from different positions due to our varied purposes in consideration of the navigation/tools/functionality and what not -all of us! Might it therefore be an idea to set out to undertake some research with users-whereby a robust methodolgy is developed (meaning one that can be used regularly)-stemming from that initial pilot, which in turn will enable the findings to inform a proritised approach in dealing with tracker items.

I would be happy to contribute to such a project.

Dawn

        

In reply to Cris Fuhrman

Re: University (software engineering) senior project collaboration?

by Dan Marsden -
Picture of Core developers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Plugins guardians Picture of Testers Picture of Translators

"2) they weren't very interested in the extension the student had chosen"

This will still be an issue when working with Moodle devs - not many Moodle devs would be willing to commit to your project schedule as volunteers and those that do are likely to have a very limited field of interest. This is one strong point of the GSOC model - The moodle devs that are willing to mentor develop a list of projects they are interested in and students can apply to work on those projects.

If you could develop a relationship with your local Moodle Partner this might still work - they may have more motivation to help the local university and the bigger partners might have enough staff to be able to cover a wide range of Moodle code. I work for a Moodle Partner and we have a range of initiatives working with students from local universities/colleges on various projects.

Average of ratings:Useful (1)
In reply to Cris Fuhrman

Re: University (software engineering) senior project collaboration?

by ryan sanders -

a different approach perhaps... bring the students into moodle vs some place else.  have them create threads here in the forum. give them working knowledge of the wiki, and of the tracker. and of git. 

https://docs.moodle.org

https://docs.moodle.org/dev  looks like some major work has been done in past and recently for updating various plugin types and applications (shifter / grunt) for javascript, how to use github, and almost a step by step process within reason. 

https://tracker.moodle.org  there are bug reports and new feature requests. the "create issue" wizard walks folks through a good amount of information. 

https://moodle.org/mod/forum forums are all over the place with folks asking for help. 

instead of shifting folks some place else. get them working with folks already working with moodle and interacting with them. 

on many of the hobby websites out there say www.koiphen.com, www.tractorbynet.com folks create a thread and work through it. perhaps starting a few different threads.  but still keep to some main thread. or wiki page, or tracker issue, no need to be any major order to anything.  do this or that and you fail. there are a lot of folks here on the forums, tracker, docs/wiki pages, that are professionals in there various fields.  while yes it can be nice to have someone for direct contact. with moodle it little bit of everything. multi mentors and students working side by side. one may know more about a subject vs another one. and vice vs.  being able to get different feedback along the way from different folks. and different ways of looking at things. and how to go about it.  in all thoughts it is a group / collaborative effort. but the need to get information into a forum thread/post and/or docs and/or tracker. so it is there to be gone through by others. and not setting there working all privately by themselves.  or in a private class room forum. were they maybe a handful of folks to get information from. 

the need to search, and simple create a thread and ask about something to find leads. and if things have or have not been covered already. along with some pointers of were to go.  have seen many folks start up thread of asking "GSOC project" or some X project for class. 

one the 2 websites www.koiphen.com and www.tractorbynet.com general folks (all walks of life from those in grade school to those about to kick the bucket) come in say hey i need some help about this project. ((different stages of projects from beginning to end)) to some complete newbie if not baby in thought (never dealing with large machinery. or dealing with contractors, or other.)  for moodle it may be dealing with tracker.moodle.org, never getting into say YUI, JQuery, moodle framework of over all different types of plugin managers (err plugin types). never dealing with a given "code styling" that folks are asked to follow.  never working with github, etc... all that is easy stuff. and no real need to rely on one or handful of folks. a lot of the community members has already been there done that. and can give either detailed or good direction of were to find information. 

if folks are having a problem coding not sure about a class, function, object, variable, etc.. they can easily ask or possibly post a short bit of code into a post. or zip up a few files and attach them to a post. for others to look at and get feedback on.   have seen this many times, and i have been around recently for little over a month.  

as an instructor and needing to go over stuff. at end of class / project cycle, they can submit work, and give you a list of links. to go through. completed or not completed. but getting folks into the community of folks were information is at. and getting them to ask for help, and state were there having problems, or updates on progress helps here, were the folks are at. vs some private blog / wordpad file on there usb stick.  this lets others see what is happening, and get some pointers of how to better help them.   yes it is about netorking and finding folks. and forums / docs / tracker. is a source of that networking with moodle.  and yes sometimes folks will subscribe to a thread. or get a bit more to following certain threads / tracker issues. because it is important to them for what ever reason.  and in that more direct mentors / collaborative work happens.