sábado, 24 de julho de 2010

OWL - Open Web Learning

A Associação SoLiSC (http://associacao.solisc.org.br), da qual faço parte, está iniciando um projeto de educação para WEB, chamado OWL - Open Web Learning.

O projeto tem como objetivo oferecer uma abordagem diferenciada para aprendizagem pela WEB: aprendizagem em rede, assíncrona, com conteúdo gerado pelos usuários e com orientação de profissionais de educação para os produtores de conteúdo.

O OWL está listado no site do projeto Drumbeat (https://www.drumbeat.org/project/owl-open-web-learning/), e estamos buscando colaboradores para participar da construção desta idéia.

Alguns aspectos do projeto já são consenso entre os envolvidos até este ponto:

  • O nosso foco é facilitar a aprendizagem, e não o ensino. Pode parecer estranho, mas é uma decisão clara de que temos o aprendiz no papel central, e não a figura de um professor.
  • O OWL não é um projeto de desenvolvimento de software ou de ferramentas de tecnologia. Pode ser que precisemos desenvolver algum software, mas faremos isto como meio para formar uma rede de aprendizes que elaborem e usem material didático.
  • Acreditamos que a melhor forma de aprender na WEB é assíncrona e colaborativa. Não queremos ter cursos na forma tradicional, com turmas e datas de início e fim. Ao invés de colocar a sala de aula na WEB, queremos colocar o recreio lá! Queremos que as pessoas aprendam de forma divertida, e que estudem o que estiverem interessadas em aprender.
  • Um "curso" (um tópico ou ponto de partida para a aprendizagem) é criado por um "facilitador", que insere recursos didáticos e referências como ponto de partida e convida os estudantes a começar a discussão sobre o tópico.
  • Na medida que este tópico evolui, conteúdos e comentários que forem criados pelos aprendizes passam a fazer parte dos recursos didáticos disponíveis.
  • A função principal do facilitador é organizar os recursos didáticos do "curso" e estimular os aprendizes a discutirem e a buscarem novos recursos didáticos.

Para realizar isto tudo, o OWL precisará de formar uma comunidade de facilitadores, e precisará apoiar estes facilitadores com técnicas e ferramentas para produção e organização de material didático.

Queremos, até o SoLiSC 2010 (http://www.solisc.org/), ter o primeiro "curso" on-line para fazer o lançamento oficial do projeto.

quarta-feira, 23 de junho de 2010

Engenharia Educacional?

No site Educação Sem Distância (http://educacaosemdistancia.org.br), Marcond de Marchi faz uma reflexão interessante sobre projeto instrucional para educação a distância. Neste post (http://educacaosemdistancia.org/index.php?mod=discuss&d=18), ele compara o desenvolvimento de conteúdo para educação a distância com o desenvolvimento de software, fazendo um paralelo da evolução da engenharia de software com alguns aspectos da evolução de projeto de conteúdos educacionais.

Apesar de concordar com a essência do post do Marcond, com a necessidade e inevitabilidade de se estabelecer metodologias de projeto instrucional e de tornar este processo um pouco mais previsível, não me sinto confortável com o termo "Engenharia".

Estou entendendo que, ao se falar em Engenharia Educacional, temos que trazer para a educação os conceitos de otimização de produção, de automação, de padronização e uso de componentes intercambiáveis que fizeram da engenharia (não só de software, mas de modo geral) o que ela é hoje. Posso estar exagerando um pouco, mas não vejo estes valores e requisitos, tão úteis para a engenharia, como positivos em si para a educação. Este entendimento, porém, não invalida a necessidade de estabelecimento de técnicas que possibilitem reutilização de "objetos de aprendizagem" e a produção em menor tempo, para se produzir conteúdo educacional em um mercado cada vez mais exigente e imediatista.

Acredito que seja mais saudável caminharmos para uma "Arquitetura Educacional" do que uma "Engenharia Educacional", pois entendo que o foco da engenharia é no aspecto "econômico" da obra, enquanto a arquitetura tem foco no aspecto "humano" do negócio. Vamos, sim, utilizar técnicas e processos para acelerar e tornar mais previsível o projeto educacional, mas sem perder de vista que cada curso é uma obra única, com o foco em um público específico, e que deve ser percebida de confortável, divertida e contextualizada para este público. Em resumo, é uma diferença sutil de percepção do foco do "projetista" educacional: no "instrutor" ou no "aluno". A Engenharia tenderia a focar no instrutor, nos aspectos de praticidade e versatilidade de aplicação do curso nos mais diversos contextos, enquanto a Arquitetura tenderia e focar do aluno, e em como fazê-lo "se sentir em casa" fazendo o curso.

Além disto, voltando mais ao foco do artigo do Marcond, vejo muitos "produtos" de software (em geral, produtos de software livre) feitos "por fora" das metodologias tradicionais de engenharia de software, com a utilização de técnicas colaborativas, em que cada desenvolvedor trabalha "do seu jeito" e o produto final acaba ficando muito bom! Este pessoal (as comunidades de software livre) me parece trabalhar mais com "artesanato" de software do que com "engenharia" de software, e, com isto, consegue resultados excelentes e "exclusivos". Acho que vale uma reflexão neste sentido também para o design instrucional (quem sabe um novo post por aqui?).

sexta-feira, 6 de novembro de 2009

Plugins GIMP e DIA no launchpad

Acabo de colocar no LaunchPad (http://www.launchpad.net/axplugins), o código dos plugins do GIMP e do DIA já comentados neste blog.

O código está disponível para download por desenvolvedores, mas ainda não está pronto para um "release" aberto.

Os principais aspectos que faltam para este release são:

  • Documentação (readme, comentários no código)
  • Referências de copyright e licença (GPL-V2) no código
  • Instruções de instalação
  • "Limpeza" geral do código

Quem tiver interesse em colaborar, por favor entre em contato.

terça-feira, 8 de setembro de 2009

Convites SoLiSC

Acontece em novembro de 2009, em Floripa, o 4º Congresso SoLiSC (Congresso Catarinense de Software Livre).

Verdadeiras "lendas" da comunidade de Software Livre estarão por lá... vale a pena dar uma olhada no site:

http://www.solisc.org.br

Só para dar uma palhinha de quem vai estar lá, olha quem está convidando para o evento:





segunda-feira, 3 de agosto de 2009

Plugin DIA para redimensionar objetos

Para quem não conhece, o Dia é uma aplicação muito interessante para desenho de diagramas.

Este projeto parece estar um pouco "devagar" ultimamente, mas é extremamente útil.

Usando esta ferramenta por estes dias, senti falta de uma funcionalidade: selecionar um grupo de objetos e redimensioná-los para um tamanho específico. No espírito do Software livre, implementei esta funcionalidade como um plugin em python, e posto o código aqui (é bem curto) para aqueles que tiverem interesse.

Ainda é uma versão experimental, mas, assim que eu achar que isto está mais ou menos estável, vou encaminhar para o pessoal do projeto Dia como sugestão para inclusão na distribuição.
Até lá, quem quiser experimentar (por sua própria conta e risco...), fique à vontade.

A maneira mais simples de instalar é criar, dentro do seu diretório ".dia", um diretório python, e salvar o arquivo lá (sugiro o nome de objresize.py). Na próxima vez que você carregar o Dia, vai encontrar, no menu Objetos, o item "Simple Resize Selected". É só selecionar um ou mais objetos e executar esta função, que você verá um diálogo perguntando as dimensões dos objetos, e todos os objetos serão redimensionados para o tamanho especificado.

Código:


1 # PyDia Simple Resize
2 # -*- coding:utf-8 -*-
3 # Copyright (c) 2009, Alexandre Machado <axmachado@gmail.com>
4 #
5 # Resize selected Objects via property api
6 #
7
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 1 of the License or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 import dia
23
24 def resizeSelected (w,h):
25 """ Do the resize job: resize all selected
26 objects to the width and heigth expressed
27 by "
w" and "h" parameters """
28
29 activeDiagram = dia.active_display().diagram
30 for elem in activeDiagram.selected:
31 if elem.properties.has_key('elem_width'):
32 elem.properties['elem_width'] = w
33 if elem.properties.has_key('elem_height'):
34 elem.properties['elem_height' ] = h
35
36 dia.update_all()
37
38
39 # GTK stuff
40 import pygtk
41 pygtk.require("2.0")
42 import gtk
43
44 class MessageBox:
45 def __init__(self, msg = 'Message here',
46
title = ''):
47 self.dlg = gtk.Dialog (title, flags=gtk.DIALOG_MODAL)
48 lbl = gtk.Label (msg)
49 self.dlg.vbox.pack_start(lbl, True, True, 2)
50 lbl.show()
51
52 btn = gtk.Button("Ok", gtk.STOCK_OK)
53 btn.connect("clicked", self.close)
54 self.dlg.action_area.pack_start(btn)
55 btn.show()
56
57 self.dlg.show()
58
59 def close(self, widget, data=None):
60
self.dlg.destroy()
61
62
63
64 class ResizeWindow:
65 """
66 Window class to get the parameters
67 "
""
68
69 def __init__(self):
70
self.initWindow()
71 self.window.show()
72
73 def checkDelete(self, widget, data=None):
74
return False;
75
76 def destroy(self, widget, data=None):
77
self.window.destroy()
78
79 def close(self, widget, data=None):
80
self.window.destroy()
81
82 def doResize(self,widget,data=None):
83
try:
84 w = float(self.iw.get_text())
85 h = float(self.ih.get_text())
86 resizeSelected(w,h)
87 except ValueError,v:
88 MessageBox("The values for width and height must be valid numbers",
89 "Invalid data")
90
91 def initWindow(self):
92
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
93 self.window.set_title("Simple Resize")
94 self.window.set_border_width(3)
95
96 l1 = gtk.Label("Width:")
97 l1.show()
98 l2 = gtk.Label("Height:")
99 l2.show()
100 self.iw = gtk.Entry()
101 self.iw.set_text('1.0')
102 self.iw.show()
103 self.ih = gtk.Entry()
104 self.ih.set_text('1.0')
105 self.ih.show()
106
107 btnGo = gtk.Button("Resize")
108 btnGo.show()
109 btnClose = gtk.Button("Close");
110 btnClose.show()
111
112 box1 = gtk.VBox(False,2)
113 box1.show()
114 box2 = gtk.HBox(False,2)
115 box2.show()
116 box3 = gtk.HBox(False,2)
117 box3.show()
118 box4 = gtk.HBox(False,2)
119 box4.show()
120
121 box1.pack_start(box2)
122 box1.pack_start(box3)
123 box1.pack_start(box4)
124
125 box2.pack_end(self.iw);
126 box2.pack_end(l1);
127
128 box3.pack_end(self.ih);
129 box3.pack_end(l2);
130
131 box4.pack_start(btnGo);
132 box4.pack_start(btnClose)
133 self.window.add(box1)
134
135 btnGo.connect("clicked", self.doResize)
136 btnClose.connect("clicked", self.close)
137 self.window.connect("delete_event", self.checkDelete)
138 self.window.connect("destroy", self.destroy)
139
140 def resize_cb(data,flags):
141 dlg = ResizeWindow()
142
143 dia.register_action ("ObjectSimpleresizeSelected", "Simple Resize Selected",
144 "/DisplayMenu/Objects/ObjectsExtensionStart",
145 resize_cb)

syntax highlighted by Code2HTML, v. 0.9.1

quinta-feira, 2 de julho de 2009

Emfim, um começo

Este blog nasce como uma resposta a uma pergunta que uma amiga me fez: "você anota todas estas idéias que você tem?"

Esta pergunta, aparentemente inocente, me faz pensar: eu realmente tenho as idéias? Alguém consegue, efetivamente, ter uma idéia, ser dono dela e controlá-la, ou elas tem vida própria?

Com estas perguntas na cabeça, resolvi começar a anotar as idéias que me passam pela cabeça, e, ao anotá-las publicamente, deixá-las soltas por aí, livres para encontrarem outras idéias, ganhando forma e força neste processo.

Bem vindo(a)