GSoC 2010 - PyKata Proposal

2 views
Skip to first unread message

Eliseo Ocampos

unread,
Apr 7, 2010, 1:35:04 PM4/7/10
to PyWhip
Hi all,
In past days I was interchanging some emails with Mr. Harrington
about a
proposal that I have for the Google Summer of Code relative to PyKata.
I post it
here for discussion.

Introduction
------------
About me: My name is Eliseo Ocampos, I'm from Paraguay and I'm
studying
Computer Science on the National University of Asunción [1]. My
programming background relies mostly on propietary software for the
National Center of Computing [2] (developing scripts, tools and APIs
for
a variety of systems that we have).

I consider the most significative way to give/share value with a
community
is to provide a mechanism or tool that helps members to learn an
hability.
Said that, I always aim to learn new ways to transmit my (very
limited)
knowledge, but if I could find a way that not only I could use but
anyone,
the multiplicator effect would be extended giving a lot more benefits.

In this case, the hability to learn a new languaje is always
exciting, but
the approach you use to learn it (or teach it) plays a major role in
the
success of this task.

PyKata gives you a pedagogical view most suitable for autodidacts
altough
this not necessarily has to be this way because people have different
ways
of learning something. What I will try to do in this project is to
give
several points of view to face the challenge to help to learn an
amazing
programming language _basically_ the way you want or you like the
most.

The Application Idea
--------------------
- General Modules to implement
. Profile & Stats for Users
While Using the application you should feel at home. This means
that the
profile has to provide you all you need to be comfortable while
learning
Python. Here we include the most common statistical data of your
progress,
recommended problems (by the application or by other users),
references to
relevant tutorials/blog posts and the like.

. Adventure-like leveling system
Here we want to visually impress the user, in a way he/she feel
the
process of learning Python an exciting trip. This leveling system
shouldn't be exact in a way that we "assign" a explicit score but
what
we'll want is to give him/her a kind of hierachy that resembles
the
habilities developed, asigned once overcome the several
"challenges"
provided.

. Categorization & Weigth of Problems
The atomic piece of learning is *one problem*. From it you can
learn a
very specific topic or a combination or various things. Here is were
we
desire the application help us to decide how well we can reward a
user. A
combination of several factors can assist us in this task, I
consider the
three most importants:
* Correct categorization of problems by: topics covered, level
of
previous knowledge required, estimated difficulty (here the
assignement of weight is necessary manual)
* Introduce (implicit) timing while resolving a problem: the
time spent
solving the problem could help the application to assign a
weigth to
the problem and decide the reward the user deserves, as well
as
relevant recommendations on topics covered. I consider the
implicit
timing important because we want the users feel as stressless
as
posible, allowing them to focus on the problem itself.
* Measure (Estimate?) code complexity: based on a solution
provided by
the author of the problem, the application can measure its
complexity
to put more or less weight to the problem. This also allow
the
application recommend other similar problems - inclusive it
can asign
"extra" reward if the provided solution's complexity is
beated ;)

- Let the fun begin - Pluggins in action
As I said, you can learn something in several ways and one of
them will
be the most comfortable to you (therefore probably the most
suitable).
PyKata can be restructured in a way that pluggins come into
action
providing special ways to learn Python concepts.

These Pluggins can be:
. Pair Programming Mini Environment: A place where you resolve a
problem
with another user, looking for achieve a new level or get some
special
reward.

. "Story Mode" challenges: Pre-established bulk of problems that
must be
resolved in groups (preferibly co-related but not necessarily
secuential).

. TutorView Plugin: Usefull for teachers or mentors who want to
monitor
a group of students, assigning special rewards for those who
finish the
"duties".

. PyKata Mini-Arena: A mini tournament could be organized
selecting some
problems and users to solve them & see who is the best!

Some of these pluggins should be available to users who has the
appropiate
level and others will be reserved only for administrators.

Underlying Structure
--------------------
The framework of choice for develop the "core" application will be
Django,
this is because my experience is vastly based in it. I am aware of
the
requeriments of easy maintaining for the future, that's why I pretend
trade-off that little hard learn of Django at begining for the
restructured
plugginable skeleton for PyKata. That adding the proper documentation
(wiki
pages, internal documentation) and several template for creating new
problems
_and_ new pluggins will also be provided, that way making easy for
future
developers of the project. I have previous experience in team work
(even
leading some small projects), so developing with other members of
community
wouldn't be difficult, in fact I think I'll really enjoy to do it in
an
open source environment.

I know the other candidate framework is web2py, altough I have no
experience
with it, I'll give it a try if community thinks this is the best
choice (in
fact I started to make some little projects with web2py in a way to
know it
better).

Tentative Cronogram
-------------------
April . 1st, 2nd and 3rd week: Discuss proposal detalis in PyWhip.
Getting
in touch with the actual code of PyKata.
April . 4th week: Begining with mockups and schematics, modeling
and
prototyping.
May . 1st, 2nd, 3rd and 4th week: Defining use cases. Establish
final
model to work with. Get the basic skeleton of the
application
structure.
June . 1st week: First Review and Documentation of the project,
rearrange
cronogram if needed, here also I allocate some days for
posible
contingencies.
June . 2n and 3rd week: Implementation and basic testing of
Profile
& Stats and Categorization & Weigth of Problems.
June . 4th week: Semester final Tests at College (estimated)
July . 1st and 2nd week: Implementation and basic testing of the
Leveling
System.
July . 3rd week: Second Review and Documentation of the project.
July . 4th week and,
August . 1st week: Implementation and basic testing of at least 2
(two)
plugins as a proof of concept of the design.
August . 2nd and 3rd week: Suggested 'pencils down' date by GSoC.
Take a week
to scrub code, write tests, improve documentation, etc.
August . 4th week: Finalizing the project (August 20).

This cronogram would be accomplished with 6 (six) hours per day,
including
weekends, giving 42 weekly hours to dedicate to the project, without
afecting
this to my normal activities.

[1]http://es.wikipedia.org/wiki/Universidad_Nacional_de_Asunción
[2]http://www.cnc.una.py

David MacQuigg

unread,
Apr 8, 2010, 7:19:51 AM4/8/10
to PyWhip
Eliseo,

This looks like a good proposal. I hope you can get it in by the
deadline at noon on Friday.

I like your idea for setting special environments like pair-
programming. I know that I am more stimulated when working with
someone else, and often a partner can help me past a point where I
might get stuck. The special "pair-programming" or even a "team-
programming" environment could show each student's progress on a set
of problems, side-by-side. A red star means "Hey, look at this!",
then clicking would show a comment or partial solution - something
like "Hey guys, don't waste your time with power series on this one.
Try the atan2 function from the math library."

No problem with your choice of Django over Web2py. We decided to
leave this choice to whoever is doing the work. The only requirement
is that the finished program be documented well enough that a student
not familiar with web design could take over.

You might want to include a paragraph on how Python fits in to the
educational experience for students in Paraguay. Will PyKata help
teachers in science and engineering? Is it an acknowledged part of
the curriculum, or just something students figure out for themselves?

Let me know us know if you need any help with the application process.

-- Dave

Eliseo Ocampos

unread,
Apr 9, 2010, 1:02:37 AM4/9/10
to PyWhip
Dave,

On Apr 8, 8:19 am, David MacQuigg <macqu...@box67.com> wrote:
> Eliseo,
>
> This looks like a good proposal.  I hope you can get it in by the
> deadline at noon on Friday.
>
> I like your idea for setting special environments like pair-
> programming.  I know that I am more stimulated when working with
> someone else, and often a partner can help me past a point where I
> might get stuck.  The special "pair-programming" or even a "team-
> programming" environment could show each student's progress on a set
> of problems, side-by-side.  A red star means "Hey, look at this!",
> then clicking would show a comment or partial solution - something
> like "Hey guys, don't waste your time with power series on this one.
> Try the atan2 function from the math library."

It's good to know that you like it :)


>
> No problem with your choice of Django over Web2py.  We decided to
> leave this choice to whoever is doing the work.  The only requirement
> is that the finished program be documented well enough that a student
> not familiar with web design could take over.

Ok, I got it. I'll do my best to document the application as good as
possible.


>
> You might want to include a paragraph on how Python fits in to the
> educational experience for students in Paraguay.  Will PyKata help
> teachers in science and engineering?  Is it an acknowledged part of
> the curriculum, or just something students figure out for themselves?

I'll certainly do it. Python is not the initial programming language
we use
at college. We start with something more natural to us, using a pseudo-
code
like language that uses reserved words in spanish. In that way is more
easy
to start learning how to program. But once you advance more on the
courses,
you begin to use other well known languages, and Python is one of the
popular choices of teachers. That's why I see so valuable to work
with
PyKata, it will invite to learn something in an innovative way, hoping
to improve
notably the quality of the knowledge acquired.

>
> Let me know us know if you need any help with the application process.

Ok, thank you.
>
> -- Dave

Eliseo

Eliseo Ocampos

unread,
Apr 9, 2010, 2:32:54 AM4/9/10
to PyWhip
Hi all,

I already submitted my proposal. You can see it here:
http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/eocampos/t127079203228

If any of you have any other suggestion I'll be glad to add it.

Best regards,
Eliseo.

Reply all
Reply to author
Forward
0 new messages