Jim's
Tutorials

Fall 2008
course
navigation

Ryon F - project

Your name : Ryon Frink

Tutorial title : software for teaching IT
Desired credits : 5

Tutorial description: (appropriate for the registrar's permanent record)
Coding and documentation of a software interface for use in the teaching of IT in developing countries.

What exactly do you want to study? Be as explicit as you can, including a schedule if possible.

How does this relate to your plan and/or other course work?

What resources have you identified? (e.g. books, articles, websites, experience, ...)

What will be the gradeable products, and on what schedule? (e.g. projects, programs, papers, tests, ...) Project by graduation.

Rough Treatment (so to speak)

This is all in the design phase, and while I am ready to start implimenting a lot of this, I am not completely wedded to most of it. The core of the project, howerver, is that every task is treated functionaly and has a similar, related expression in python. That's the concept, but here's some ideas for what that might look like.
There are two basic aproaches I've come up with. The first is to create a "function toolbar" which is accesed at any time using different F keys (1-12). This would be acompanies by a read-through tutorial explaining things step by step. So, for example, The F2 key would be "search". When pressed, a graphical interface comus up on screen. There is a text field which asks "search for what?" and has a space to enter text. To the right of that is a box which asks "search where?" with a menu of possible search locations.
Also displayed is some python based pseudo-code which would look something like "search(usr_text, menu_where): for usr_text in menu_where: print context" The F keys would hold common functions like search, save/open file, copy/paste, show folder in file tree, etc.. So that in learning basic computing skills, the student is also exposed to the syntax and process of basic code. Some of the keys, however, can also be used to hold macros or, as the user starts to learn to write their own code, to hold user functions. For example, a user has stored foo(x, y) in F9. When they press F9, two fields pop up on screen which prompt for "x?" and "y?".
The other idea, probably more suited to the google aps thing, is to have a web based setup with a split screen, editor on one half and console output on the other. This would introduce basic computer use concepts like searching the internet or checking email or opening a file by having the user gradualy "build" their own web browser in python, by pulling from an API which will be introduced piece by piece. For example: the searching lesson might go something this. The user is shown a huge passage on screen and asked to find a certain word in it. There is some brief explanation of string matching. The user is shown how to write a simple searching function. Then, through the API, they embed that function in a widget with a text entry field and pack(widgetx, toolbar2). Now they have a little searchbar as part of their basic interface in this web app. But basicaly, the entire thing would work through this web app to teach programming and basic computer use at the same time, very clearly building towards the goal of a finished and useful "browser" which the student "builds" from the ground up, learning how it all works before learning how to use it.
I think the first option is much more open ended and could be more useful to a user in the long term (ie, after an initial class or tutorial). However, the second idea is much more clear-cut, goal oriented, and, I believe, simple to implement, even though the "browser" which would be the final product would end up looking like any browser except more cluttered and clunky, and thus would be kind of useless as a real tool for the user.

GWT and JavaScript Beginnings

Here's the first Google Web Toolkit (GWT) sample app I got to run: Screenie_01
I'm considering whether or not to use Eclipse as a doccumentation helper. Right now I'm leaning towards just doing the doccumentation myself, mainly due to the time constraints of learning a new system.

GWT Tues 9/23

Managed to build a rudimentary app with button, text field, event handlers, etc. Currently setting it up so that text entered in text-field gets executed as JavaScript on console.
Screenie_02
The window in the upper right corner is the app. On the bottom is some of the code for it, on the top is a tutorial I'm using for a guide.

Wed 9/24, aww crap...

So I realized around 1am that I was dealing with an awful lot of java, and I hadn't seen a shread of python even after completing the entire tutorial course and writing a little app of my own. And, sure enough, a very quick google search revealed that, in fact, the Google App Engine, is, while certainly web-based, a completely diferent thing from the Google Web Toolkit.
I am an idiot.
Fortunately, however, this was one of those rare times when bull-headedness can make up for a lot of stupidity. So I spent all night learning the far simpler, far more powerful, and far more pythony Google AppEngine. Here's a shot of the guestbook app which is the result of the tutorial: Screenie_03

Update

I think I can, and should, put my accidentaly aquired GWT knowledge to good use. I think the best way to do a lot of the things I'm envisioning is to use GWT as a part of the AppEngine project I create. GWT has a lot more focus on UI, but has no real backend to speak of. I think I can use the webapp Framework (similar to Django I think) as a way to channel all the client RPC functions to GWT, and all the server stuff stays with GAE (google app engine). What makes me think that it really might work is that I just stumbled on this post http://latrz.com/2543
It's probably a long shot, though. So in the mean time I'm going to keep working on GAE.

Wed 9/24 Woot!

I've got something (not much, but it is something...) up on the google apps site. The name of my project is Development Development Kit, or ddk. I'm posting the code for it here.

Jim says

Sounds like a good start, I'd like to see it. But you haven't put a URL here. I've set up a DDK private page for discussing it - perhaps you could put access info there, or add me as a member of the project or something.

Tues 10/21

Ok, so it's been a crazy few weeks, but I think I've got a decent start here, knowing of course that it will be a very intense few weeks coming up. I've spent quite a bit of time going through Web Design In a Nutshell, JavaScript: The Good Parts, and CSS In a Nutshell, as well as a bunch of articles on WebMonkey (subsidiary of Wired), and Widgeepedia, and good old Wikipedia. Outline attached in odt format.

Mon 11/24

It's not much, but it's some of what I've been working on at this point. As I've said, i've been rewriting and deleating a lot out of a sort of crisis of confidence. But here's some stuff.
http://cs.marlboro.edu/ courses/ fall2008/tutorials/ ryon/ project
last modified Monday November 24 2008 3:10 pm EST

attachments [paper clip]

     name last modified size
   app.yaml Sep 24 2008 10:03 am 154B    ddk.py Nov 24 2008 1:20 pm 1.22kB [TXT]index.html Sep 24 2008 10:03 am 590B    index.yaml Sep 24 2008 10:04 am 482B [TXT]main.css Nov 24 2008 1:20 pm 340B    outline.odt Oct 22 2008 6:11 am 18.1kB [IMG]PlanProjDoc_01.jpg Sep 23 2008 9:57 am 221kB [IMG]PlanProjDoc_02.jpg Sep 24 2008 1:19 am 196kB [IMG]PlanProjDoc_03.jpg Sep 24 2008 7:42 am 260kB