<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>ciencias-de-la-computacion &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/ciencias-de-la-computacion/</link>
	<description>Feed of posts on WordPress.com tagged "ciencias-de-la-computacion"</description>
	<pubDate>Tue, 08 Dec 2009 15:13:04 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Turorial: Parser Descendente Recursivo]]></title>
<link>http://openfecks.wordpress.com/2009/09/28/turorial-parser-descendente-recursivo/</link>
<pubDate>Tue, 29 Sep 2009 03:51:27 +0000</pubDate>
<dc:creator>noahfx</dc:creator>
<guid>http://openfecks.wordpress.com/2009/09/28/turorial-parser-descendente-recursivo/</guid>
<description><![CDATA[Bueno para los que se preguntan como hacer un parser a partir de una gramática que hemos diseñado, a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Bueno para los que se preguntan como hacer un parser a partir de una gramática que hemos diseñado, aquí le enseñare brevemente como hacer un parser descendente recursivo</p>
<p>Tenemos que tomar en cuenta lo siguiente:</p>
<p>1. Nuestra gramática no debe ser recursiva a la izquierda.Por ejemplo la producción</p>
<p><em>E::=Er </em></p>
<p>es recursiva  la izquierda, para este tipo de gramáticas nuestro parser no sería funcional, asi que hay que quitarle la recursividad a la izquierda</p>
<p>2.Debemos construir los conjuntos: First, Follow, para cada producción de nuestra gramatica.</p>
<p><strong>Estructura del parser:</strong></p>
<p><strong>LookAhead: </strong>Esta variable(global), inicialmente es el token de mas a la izquierda de la entrada.</p>
<p>Por cada <strong>NO TERMINAL</strong> de la gramática debe existir un procedimiento del parser.Para hacer mas fácil su programación, el nombre del procedimiento tendrá el nombre del no terminal.</p>
<p>Cada una de las opciones del no terminal formaran el cuerpo del procedimiento.</p>
<p><strong>Procedimiento Match</strong>: Con este procedimiento sabremos si es el TERMINAL correcto, lo detallare a continuación</p>
<pre>void Match(token simbolo){</pre>
<pre style="padding-left:30px;">if(lookahead==simbolo)
</pre>
<pre style="padding-left:30px;">lookahead=siguienteSimbolo;/* <em>para obtener el siguiente simbolo se puede hacer un procedimiento para pedir el siguiente toke que recibimos del analizador lexico*/</em></pre>
<pre style="padding-left:60px;">else</pre>
<pre style="padding-left:60px;">ERROR
}
</pre>
<p>Bueno, ahora a programar, escribiré un parser para la siguiente gramática:</p>
<p>terminales: x,y,z;</p>
<p>E:=xP &#124; H     /*  E produce x segido de la producción P ó la producción H       */</p>
<p>P:=Tz</p>
<p>H:=y</p>
<p>T:=yx;</p>
<p>****************************************************************</p>
<p>var token lookahead;//variable del tipo del token que ustedes utilicen</p>
<p>void main {</p>
<p>//Iniciar Scanner si s necesario</p>
<p style="padding-left:30px;">lookahead=nexToken() // funcion que devuelve el token siguiente</p>
<p style="padding-left:30px;">E();</p>
<p>}</p>
<p>void E(){</p>
<p>if(lookahead==x)</p>
<p style="padding-left:30px;">Match(x);</p>
<p style="padding-left:30px;">P();</p>
<p style="padding-left:30px;">else</p>
<p style="padding-left:30px;">H();</p>
<p>}</p>
<p>void P(){</p>
<p style="padding-left:30px;">T();</p>
<p style="padding-left:30px;">Match(z);</p>
<p>}</p>
<p>void T(){</p>
<p style="padding-left:30px;">Match(y);</p>
<p style="padding-left:30px;">Match(x);</p>
<p>}</p>
<p>void H(){</p>
<p style="padding-left:30px;">Match(z);</p>
<p>}</p>
<p>Y así de sencillo es un parser descendente Recursivo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Si se dan cuenta el parser recorre el árbol de arriba hacia abajo de allí viene descendente,</p>
<p>Y Recursivo se debe a que el parser puede llamarse a si mismo directa o indirectamente por medio de sus funciones <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Espero que les sirva de algo,</p>
<p>Dudas, comentarios o sugerencias, no duden en escribir</p>
<p>saludos</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agenda FX, proyecto Estructuras de Datos]]></title>
<link>http://openfecks.wordpress.com/2009/09/25/proyectoedd1/</link>
<pubDate>Fri, 25 Sep 2009 19:11:12 +0000</pubDate>
<dc:creator>noahfx</dc:creator>
<guid>http://openfecks.wordpress.com/2009/09/25/proyectoedd1/</guid>
<description><![CDATA[AGENDAFX Muchas veces es difícil al principio de un proyecto implementar o abstraer lo que se nos es]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div class="mceTemp">
<dl class="wp-caption alignleft">
<dt class="wp-caption-dt"> </dt>
<dd class="wp-caption-dd">AGENDAFX</dd>
<dt class="wp-caption-dt"><a href="http://www.mediafire.com/file/qjdtmzminnq/proyectoEDD.zip"><img class="size-medium wp-image-60" title="agenda " src="http://openfecks.wordpress.com/files/2009/09/agenda1.jpeg?w=300" alt="AGENDAFX" width="300" height="225" /></a></dt>
</dl>
</div>
<p>Muchas veces es difícil al principio de un proyecto implementar o abstraer lo que se nos esta pidiendo, creo que a la mayoría en el curso de Estructuras de Datos al principio andamos un poco perdidos de como empezar.</p>
<p>Los ejemplos visto en clase no son lo suficiente claros o muy sencillos, luego acudimos a la web para ver si podemos darnos una idea de como implementar lo que se nos pide, pero al final solo encontramos ejemplos sencillos o los mismos ejemplos en todas las paginas.</p>
<p>Por eso e decidido subir mis proyectos, al menos los que me queden bien jaja, para poder ayudar  a los que tienen este problema, y empiezo con mi proyecto de Estructuras de Dato.</p>
<p>Se nos pidió desarrollar una agenda web, con las siguientes funciones:</p>
<p>Calendario, cada día del año con una festividad y evento, Una lista de contactos, una libreta de apuntes, y gráficas de reporte.</p>
<p>Ahora vamos con lo emocionante, para implementar la parte de el calendario hice lo siguiente:</p>
<p>Voy a empezar con el nodo mas elemental, que era el nodo de eventos, este esta contenido en una lista doble enlazada ordenada por prioridad de evento. La lista de los eventos esta contenida en el nodo de día, este nodo de día esta contenido en una Matriz Ortogonal(en el proyecto es la clase melOrto.java) o Lista Ortogonal, es decir cada nodo tiene 4 punteros a otros nodos.Cada instancia de la Matriz Ortogonal conforma una lista doble enlazada que es con la que se maneja el año en curso.</p>
<p>Para almacenar los contactos utilice un <a href="http://es.wikipedia.org/wiki/%C3%81rbol_AVL">árbol AVL</a>, el cual tenía que desplegar sus contactos : InOrden, post-Orden, PreOrden.</p>
<p>También se despliegan los contactos en un grafo.</p>
<p>Para los apuntes no es mayor ciencia, una lista doble enlazada circular.</p>
<p>Para ingresar los eventos y contactos se puede hacer de 2 maneras:</p>
<p>Manual o cargando un archivo XML al servidor.</p>
<p>A continuacion les describo que herramientas use para hacer la agenda:</p>
<pre>Sistema Operativo: GNU/Linux Debian Lenny 5.0.2
Tecnologia:JSP
Java: Java Enterprise Editition.
IDE: NetBeans 6.7.1
Servidor web: Glassfish v2.1
Parser XML: <a href="http://www.jdom.org/">JDOM.</a>
JAR  para enviar archivos al servidor: commons-fileupload-1.2.1, commons-io-1.4.</pre>
<p>El enunciado se encuentra en la carpeta del proyecto, los JAR antes mencionados y el JDOM se encuentran en la carpeta &#8220;dist&#8221; donde encuentran un archivo con extensión &#8220;war&#8221; lo descomprimen , en la carpeta resultante pueden encontrar las librerías.</p>
<p>Cualquier duda o comentario de como implementar una estructura, no duden en preguntar en este blog, haré lo posible por contestar <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>CLICK EN LA IMAGEN PARA DESCAGAR</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[tomando un poco de aire...]]></title>
<link>http://openfecks.wordpress.com/2009/09/17/tomando-un-poco-de-aire/</link>
<pubDate>Fri, 18 Sep 2009 00:02:12 +0000</pubDate>
<dc:creator>noahfx</dc:creator>
<guid>http://openfecks.wordpress.com/2009/09/17/tomando-un-poco-de-aire/</guid>
<description><![CDATA[Un mes de ausencia en el blog, 2 proyectos: Compiladores 1, Estructuras de Datos, look a lo Richie S]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Un mes de ausencia en el blog, 2 proyectos: Compiladores 1, Estructuras de Datos, look a lo Richie Stallman, regreso a postear un poco de mis ideas ,buenas o malas, la verdad no lo se.  Bueno creo que todos los que estudiamos Sistemas en USAC, tenemos algo en común: esperar(rogar) por una prorroga, de un proyecto que nos consume totalmente,(Lo peor es cuando no la dan&#8230;).Ahora surge una pregunta en mi mente, si los catedráticos o auxiliares a la hora de plantear el proyecto, toman conciencia de evaluar en verdad los conceptos del curso, o solamente poner un obstáculo mas para el estudiante.</p>
<p>Con lo que va del semestre, y con lo que va de los proyectos, el proyecto de Estructuras de Datos, bastante extenso por cierto, pero la forma en que será evaluado es acorde al contenido del curso. Situación que no se dio con  el Proyecto de Organización de Lenguajes y Compiladores 1, donde usamos Jlex y Cup, para el análisis léxico y análisis sintáctico respectivamente, donde nosotros teníamos que diseñar la gramática o al menos deducirla de un enunciado bastante confuso, que da la impresión de que lo hicieron bastante rápido.  Y la forma en que será evaluado el proyecto o al menos la ponderación en la hoja de calificación no evalúan nuestros conocimientos en teoría de autómatas, ni de operaciones con gramáticas, pero bueno, creo que me desvíe un poco del tema.</p>
<p>Creo que es tiempo de dejar de pensar en proyectos donde solo se evalúa la resistencia del estudiante para desvelarse, y empezar a proponer proyectos donde en realidad se creen nuevas tecnologías o soluciones para problemas existentes. Proyectos que nazcan de las inquietudes los estudiantes, quien sabe que se conviertan en soluciones para nuestra sociedad o nuestro país&#8230;</p>
<p>En fin solo queda seguir hechandole ganas y  a divertirnos con esos preciosos proyectos <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  jeje.</p>
<p>Un saludo para el mártir de Compi 1: BorisCougar, que arriesgo su vida por la ciencia hahahaha</p>
<p>saludos a todos  como leí por ahí&#8230;</p>
<p>id y programad todo</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Del destino de un computador científico]]></title>
<link>http://linternaverdee.wordpress.com/2009/06/12/del-destino-de-un-computador-cientifico/</link>
<pubDate>Fri, 12 Jun 2009 08:56:55 +0000</pubDate>
<dc:creator>Pablo Battaglia</dc:creator>
<guid>http://linternaverdee.wordpress.com/2009/06/12/del-destino-de-un-computador-cientifico/</guid>
<description><![CDATA[Muchas veces pensamos: qué será de nosotros? Es inevitable, sin embargo no seremos sino lo que hacem]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Muchas veces pensamos: qué será de nosotros? Es inevitable, sin embargo no seremos sino lo que hacemos de nosotros. Nuestra profesión esta mancillada por una de las llamadas paradojas. Nos creemos matemáticos, al menos en origen. Tratamos de tener definiciones para todo: qué es un algoritmo, que es un procedimiento, etc. Sin embargo si preguntamos qué es un computador científico dificilmente lleguemos a un acuerdo. Un investigador? Si. Un desarrollador? que significa? Un programador? La mayoria suenan demasiado livianas. En definitiva lo que nos define es simplemente el programa de nuestra carrera, haber aprobado todas las materias de la licenciatura. Si tratamos de no volar demasiado y miramos a nuestro alrededor vemos que nuestros colegas se dedican, a fin de cuentas, a  lo mismo que un ingeniero en sistemas, que un egresado de la universidad de belgrano, que un autodidacta, etc:  programar sistemas. Sistemas contables, administrativos, de ventas, desarrollos web, etc (que mas?).</p>
<p>Cómo puede suceder esto? Cómo puede ser que el destino común de los egresados de una carrera como esta sea tal? Es lo que todos esperaban hacer una vez egresados de la facultad? Yo me niego a creerlo. Sí, una minoría se va a dedicar a la investigación en instituciones académicas, centros de desarrollo e investigación, incluso en el marco de una gran empresa. Mis loas para ellos.  Sin embargo es la mayoría la que me preocupa, no tanto por ellos sino por la tendencia que generan. Sin temor a equivocarme puedo decir que mi motivación para estudiar computación no fue la de terminar desarrollando sistemas para empresas. No es que lo vea excesivamemte mal, puede servir para dar los primeros pasos en el mercado laboral, ver de qué se trata e incluso ganar unos buenos pesos. Pero definitivamente no lo veo dentro de mí, no me veo ejerciendo esta actividad en el largo plazo  (no quiero hablar del resto de mi vida ni mucho menos).</p>
<p>Qué nos ofrecen estas empresas? Nuevas tecnologías, las cuales se limitan a saber Java o C# y sus respectivos frameworks (persistencia, presentación, inversión de control, etc). No quiero que parezca que estoy en contra de la industra, que soy un bicho de la facultad. Sin embargo quiero dejar en claro que me niego a aceptar que el mercado dicte lo que debemos ser como profesionales. Si estas son las posiciones laborales que dejan LA PLATA, bien por ellas, pero no podemos conformarmos. Debemos ser leales a nosotros, a nuestras convicciones. Y es muy fácil que estas se vean degradadas por las tendencias de la época y queden en el olvido pero tenemos que hacer el esfuerzo, si, para viajar &#8220;contracorriente&#8221;.</p>
<p>Por favor! No creamos que por trabajar estamos haciendo las cosas bien! Nuestra misión, la misión de cada uno, es algo más que eso. Demos un salto de creatividad, seamos creativos en nuestra actividad. No nos estanquemos en lo que esperan que debamos ser. No hay que ser funcional al sistema, por dios. Busquemos las alternativas en las cuales nos sintamos plenos, rechazemos lo demás. Por algo tenemos una formación universitaria, de algo tiene que servir. Si no, estamos despercidiando todo lo que aprendimos a lo largo de estos años. Si no, no somos mas que dientes de un gran engranaje.</p>
<p>Cuestionemosle a los patrones todo. No dejemos que nos impongan nada, si total los empleos que nos ofrecen no tienen nada de especial, hay montones y montones. Basta de frameworks, bibliotecas, lenguajes comerciales, patrones de diseño, técnicas y metodologías. Somos más que eso, tenemos el conocimiento y debemos usufructarlo. No podemos seguir siendo funcionales al mercado del software. Mercado que, como tal, considera al software como producto y nos obliga, en su continuo interés de maximizar el beneficio, a utilizar tecnologia vieja y obsoleta que está varias decadas atrasada con respecto a nuestro actual potencial.</p>
<p>Yo por lo menos, me siento obligado a cuestionarme cada cosa que me quieran hacer creer. Considerando la crisis y todo, nuestra posición es más que cómoda para decidir por nosotros mismos. No desaprovechemos las posibilidades.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Concejos para Estudiantes de Ciencias de la Computación]]></title>
<link>http://planetdistopia.wordpress.com/2009/05/29/concejos-para-estudiantes-de-ciencias-de-la-computacion/</link>
<pubDate>Fri, 29 May 2009 03:54:47 +0000</pubDate>
<dc:creator>lahire314</dc:creator>
<guid>http://planetdistopia.wordpress.com/2009/05/29/concejos-para-estudiantes-de-ciencias-de-la-computacion/</guid>
<description><![CDATA[Ea ea ea!, muchos posts seguidos. Espero no quemarle el feed a nadie (si es que alguien come de mi f]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ea ea ea!, muchos posts seguidos. Espero no quemarle el feed a nadie (si es que alguien come de mi feed).</p>
<p>Dando vuelta por el Programa de Tutorías del Departamento de Computación de la UBA, me topé con una compañera que tenía un <a title="Blog" href="http://marielitag.blogspot.com/">blog</a> (que está en el blogroll de acá al costado).</p>
<p>Cómo soy una persona curiosa, decidí meterme (a la &#8220;Vi Luz y entré&#8221;). Y me topé con un interesante blog sobre &#8220;<em>noticias relacionadas a la computacion y a la tecnologia,que es a lo que me dedico.</em>&#8221; Yo me dedicaba, mientras no tenga laburo de nuevo no voy a poder decir lo mismo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Por lo que anduve leyendo, hay unos posts realmente interesantes, uno de los cuales transcribo acá (con la autorización de la autora del blog, además de que ahora utiliza CC! lo cual es bueno <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>Ok, les dejo el Artículo:</p>
<p>&#8220;&#8221;"&#8221;</p>
<h1 style="color:#ff6666;"><span style="font-size:100%;">Consejos para estudiantes de Ciencias de la Computación</span></h1>
<p><em>Por Joel Spolsky</em><br />
<strong>Artículo original:</strong> <a title="http://www.joelonsoftware.com/articles/CollegeAdvice.html" rel="nofollow" href="http://www.joelonsoftware.com/articles/CollegeAdvice.html">Advice for Computer Science College Students</a></p>
<p>Es un placer presentarles, entonces, los 7 Consejos Gratuitos de Joel para los estudiantes de Ciencias de la Computación (valen hasta el último centavo que pagaron por ellos):</p>
<ol>
<li> Aprende a escribir antes de graduarte</li>
<li> Aprende C antes de graduarte</li>
<li> Aprende microeconomía antes de graduarte</li>
<li> No descartes cursos no relacionados sólo porque son aburridos</li>
<li> Toma cursos que incluyan mucha programación</li>
<li> Deja de preocuparte porque todos los trabajos se están yendo a India</li>
<li> Sin importar lo que hagas, consíguete una buena pasantía de verano</li>
</ol>
<p>Ahora las explicaciones, a menos que seas lo suficientemente confiado como para hacer todo eso sólo porque yo lo digo; en cuyo caso agrego: 8.Busca ayuda profesional para ese problema de autoestima.</p>
<h3><span>Aprende a escribir antes de graduarte </span></h3>
<p><em>Nota de la traducción: En esta sección, el autor habla del idioma inglés, refiriéndose al lenguaje natural del estudiante, no al inglés como lengua extranjera. Preferí dejar &#8220;inglés&#8221; en lugar de traducirlo por &#8220;español&#8221; porque creo que para quienes no somos angloparlantes nativos lo dicho es válido tanto con respecto a nuestro propio idioma como respecto de aprender inglés como lenguaje internacional de la informática.</em></p>
<p>¿Habría triunfado Linux si Linus Torvalds no lo hubiese <a title="http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI" rel="nofollow" href="http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI">evangelizado</a>? Por mucho que sea un hacker brillante, fue su habilidad para transmitir sus ideas en inglés escrito a través de e-mail y listas de correo lo que atrajo hacia Linux a una brigada mundial de voluntarios.</p>
<p>Aún a pequeña escala, cuando ves cualquier organización dedicada a la programación, los programadores con mayor poder e influencia son aquellos que pueden hablar y escribir en inglés de forma clara, convincente y cómoda. También ayuda ser alto, pero no podemos hacer nada sobre eso.</p>
<p><span style="font-weight:bold;">La diferencia entre un programador promedio y un excelente programador no es la cantidad de lenguajes de programación saben, ni si </span><a title="http://www.paulgraham.com/gh.html" rel="nofollow" href="http://www.paulgraham.com/gh.html">prefieren Python o Java</a>. <span style="font-weight:bold;">Es su capacidad de comunicar ideas.</span> Es convenciendo a otras personas que ellos toman la ventaja. <span style="font-weight:bold;">Escribiendo comentarios claros y especificaciones técnicas le permiten a muchos otros programadores entender su código, lo que significa que otros programadores lo podrán utilizar y trabajar con él en lugar de </span><a title="http://www.joelonsoftware.com/articles/fog0000000069.html" rel="nofollow" href="http://www.joelonsoftware.com/articles/fog0000000069.html">reescribirlo</a>. Sin eso, su código es inútil. Al escribir documentación técnica clara para los usuarios finales, permiten a la gente entender qué es lo que se supone que hace su código, que es la única forma en la que el usuario puede apreciar el valor del código. Hay mucho código maravilloso y útil enterrado en Sourcefourge que nadie utiliza porque fue creado por programadores que no escriben muy bien (o no escriben en absoluto) de modo que nadie sabe qué hicieron y su brillante código agoniza.</p>
<h3><span>Aprende C antes de graduarte </span></h3>
<p>Parte dos: C. Nota que no dije C++. Aunque C se está volviendo cada vez más inusual, aún es la <em>lingua franca</em> de los programadores. Es el lenguaje que utilizan para comunicarse entre ellos y, lo que es más importante, es mucho más cercano a la máquina que los lenguajes &#8220;modernos&#8221; que aprenderás en la universidad como ML, Java, Python o la basura de moda que estén enseñando en el momento. Necesitarás al menos un semestre acercándote a la máquina o <a title="http://www.joelonsoftware.com/articles/fog0000000319.html" rel="nofollow" href="http://www.joelonsoftware.com/articles/fog0000000319.html">jamás serás capaz de escribir código eficiente en lenguajes de más alto nivel</a>. Nunca podrás trabajar en compiladores y sistemas operativos, que son de los mejores trabajos de programación que hay. Jamás se te confiará la creación de arquitecturas para proyectos a gran escala. No importa cuánto sepas acerca de continuaciones, clausuras o manejo de excepciones: si no puedes explicar por qué <strong>while (*s++ = *t++);</strong> copia una cadena, o si esa no es la cosa más natural en el mundo para ti, bueno, estás programando basándote en supersticiones según mi opinión: un médico clínico que no sabe anatomía, dando recetas basándose en lo que la chica linda de ventas del laboratorio farmacéutico dijo que servía.</p>
<h3><span>Aprende microeconomía antes de graduarte </span></h3>
<p>Repaso súper-rápido si no has tomado ningún curso de economía: la economía es uno de esos campos que arrancan con toda la fuerza, con muchas <a title="http://www.joelonsoftware.com/articles/StrategyLetterV.html" rel="nofollow" href="http://www.joelonsoftware.com/articles/StrategyLetterV.html">teorías y hechos útiles</a> que tienen sentido y pueden ser probados en la práctica, etc., y desde allí es  <a title="http://www.joelonsoftware.com/articles/CamelsandRubberDuckies.html" rel="nofollow" href="http://www.joelonsoftware.com/articles/CamelsandRubberDuckies.html">todo cuesta abajo</a>. Todo lo útil del comienzo es microeconomía, que es la base de literalmente todas las teorías de negocios que importan. Luego de que la cosa se comienza a deteriorar, nos estamos metiendo en macroeconomía (saltea esta parte si quieres) que son teorías interesantes acerca de cosas como la relación entre tasas de interés y el desempleo&#8230; que son desacreditadas más frecuentemente que lo contrario y luego se pone peor aún por lo que muchos estudiantes de economía se cambian a física, lo que les da mejores trabajos en Wall Street de todas formas. Pero asegúrate de cursar microeconomía porque debes saber acerca de la oferta y la demanda, debes saber sobre la ventaja competitiva, y tienes que entender el VAN y la utilidad marginal y descontada antes de que tengas una idea de por qué los negocios funcionan de la forma en que lo hacen.</p>
<p>¿Por qué debería un estudiante de ciencias de la computación estudiar economía? Porque un programador que entiende los fundamentos de los negocios será más valioso como programador a una empresa que aquél que no los entiende. Es tan simple como eso. No puedo contar la cantidad de veces que me frustré con programadores con ideas locas que tienen sentido en código pero no en el capitalismo. Si entiendes sobre estas cosas, eres un programador más valioso, y obtendrás tu recompensa por eso, por razones que también aprenderás en microeconomía.</p>
<h3><span>No descartes cursos no relacionados sólo porque son aburridos </span></h3>
<p>Dejar de lado los cursos no relacionados con las ciencias de la computación es una forma excelente de obtener un promedio más bajo.</p>
<p>Nunca subestimes la importancia del promedio. Demasiados gerentes de personal o de recursos humanos, yo incluido, van derecho a los promedios cuando miran un currículum, y no nos disculparemos por eso. ¿Por qué? Porque el promedio, más que cualquier otro número, refleja la suma de lo que docenas de profesores, sobre un largo período de tiempo en muchas situaciones diferentes, piensan de tu trabajo. ¿La puntuación del SAT (examen estandarizado de admisión a universidades en EEUU)? ¡Ja! Ese es sólo un examen de unas horas. El promedio refleja cientos de trabajos, finales y participaciones de clases durante los estudios. Si, tiene sus problemas. Ha habido inflación de calificaciones en los últimos años. Nada en el promedio dice que lo obtuviste tomando clases de economía hogareña en la Universidad del Fracaso o estudiando mecánica cuántica avanzada en Caltech. Eventualmente, luego de filtrar todos los promedios debajo de 2.5 de la Universidad del Fracaso, pediré transcripciones y recomendaciones. Y después buscaré calificaciones consistentemente altas, no sólo calificaciones altas en ciencias de la computación.</p>
<p>¿Por qué debería yo, como un empleador buscando desarrolladores, preocuparme por las calificaciones que obtuviste en Historia Europea? Después de todo, estudiar historia es <em>aburrido</em>. Ah, ¿entonces estás diciendo que debería contratarte porque no trabajas muy duro cuando el trabajo es aburrido? Bueno, hay cosas aburridas en la programación también. Todo trabajo tiene sus momentos aburridos. Y no me interesa contratar gente que sólo quiere hacer la parte divertida.</p>
<p>Yo tomé un curso llamado <em>Antropología cultural</em> porque pensé: ¿por qué no?, necesito aprender <em>algo</em> acerca de antropología y este aparentaba ser un curso de encuestas interesantes.</p>
<p>¿Interesante? ¡Ni cerca! Tuve que leer libros increíblmente monótonos sobre indios en la selva tropical brasileña y sobre los isleños de las Islas Trobriand. Al final decidí que <em>Antropología cultural</em> sería mi Desafío de Aburrimiento: mi propia carrera de obstáculos de tedio. Si podía obtener una A en una clase donde los exámenes me requerían aprender todo acerca de mantas ceremoniales, podría aguantar lo que fuese sin importar cuan aburrido. La siguiente vez que me quede accidentalmente atrapado en el Lincoln Center viendo las 18 horas completas del ciclo de Wagner agradeceré a mis estudios de los Kwakiutl por hacer que eso parezca placentero en comparación.</p>
<p>Obtuve una A. Y si yo pude hacerlo, tú también.</p>
<h3><span>Toma cursos que incluyan mucha programación </span></h3>
<p>Recuerdo el momento exacto en el que juré nunca volver a la universidad.</p>
<p>Fue en un curso de <a title="http://www.wisdom.weizmann.ac.il/~dharel/dynamic_logic.html" rel="nofollow" href="http://www.wisdom.weizmann.ac.il/%7Edharel/dynamic_logic.html">Lógica Dinámica</a>, enseñada por el dinámico Lenore Zuck en Yale, uno de los más brillantes de un grupo de muy brillantes profesores de Ciencias de la Computación.</p>
<p>Ahora, mi oxidada memoria no le hará el honor que se merece a este campo, pero trataré de explicar. La idea de la Lógica Formal es que demuestres que ciertas cosas son verdaderas porque otras cosas son verdaderas. Por ejemplo, gracias a la Lógica Formal &#8220;Todos los que tienen buenas calificaciones son contratados&#8221; más &#8220;Johnny obtuvo buenas calificaciones&#8221; te permite descubrir un nuevo hecho verdadero: &#8220;Johnny va a ser contratado&#8221;. Es todo muy pintoresco y sólo le tomaría diez segundos a un deconstruccionista destrozar todo lo útil en la Lógica Formal con lo que te queda algo divertido pero inútil.</p>
<p>Bueno, la lógica <em>dinámica</em> es lo mismo, pero con el agregado del tiempo. Por ejemplo, &#8220;<em>luego</em> de prender la luz, puedes ver tus zapatos&#8221; más &#8220;La luz fue encendida en el pasado&#8221; implica &#8220;puedes ver tus zapatos&#8221;.</p>
<p>La Lógica Dinámica es atractiva para los teóricos brillantes como el Profesor Zuck porque sostiene la esperanza de que podrías ser capaz de probar <em>formalmente</em> cosas acerca de programas de computadoras, lo que sería muy útil si, por ejemplo, pudieras probar formalmente que la tarjeta flash del Mars Rover no se reiniciará una y otra vez debido a un desbordamiento cuando se supone que debe estar dando vueltas por el planeta rojo buscando a Marvin el Marciano.</p>
<p>Sucede que el primer día de clases, el Dr. Zuck llenó dos pizarras completas y bastante de las paredes <em>a los costados</em> de las pizarras para probar que si tienes un interruptor de luz y la luz está apagada y uno activa el interruptor, la luz se encenderá.</p>
<p>La demostración era desquiciadamente complicada y muy inestable. Era más complicado demostrar que la <em>prueba</em> era correcta que convencerse a uno mismo del hecho que al activar un interruptor de luz se enciende la luz. Por cierto que las múltiples pizarras incluían pasos que habían sido omitidos porque eran demasiado tediosos de escribir formalmente. Muchos pasos se alcanzaban con el conocido método de Prueba por Inducción, otros por reducción al absurdo y otros utilizando la demostración por parte estudiantes graduados.</p>
<p>De tarea, debíamos probar la recíproca: <em>si</em> la luz estaba apagada <em>y</em> ahora está encendida, demostrar que alguien activó el interruptor.</p>
<p>Lo intenté, realmente lo intenté.</p>
<p>Pasé horas en la biblioteca intentando.</p>
<p>Luego de unas horas encontré un error en la prueba original del Dr. Zuck que estaba intentando emular. Probablemente había copiado algo mal, pero me hizo dar cuenta de algo: si toma tres horas llenar pizarras completas para probar algo trivial, permitiendo cientos de oportunidades de introducir errores, este mecanismo nunca sería capaz de demostrar cosas <em>interesantes</em>.</p>
<p>No es que eso les importe a los lógicos dinámicos: no están en eso por su <em>utilidad</em>, sino por el puesto.</p>
<p>Dejé la clase y juré jamás volver a ir a una escuela de Ciencias de la Computación.</p>
<p>La moraleja de la historia es que ciencias de la computación no es lo mismo que desarrollo de software. Si eres realmente afortunado, tu escuela puede llegar a tener una currícula decente en desarrollo de software, pero pueden no tenerlo porque las escuelas de elite piensan que enseñar habilidades prácticas es mejor para los institutos vocacionales/técnicos y los programas de rehabilitación de las prisiones. <em>Programación</em> se puede aprender en cualquier lado. Nosotros estamos en la Universidad de Yale y Formamos a los Futuros Líderes del Mundo. ¿Piensas que los 160.000 dólares de matrícula son para sobre los <em>bucles while</em>? ¿Qué crees que es esto, un <em>seminario</em> de Java al paso en el Airport Marriot? Si, claro.</p>
<p>El problema es que no tenemos realmente escuelas profesionales en desarrollo de software, por lo que si quieres ser un programador seguramente estudiaste Ciencias de la Computación. Lo que es un buen tema para estudiar, pero es un <em>tema distinto</em> al desarrollo de software.</p>
<p>Si tienes suerte, sin embargo, podrás encontrar muchos cursos de programación intensiva en el departamento de Ciencias de la Computación, como también podrás encontrar muchos cursos en el departamento de Historia en los que escribirás lo suficiente como para aprender a escribir. Y esas son las mejores clases que puedes tomar. Si te encanta programar, no te sientas mal por no entender el sentido de los cursos sobre cálculo lambda o álgebra lineal donde nunca tocas una computadora. Busca los cursos con Practicum en el nombre. Eso es un intento de esconder un curso útil (<em>escalofríos</em>) de la Conservadora Administración Liberal, escondiéndolo bajo un nombre en latín.</p>
<p><a name="Deja_de_preocuparte_porque_todos_los_trabajos_se_est.C3.A1n_yendo_a_India"></a></p>
<h3><span> Deja de preocuparte porque todos los trabajos se están yendo a India </span></h3>
<p>Bueno, primero que nada, si ya estás en India, nunca tuviste que preocuparte por esto, así que ni siquiera comiences a preocuparte porque todos los trabajos se van a India. Son trabajos excelentes, disfrútalos con salud.</p>
<p>Pero sigo escuchando que la matrícula en los departamentos de Ciencias de la Computación está decreciendo peligrosamente, y una de las razones que escucho para ello es que &#8220;los estudiantes tienen miedo de entrar en un campo donde todos los trabajos están yéndose para India&#8221;. Esto esta muy mal por muchas razones. Primero, tratar de elegir una carrera basándose en una moda actual de los negocios es estúpido. Segundo, saber programar es un entrenamiento increíblemente bueno para todo tipo de trabajos sumamente interesantes, como ingeniería de procesos de negocios, aún cuando cada trabajo de programación efectivamente se vaya a India o a China. Tercero, y créeme en esto, aún existe una escasez increíble de programadores realmente buenos, aquí y en India. Sí, hay un grupo de gente de TI sin trabajo haciendo un montón de ruido sobre cuánto hace que están sin empleo, pero ¿sabes qué? A riesgo de hacerlos enojar, los programadores realmente buenos sí tienen trabajo. Cuarto, ¿tienes una mejor idea? ¿Qué vas a hacer, graduarte en historia? Entonces no vas a tener otra opción que estudiar leyes. Y hay algo que sé: 99% de los abogados en actividad odian sus trabajos, cada minuto, y además trabajan 90 horas semanales. Como dije: si te gusta programar computadoras, siéntete dichoso: estás en la muy afortunada minoría de la gente que puede vivir haciendo lo que les gusta.</p>
<p>Igualmente, yo no creo que los estudiantes piensen sobre esto. La merma en la matrícula en computación es simplemente una vuelta a los niveles históricamente normales luego de la gran burbuja en la matrícula que provocó la manía de las punto com. Esa burbuja consistía de personas a las que en realidad no les gustaba la programación pero pensaban que los trabajos con sueldos altísimos y la oportunidad de llegar a una primera oferta pública de acciones a los 24 años estaban en el departamento de computación. Esa gente, afortunadamente, hace rato que se fue.</p>
<p><a name="Sin_importar_lo_que_hagas.2C_cons.C3.ADguete_una_buena_pasant.C3.ADa_de_verano"></a></p>
<h3><span>Sin importar lo que hagas, consíguete una buena pasantía de verano </span></h3>
<p>Los empleadores inteligentes saben que la gente que ama la programación escribió una base de datos para su dentista cuando estaba en 8º grado, enseñó en el campamento de computación durante tres veranos antes de la universidad, construyó el sistema de administración de contenidos para el periódico del campus y realizó pasantías de verano en compañías de software. Eso es lo que buscan en un currículum.</p>
<p>Si disfrutas programar, el mayor error que puedes cometer es tomar cualquier tipo de trabajo (de verano, part-time, o cualquier otro) que no sea de programador. Lo sé, todos los chicos de 19 años quieren trabajar en el shopping doblando camisas, pero tú tienes una habilidad que es increíblemente valiosa aun cuando tienes 19 años y es estúpido desperdiciarla doblando camisas. Para cuando te recibas, realmente deberías tener un currículum que liste un montón de trabajos de programación. Los graduados de Administración y Finanzas van a trabajar en empresas de alquiler de automóviles, &#8220;ayudando a la gente con sus necesidades de alquiler&#8221;. (Excepto por Tom Welling. El hace de Superman en TV).</p>
<p>Para hacer tu vida realmente sencilla, y para reforzar cuan completamente egoísta es este ensayo, mi compañía, Fog Creek Software, tiene <a title="http://www.fogcreek.com/Jobs/SummerIntern.html" rel="nofollow" href="http://www.fogcreek.com/Jobs/SummerIntern.html">pasantías de verano en desarrollo de software</a> que se ven geniales en un currículum. &#8220;Seguramente vas a aprender más sobre codificación, desarrollo y negocios de software en Fog Creek Software que en cualquier otra pasantía por ahí&#8221;, dice Ben, uno de los pasantes del verano pasado, y no sólo porque le envié un matón a su dormitorio para obligarlo a decirlo. La inscripción cierra el 1º de febrero. Apúrate.</p>
<p>Si sigues mis consejos, tú también puedes terminar vendiendo acciones en Microsoft muy pronto, rechazando trabajos en Google porque quieres tu propia oficina con una puerta y otras estúpidas decisiones, pero no va a ser mi culpa. Te dije que no me escucharas.<br />
Bueno me re gusto este articulo y lo considere digno para postearlo,para que volver si no se tiene nada interesante que decir?</p>
<p>fuente: <a href="http://local.joelonsoftware.com/mediawiki/index.php/Consejos_para_estudiantes_de_Ciencias_de_la_Computaci%C3%B3n">http://local.joelonsoftware.com/mediawiki/index.php/Consejos_para_estudiantes_de_Ciencias_de_la_Computaci%C3%B3n</a></p>
<p>&#8220;&#8221;"&#8221;</p>
<p>Realmente inspirador, no?</p>
<p>Personalmente, lo de &#8220;el trabajo se va a la India&#8221;, mucho no me preocupa, a menos que las universidades del país se muden por ahí&#8230;.</p>
<p>Por lo que puedo saber, por estos pagos argentinos siempre hubo una interesante bolsa de trabajo para todo lo relacionado a la Informática&#8230;. Como hay <em>poca gente</em> para cubrir <em>muchos puestos</em>, las empresas se <em>pelean</em> al estilo lucha en el barro para ver quien obtiene al empleado primero (esto puede estar un poco &#8220;enguasado&#8221;, por ahí la realidad no es tán así, pero por ahí le da un toque de comedia <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>La verdad, un artículo muy interesante.</p>
<p>Bueno, hora de hacer ejercicios de álgebra.</p>
<p>Nos vemos pronto, gente!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Lo bueno es que sabe de que habla]]></title>
<link>http://despistadolux.wordpress.com/2009/05/22/lo-bueno-es-que-sabe-de-que-habla/</link>
<pubDate>Sat, 23 May 2009 05:43:56 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/05/22/lo-bueno-es-que-sabe-de-que-habla/</guid>
<description><![CDATA[-entonces programaremos el sitio web usando a un tipo rapido usando  medias y una pelicula acerca de]]></description>
<content:encoded><![CDATA[-entonces programaremos el sitio web usando a un tipo rapido usando  medias y una pelicula acerca de]]></content:encoded>
</item>
<item>
<title><![CDATA[Conteo Final]]></title>
<link>http://rumboaliimas.wordpress.com/2009/05/22/conteo-final/</link>
<pubDate>Fri, 22 May 2009 05:41:58 +0000</pubDate>
<dc:creator>Omar</dc:creator>
<guid>http://rumboaliimas.wordpress.com/2009/05/22/conteo-final/</guid>
<description><![CDATA[Faltan 2 semanas para los examenes de ingreso a la maestria de Ciencias de la Computacion en el IIMA]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Faltan 2 semanas para los examenes de ingreso a la maestria de Ciencias de la Computacion en el IIMAS</p>
<p>En la pagina se ofrecen un par de descargas, una de las cuales es el examen guia, al resolverlo, he visto que hay un  par de ejercicios con la respuesta equivocada, alguien tiene alguna duda respecto a ellos?</p>
<p>Por cierto, si alguien ya presento el examen, espero que pueda dejar en los comentarios algun tip que pueda ser util para los que queremos entrar.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[BASE DE DATOS COLOR MALVA]]></title>
<link>http://despistadolux.wordpress.com/2009/05/21/base-de-datos-color-malva/</link>
<pubDate>Fri, 22 May 2009 05:28:25 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/05/21/base-de-datos-color-malva/</guid>
<description><![CDATA[jejejeje cretino, ya me extrañaba&#8230;]]></description>
<content:encoded><![CDATA[jejejeje cretino, ya me extrañaba&#8230;]]></content:encoded>
</item>
<item>
<title><![CDATA[Yahoo se ira al diablo???]]></title>
<link>http://despistadolux.wordpress.com/2009/04/30/yahoo-se-ira-al-diablo/</link>
<pubDate>Thu, 30 Apr 2009 10:11:13 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/04/30/yahoo-se-ira-al-diablo/</guid>
<description><![CDATA[La idea de que si Yahoo se irá al diablo quizás para muchas personas sea que no, pero yo creo que sí]]></description>
<content:encoded><![CDATA[La idea de que si Yahoo se irá al diablo quizás para muchas personas sea que no, pero yo creo que sí]]></content:encoded>
</item>
<item>
<title><![CDATA[Artes Marciales y Ciencias de la computacion ]]></title>
<link>http://despistadolux.wordpress.com/2009/04/30/artes-marciales-y-ciencias-de-la-computacion/</link>
<pubDate>Thu, 30 Apr 2009 09:21:21 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/04/30/artes-marciales-y-ciencias-de-la-computacion/</guid>
<description><![CDATA[Recordando las palabras, mejor dicho la pregunta que me planteo la Srta G. hace ya varios meses, la ]]></description>
<content:encoded><![CDATA[Recordando las palabras, mejor dicho la pregunta que me planteo la Srta G. hace ya varios meses, la ]]></content:encoded>
</item>
<item>
<title><![CDATA[La inteligencia artificial puede crear algo nuevo?]]></title>
<link>http://despistadolux.wordpress.com/2009/04/30/la-inteligencia-artificial-puede-crear-algo-nuevo/</link>
<pubDate>Thu, 30 Apr 2009 09:01:38 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/04/30/la-inteligencia-artificial-puede-crear-algo-nuevo/</guid>
<description><![CDATA[Hace varios días , quizás ya son meses, al calor de las copas, tuve una interesante discusión con un]]></description>
<content:encoded><![CDATA[Hace varios días , quizás ya son meses, al calor de las copas, tuve una interesante discusión con un]]></content:encoded>
</item>
<item>
<title><![CDATA[SAML]]></title>
<link>http://despistadolux.wordpress.com/2009/04/25/saml/</link>
<pubDate>Sat, 25 Apr 2009 08:46:45 +0000</pubDate>
<dc:creator>despistadolux</dc:creator>
<guid>http://despistadolux.wordpress.com/2009/04/25/saml/</guid>
<description><![CDATA[SAML (Security Assertion Markup Languaje) es una especificacion de seguridad entre aplicaciones, ori]]></description>
<content:encoded><![CDATA[SAML (Security Assertion Markup Languaje) es una especificacion de seguridad entre aplicaciones, ori]]></content:encoded>
</item>
<item>
<title><![CDATA[Sobre la crueldad de verdaderamente enseñar ciencias de la computación]]></title>
<link>http://mundogris.wordpress.com/2008/12/05/sobre-la-crueldad-de-verdaderamente-ensenar-ciencias-de-la-computacion/</link>
<pubDate>Sat, 06 Dec 2008 02:06:27 +0000</pubDate>
<dc:creator>elhombregris</dc:creator>
<guid>http://mundogris.wordpress.com/2008/12/05/sobre-la-crueldad-de-verdaderamente-ensenar-ciencias-de-la-computacion/</guid>
<description><![CDATA[Me tope con la noticia de que pasaron 20 años de la exposición de Dijkstra que acusa el nombre de es]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Me tope con la noticia de que pasaron 20 años de la exposición de Dijkstra que acusa el nombre de este post. Se puede leer la traducción al español en el siguiente link:</p>
<p><a href="http://www.smaldone.com.ar/documentos/ewd/sobre_la_crueldad.html">Sobre la crueldad de verdaderamente enseñar ciencias de la computación</a></p>
<p><a href="http://foros.3dgames.com.ar/programacion.97/497200.sobre-crueldad-verdaderamente-ensenar-ciencias-computacion-dijkstra.html">Lo postee en el foro de 3dgames</a> y el comentario de un coforero me dio pie para un pequeño rant que aqui transcribo.</p>
<blockquote><p><em>Mensaje original enviado por Dem0<br />
¿Qué tan parecida es la visión de Dijkstra con, digamos, la carrera de Ciencias de la Computación en Exactas?</em></p></blockquote>
<blockquote><p>¿a Cs de las Computación en Exactas? La pregunta que deberías hacerte es ¿qué tan acertado estaba Dijkstra con respecto a las Ingenierías y las Tecnicaturas? En mi opinión estaba muy en lo cierto, y cae de sentado ejemplificarlo con las tantas ingenierías y tecnicaturas que institutos de dudada reputación en nuestro país han dado en promover, jactandose de dejar de lado la parte &#8220;dura&#8221; de nuestra disciplina o especializandose en mercados de atractivo comercial sin realmente comprometerse a enseñar el oficio como corresponde (por ejemplo, la tecnicatura en &#8220;programador de videojuegos&#8221; que en todo caso debería ser un posgrado).</p>
<p>Es triste ver como hay todavía individuos que insisten en comprender al software como una manufactura, o prefieren rasgar la superficie de la disciplina enseñando los tecnicismos, en lugar de introducir al alumno en el paradigma que le permita trabajar desde adentro del mismo, como profesional más que como técnico. Con esto último me refiero por ejemplo a quienes enseñan OOP enseñando como usar las herramientas del paradigma mas que dominando los fundamentos.</p>
<p>En cuanto al resto del artículo de Dijkstra, hay puntos en que estoy en desacuerdo. Su propuesta no es del todo alegre. Me parece que se equivocaba con respecto a la terminología como lugar donde se gesta la falla en el proceso de enseñanza. Muchos de los términos no son usados metafóricamente sino alegoricamente, o tal vez fueron usados de esta manera en su momento pero quedaron culturalmente aceptados y se convirtieron en alegorías o cambiaron su significado habiendo quedado perdida el vinculo original que las mantenía como metáforas. Por ejemplo, &#8220;bug&#8221; para referirse a errores de programa, &#8220;comportamiento&#8221; para referirse a las consecuencias funcionales de un programa, &#8220;mantenimiento&#8221; para referirse a la asistencia de incidentes y ajustes funcionales menores post-deploy, etc&#8230;</p>
<p>Creo que se ha avanzado sobre lo que Dijkstra considero como la mitad faltante en la formación de científicos de la computación, por lo menos en los lugares donde se considera a nuestra disciplina como tal. Me refiero a que se avanzo en lo que es pertinente a la especificación funcional. Programar no es simplemente el acto de escribir programas de computación, es todo lo que conlleva realizar dicho programa, desde relevar la especificación funcional, implementarlo, hacerlo parte de una base de conocimiento y procesos, y mantenerlo funcional y actualizado a los procesos que se busca automatizar (en el sentido: de crear el automata capaz de llevar a cabo el proceso).</p>
<p>Pero me parece que Dijkstra dejo de lado un tercer aspecto de nuestra disciplina que es tan importante como el resto: un programa es también una pieza literaria, una pieza de comunicación. Un programa tiene por lo menos tres aspectos: es ejecutado por una computadora, responde a una intención, y tiene una o más formas de ser &#8220;leído&#8221;.</p></blockquote>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[INFORMÁTICA]]></title>
<link>http://jowicar.wordpress.com/2008/08/14/informatica/</link>
<pubDate>Thu, 14 Aug 2008 13:50:28 +0000</pubDate>
<dc:creator>jowicar</dc:creator>
<guid>http://jowicar.wordpress.com/2008/08/14/informatica/</guid>
<description><![CDATA[La informática es la disciplina que estudia el tratamiento automático de la información utilizando d]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>La <strong>informática</strong> es la disciplina que estudia el tratamiento automático  de la <a title="Información" href="/wiki/Informaci%C3%B3n">información</a> utilizando <a title="Aparato electrónico" href="/wiki/Aparato_electr%C3%B3nico">dispositivos electrónicos</a> y <a title="Sistema" href="/wiki/Sistema">sistemas</a> computacionales. También es  definida como el procesamiento de la información en forma automática. Para esto  los sistemas informáticos deben realizar las siguientes tres tareas básicas:</p>
<ul>
<li>Entrada: Captación de la información digital.</li>
<li>Proceso: Tratamiento de la información.</li>
<li>Salida: Transmisión de resultados binarios.</li>
</ul>
<p>El vocablo Informática es proveniente del <a title="Idioma francés" href="/wiki/Idioma_franc%C3%A9s">francés</a> <em>informatique</em>, acuñado por el  ingeniero <a title="Philippe Dreyfus" href="/wiki/Philippe_Dreyfus">Philippe  Dreyfus</a> en 1962, es <a title="Acrónimo" href="/wiki/Acr%C3%B3nimo">acrónimo</a> de las palabras <em>information</em> y  <em>automatique</em>. En lo que hoy conocemos como informática confluyen muchas de  las técnicas y de las máquinas que el hombre ha desarrollado a lo largo de la  historia para apoyar y potenciar sus capacidades de memoria, de pensamiento y de  comunicación.</p>
<p>La informática se aplica a numerosas y variadas áreas, como por ejemplo:  gestión de negocios, almacenamiento y consulta de información, monitorización y  control de procesos, robots industriales, comunicaciones, control de  transportes, investigación, desarrollo de juegos, diseño computarizado,  aplicaciones/herramientas multimedia, etc.</p>
<p>En la informática convergen los fundamentos de las <a title="Ciencias de la computación" href="/wiki/Ciencias_de_la_computaci%C3%B3n">ciencias de la computación</a>, la  <a title="Programación" href="/wiki/Programaci%C3%B3n">programación</a> y las  metodologías para el desarrollo de <a title="Software" href="/wiki/Software">software</a>, la <a title="Arquitectura de computadores" href="/wiki/Arquitectura_de_computadores">arquitectura de computadores</a>, las  <a class="mw-redirect" title="Redes de computadores" href="/wiki/Redes_de_computadores">redes de datos</a> como <a title="Internet" href="/wiki/Internet">Internet</a>, la <a title="Inteligencia artificial" href="/wiki/Inteligencia_artificial">inteligencia artificial</a>, así como  determinados temas de <a title="Electrónica" href="/wiki/Electr%C3%B3nica">electrónica</a>. Se puede entender por  <em>informática</em> a la unión <a class="external text" title="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=sinergia" rel="nofollow" href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=sinergia">sinérgica</a> de todo este conjunto de disciplinas.</p>
<p>El concepto de informática viene dado de la conjunción de dos palabras:  <strong>Infor</strong>mación y auto<strong>mática</strong>. En tanto que en inglés se habla de  conceptos tales como Computer Science, Electronic Data Processing, etc..<br />
Según la el Diccionario de la Real Academia Española <a title="RAE" href="/wiki/RAE">RAE</a> es el: &#8220;<em>Conjunto de conocimientos científicos y  técnicas que hacen posible el tratamiento automático de la información por medio  de ordenadores</em>&#8220;.<br />
Podemos entender el concepto de informática como aquella disciplina  encargada del estudio de métodos, procesos, técnicas, desarrollos y su  utilización en ordenadores (computadores) con el fin de almacenar, procesar y  transmitir información y datos en formato digital.</p>
<p>Entre las funciones principales de la informática se cuenta las  siguientes:</p>
<ul>
<li>Creación de nuevas especificaciones de trabajo.</li>
<li>Desarrollo e implementación de sistemas informáticos.</li>
<li>Sistematización de procesos.</li>
<li>Optimización de los métodos y sistemas informáticos existentes.</li>
</ul>
<p>La informática es aplicada en numerosos y diversos sectores de la actividad  humana. Sólo algunos de ellos son: medicina, biología, física, química,  meteorología, ingeniería, industria, investigación científica, comunicaciones,  arte, nivel empresarial (gestión), etc.</p>
<p>En los inicios del procesado de información, con la informática sólo se  facilitaba los trabajos repetitivos y monótonos del área administrativa, gracias  a la automatización de esos procesos, ello trajo como consecuencia directa una  disminución de los costes y un incremento en la producción.</p>
<p>Actualmente es difícil concebir un área que no use, de alguna forma, el apoyo  de la informática; en un enorme abanico que cubre desde las más simples  cuestiones hogareñas hasta los más complejos cálculos científicos.</p>
<p>Una de la utilidades más importantes de la informática es facilitar  información en forma <strong>oportuna y veraz</strong>, lo cual, por ejemplo, puede tanto  facilitar la toma de decisiones a nivel gerencial como permitir el control de  procesos críticos.</p>
<div class="thumb tright">
<div class="thumbinner" style="width:182px;"><a class="image" title="Konrad Zuse (1992)" href="Konrad_Zuse_(1992).jpg"><img class="thumbimage" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Konrad_Zuse_%281992%29.jpg/180px-Konrad_Zuse_%281992%29.jpg" border="0" alt="Konrad Zuse (1992)" width="180" height="240" /></a></p>
<div class="thumbcaption">
<div class="magnify"><a class="internal" title="Aumentar" href="Konrad_Zuse_(1992).jpg"><img src="/skins-1.5/common/images/magnify-clip.png" alt="" width="15" height="11" /></a></div>
<p><a title="Konrad Zuse" href="/wiki/Konrad_Zuse">Konrad Zuse</a> (1992)</div>
</div>
</div>
<table id="toc" class="toc" border="0" summary="Tabla de contenidos">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Tabla de contenidos</h2>
<p><span class="toctoggle">[<a id="togglelink" class="internal" href="toggleToc()">ocultar</a>]</span></div>
<ul>
<li class="toclevel-1"><a href="#Historia"><span class="tocnumber">1</span> <span class="toctext">Historia</span></a>
<ul>
<li class="toclevel-2"><a href="#Computador_Z3"><span class="tocnumber">1.1</span> <span class="toctext">Computador Z3</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="#V.C3.A9ase_tambi.C3.A9n"><span class="tocnumber">2</span> <span class="toctext">Véase también</span></a></li>
<li class="toclevel-1"><a href="#Enlaces_externos"><span class="tocnumber">3</span> <span class="toctext">Enlaces externos</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>//&#60;![CDATA[<br />
if (window.showTocToggle) { var tocShowText = "mostrar"; var tocHideText = "ocultar"; showTocToggle(); }<br />
//]]&#62;</p>
<p><a id="Historia" name="Historia"></a></p>
<h2><span class="mw-headline">Historia</span> <span class="editsection" style="font-weight:normal;font-size:small;margin-left:0;">[<a title="Historia" href="/w/index.php?title=Inform%C3%A1tica&#38;action=edit&#38;section=1">editar</a>]</span></h2>
<div class="noprint" style="margin:0 0 0.2ex 1em;"><em><span style="font-size:87%;">Artículo principal:</span> <a class="mw-redirect" title="Historia de la informática" href="/wiki/Historia_de_la_inform%C3%A1tica">Historia de la  informática</a></em></div>
<p><a id="Computador_Z3" name="Computador_Z3"></a></p>
<h3><span class="mw-headline">Computador Z3</span> <span class="editsection" style="font-weight:normal;font-size:small;margin-left:0;">[<a title="Computador Z3" href="/w/index.php?title=Inform%C3%A1tica&#38;action=edit&#38;section=2">editar</a>]</span></h3>
<p>El computador <a title="Z3" href="/wiki/Z3">Z3</a>, creado por <a title="Konrad Zuse" href="/wiki/Konrad_Zuse">Konrad Zuse</a>, fue la primera  máquina programable y completamente automática, características usadas para  definir a un computador. Estaba construido con 2200 relés (electroimanes),  pesaba 1000Kg, se demoraba haciendo una adición 0,7 segundos y una  multiplicación o división 3 segundos. tenía una frecuencia de reloj de ~5 <a class="mw-redirect" title="Hz" href="/wiki/Hz">Hz</a>, y una longitud de palabra de  22 <a title="Bit" href="/wiki/Bit">bits</a>. Los cálculos eran realizados con  aritmética en <a title="Coma flotante" href="/wiki/Coma_flotante">coma  flotante</a> puramente <a class="mw-redirect" title="Binario" href="/wiki/Binario">binaria</a>. La máquina fue completada en <a title="1941" href="/wiki/1941">1941</a> (el <a title="12 de mayo" href="/wiki/12_de_mayo">12  de mayo</a> de ese mismo año fue presentada a una audiencia de científicos en <a title="Berlin" href="/wiki/Berl%C3%ADn">Berlín</a>). El Z3 original fue destruido  en <a title="1944" href="/wiki/1944">1944</a> durante un bombardeo aliado a  Berlín. Una réplica completamente funcional fue construida durante los <a title="Años 1960" href="/wiki/A%C3%B1os_1960">años 60</a> por la compañía del  creador Zuse KG y está en exposición permanente en el <a title="Deutsches Museum" href="/wiki/Deutsches_Museum">Deutsches Museum</a>. En  <a title="1998" href="/wiki/1998">1998</a> se demostró que el Z3 es <a title="Turing completo" href="/wiki/Turing_completo">Turing completo</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[¿P=NP?]]></title>
<link>http://qubits.wordpress.com/2008/07/22/%c2%bfpnp/</link>
<pubDate>Tue, 22 Jul 2008 14:59:50 +0000</pubDate>
<dc:creator>miguelio</dc:creator>
<guid>http://qubits.wordpress.com/2008/07/22/%c2%bfpnp/</guid>
<description><![CDATA[Cómo la semana pasada terminé de dar mis exámenes finales de julio, tuve un poco más de tiempo para ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Cómo la semana pasada terminé de dar mis exámenes finales de julio, tuve un poco más de tiempo para dedicarme a los temas que me interesan. Hace rato que tenía ganas de empezar un curso de OpenCourseWare, el sitio de cursos del <a href="http://web.mit.edu/">MIT (Massachusetts Institute of Technology)</a>. El elegido fue <a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-045JSpring-2005/CourseHome/">&#8220;Computability, and Complexity&#8221;</a>.</p>
<p>El curso es bastante completo, incluye lecturas, ejercicios y clases de repaso. Al terminarlo, te encuentras preparado para encarar uno de los problemas matemáticos por los que el <em><a href="http://www.claymath.org/">Clay Mathematics Institute</a>. </em>ofrece 1.000.000 de dólares:el problema <a href="http://www.claymath.org/millennium/P_vs_NP/">P vs NP</a>.</p>
<p>Obviamente no persigo resolver el problema, pero la complejidad computacional es un campo de estudio que aún no está muy desarrollado y realmente me parece muy interesante.</p>
<p>Por último dejo, para los que quieran iniciarlo, el link de la mula para el libro en el cual se basa todo el curso: <a href="7497&#124;/">Sipser, Michael. <em>Introduction to the Theory of Computation</em><em>.</em> 2nd ed. Boston, MA: Course Technology, 2005. ISBN: 0534950973.</a></p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/VqeF98GGiXQ&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/VqeF98GGiXQ&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[RECURSIVIDAD]]></title>
<link>http://ammasache.wordpress.com/2008/04/05/recursividad/</link>
<pubDate>Sat, 05 Apr 2008 22:25:55 +0000</pubDate>
<dc:creator>ammasache</dc:creator>
<guid>http://ammasache.wordpress.com/2008/04/05/recursividad/</guid>
<description><![CDATA[FIBONACI //DECLARACION DE LIBRERIAS #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;d]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>FIBONACI</p>
<p>//DECLARACION DE LIBRERIAS<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
#include&#60;dos.h&#62;</p>
<p>//Declaracion de prototipos<br />
void  fun1(int n,int b,int c,int f);<br />
void  main()<br />
{<br />
 clrscr();<br />
 int a;<br />
 cout&#60;&#60;&#8221;   &#62; &#62;&#62;&#62;*INGRESE LA CANTIDAD DE  NUMEROS &#8230;. \n&#8221;;<br />
 cout&#60;&#60;&#8221;   &#62;&#62;&#62;&#62;* DE LA SERIE FIBONACI QUE DESEE  &#8230;. \t&#8221;;<br />
 cin&#62;&#62;a;<br />
 cout&#60;&#60;&#8221;\n\n\n&#8221;;<br />
 fun1(a,1,1,0);<br />
 getch();<br />
}</p>
<p> </p>
<p>//LLAMAR UNA FUNCION DENTRO DENTRO DE OTRA FUNCION<br />
void fun1(int n,int b,int c,int f)<br />
{</p>
<p> cout&#60;&#60;f&#60;&#60;&#8221;\n\n&#8221;;<br />
 if(n&#62;1)<br />
 {<br />
      fun1((n-1),c,f,(f+c));<br />
 }</p>
<p>}</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Graphical Query Builder for pgAdmin III]]></title>
<link>http://christianwong.wordpress.com/2008/03/30/graphical-query-builder-for-pgadmin-iii/</link>
<pubDate>Sun, 30 Mar 2008 21:25:21 +0000</pubDate>
<dc:creator>christianwong</dc:creator>
<guid>http://christianwong.wordpress.com/2008/03/30/graphical-query-builder-for-pgadmin-iii/</guid>
<description><![CDATA[Student Name: Christian J. Wong Cruz Current Location: Arequipa, PERU Location for Summer 2008: Areq]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="CASE tool for designing database models complemented by two restrictions languages" href="http://christianwong.wordpress.com/files/2008/03/experience.jpg"></a><strong><a title="First Prototype" href="http://christianwong.wordpress.com/files/2008/03/panes_diag.jpg"></a>Student Name:</strong> Christian J. Wong Cruz</p>
<p><strong>Current Location:</strong> Arequipa, PERU<br />
<strong>Location for Summer 2008:</strong> Arequipa, PERU</p>
<p><strong>Accounts:</strong><br />
.E-mail: cjd.wong &#60;@t&#62; gmail<br />
.IM: cjdwong<br />
.Skype: cjd.wong</p>
<p><strong>Phone number:</strong> +51 54 959810307</p>
<p><strong>Project Name:</strong> Graphical Query Builder for pgAdmin III<br />
<strong>Project Summary:</strong> I will develop a Graphical Query Builder for pgAdmin in order to build complex SQL queries from the database structure.</p>
<p><strong><em></em></strong></p>
<p><strong><em>Please explain in one </em></strong><a title="CASE tool for designing database models complemented by two restrictions languages" href="http://christianwong.wordpress.com/files/2008/03/experience.jpg"></a><strong><em>paragraph what you expect to accomplish with this project:<br />
</em></strong>PgAdmin is the most used interface to PostgreSQL database, and I expect to develop this Graphical Query Builder to bring pgAdmin with this new feature. I also expect to learn how the development of free-software occurs. And, with this project I could get started as a contributor for the PostgreSQL and pgAdmin projects.</p>
<p><strong><em>Have you already done any work on this project?</em></strong><br />
Yes, in my course work I have developed, as part of a team, a CASE tool for designing database models complemented by two restrictions languages: (i) Transactional Language and, (ii) Restrictions Language. It was developed in Java.</p>
<p align="center"><a title="CASE tool for designing database models complemented by two restrictions languages" href="http://christianwong.wordpress.com/files/2008/03/experience.jpg"><img src="http://christianwong.wordpress.com/files/2008/03/experience.thumbnail.jpg" alt="CASE tool for designing database models complemented by two restrictions languages" /></a></p>
<p><strong></strong></p>
<p><strong>Why do you feel that you are the correct person to work on this project?<br />
</strong>As mentioned above, I have experience developing a CASE tool, so I&#8217;m familiar with the developing of this kind of applications. I am also familiar with some GUI libraries (like: gtk, QT, Swing, Java AWT, MS Visual Studio 6 and .NET); for this project currently I&#8217;m reviewing wxWidgets, and it doesn&#8217;t seems to be very different.</p>
<p>I am a Freebsd and MS Windows user, and as a developer in MS Windows Environment I prefer the use of use multiplatform tools (gcc, vim, etc.), libraries (opencv, opengl, etc.) and GUI libraries (gtk, QT, etc.), so I think I match with pgAdmin Multiplatform idea.</p>
<p>I was an ICPC-ACM contestant in the South American Region in the last two years. My preferred programming languages are C, C++ and Java.</p>
<p>Another reason I feel I&#8217;m the correct person to work on this project is that I will be a full time developer for the Summer of Code, because I&#8217;m a last year undergraduated student and my studies goes until end of April, so I can participate in this program; and I would like to continue contributing in the pgAdmin project after the end of the program.</p>
<p><strong></strong></p>
<p><strong>Why would a PostgreSQL user, administrator or developer care about this project?<br />
</strong>The Graphical Query Builder is an idea listed in the PostgreSQL ideas page, and I think this project will be interesting for the facility on building SQL queries by a visual interface. It will be useful inside pgAdmin because the user will be able to build complex SQL queries in a shorter time. PostgreSQL administrators will be able to retrieve different information faster each time it is needed and developers will be able to build queries taking care on the information wanted without syntax or naming errors.</p>
<p><strong><em>Technical Specification:</em></strong></p>
<p>It is required a Graphical Query Builder for pgAdmin III, so the specifications for my project are:</p>
<ul>
<li>It can be integrated to the &#8220;pgAdmin III Query window&#8221;.</li>
<li>The tables and views could be dragged from the objects tree view (left side of the main window) to the &#8220;Drawing Area&#8221; in order to add them to the diagram, the Window also will have a button to add tables and views.</li>
<li>Some Query builders forces the user to redefine the relations between two objects; but this information is stored in the PostgreSQL Server and could be used in order to allow the user concentrate in the data to be retrieved.</li>
<li>Each table will be represented as a rectangle with its name at the top, and the attributes will be shown at the bottom of the rectangle.</li>
<li>The user will be able to select the attributes (or columns) to be retrieved, the alias to be used and if the attribute retrieved will be unique or not. The columns retrieved could also be aggregate functions about an attribute.</li>
<li>The user will be able to use subqueries. A subquery will be represented as a table with a diagram inside it and it will be edited in another pane.</li>
<li>When selecting restrictions (where clause), it will be possible to use nested restrictions and each restriction will be according to the attribute type. It will be possible with a tree organization of the restrictions, i.e.:<br />
ALL<br />
. user_age &#62; 18<br />
. OR<br />
. user_type = 2<br />
. user_type = 3<br />
. user_real_name is not null</li>
<li>The user will be able to group and sort the retrieved data.</li>
</ul>
<p>In conclusion there will be a pane for the &#8220;Drawing Area&#8221; (with tables, views and subqueries), a dialog &#8220;Table Properties&#8221; (table properties, columns list, constraints list, grouping and sorting criteria) and a dialog &#8220;Column Properties&#8221; (column alias, unique or distinct, aggregate function)</p>
<p><strong><em></em></strong></p>
<p><strong><em>Steps I will take to complete the project, milestones and approximate timeline.</em></strong></p>
<p>The steps I will take to complete this project will be:</p>
<ol>
<li>Get familiar with the specific pgAdmin internals I require for my work, and the integration of the empty Drawing Area inside the &#8220;pgAdmin III Query window&#8221;. Milestone:  I should present a report about pgAdmin internals and the first prototype before May 26 to my mentor.</li>
<li>Complete the Drawing Area with Tables, Views and Relations. Milestone: The second prototype with the Drawing area complete until end of June.</li>
<li>Complete the diagram with relationships. Milestone: The third prototype considering relationships until mid of July.</li>
<li>The Table Properties dialog by end of July.</li>
<li>The Column Properties dialog by mid of August.</li>
</ol>
<p>An example of the Table Properties dialog:</p>
<p align="center"><a title="Table Properties" href="http://christianwong.wordpress.com/files/2008/03/table-properties.jpg"><img src="http://christianwong.wordpress.com/files/2008/03/table-properties.thumbnail.jpg" alt="Table Properties" /></a><a title="First Prototype" href="http://christianwong.wordpress.com/files/2008/03/panes_diag.jpg"></a></p>
<p>I will try to implement things so that they can be used despite they are not completely finished, after the second prototype, the Query builder must be able to generate SQL Queries.</p>
<ul>
<li>
<div>The second prototype will output queries like: &#8220;SELECT * FROM tableA, tableB&#8221;.</div>
</li>
<li>
<div>The third prototype will output queries like: &#8220;SELECT * FROM tableA INNER JOIN tableB ON tableA.attrA1 = tableB.attrB1&#8243;.</div>
</li>
<li>
<div>The fourth prototype will output queries like &#8220;SELECT a.attrA1, a.attr A2, b.attrB2 FROM tableA as a INNER JOIN tableB as b ON a.attrA1 = b.attrB1&#8243;.</div>
</li>
<li>
<div>The fifth prototype will output queries like: &#8220;SELECT a.attrA1 AS aa1, a.attr A2 AS aa2, b.attrB2 AS bb2 FROM tableA as a INNER JOIN tableB as b ON a.attrA1 = b.attrB1 GROUP BY aa2 ORDER BY aa2, aa1&#8243;.</div>
</li>
</ul>
<p>An example of the Drawing Area here:</p>
<p align="center"><a title="Drawing Area" href="http://christianwong.wordpress.com/files/2008/03/panes_diag1.jpg"><img src="http://christianwong.wordpress.com/files/2008/03/panes_diag1.thumbnail.jpg" alt="Drawing Area" /></a></p>
<p><strong><em></em></strong></p>
<p><strong><em>What are the main risks which might prevent the completion of this project? If it does not get completed, will it be usable in an incomplete state?</em></strong></p>
<ol>
<li>
<div>The low knowledge of the pgAdmin source code. There is a &#8220;Community Bonding Period&#8221; for getting involved in this topic, so I think this will be a hard-working period. In order to demonstrate the understanding of pgAdmin internals, I will add a Drawing pane in the pgAdmin III Query window.</div>
</li>
<li>
<div>Relationships between tables I will need fully understanding of PostgreSQL tables and relationships internal management.</div>
</li>
<li>
<div>The attribute&#8217;s restriction declaration because PostgreSQL allows several different types of objects it could be difficult to implement a fully compatible interface. If this problem is not solved or delimited, this declaration of restrictions could be done manually by the user.</div>
</li>
<li>
<div>The drag and drop option for the tree objects list to the Drawing Area could not work properly. Another way for adding tables could be through a &#8220;Add Table&#8221; button. It would need another dialog which allows to select the table to be added. The same solution will apply to views.</div>
</li>
</ol>
<p><strong><em></em></strong></p>
<p><strong><em>Please list any references to your programming ability and the project&#8217;s feasibility, in the PostgreSQL Project, in other open source projects, or at school.<br />
</em></strong>I&#8217;m a coder: My main programming languages are C, C++ and Java, but I also program in Perl, PHP, and other scripting languages. I have fully understanding my the three main languages. I was an ICPC-ACM contestant in the South American Region in the last two years. When I&#8217;m developing an application, I usually program in sessions of 6 hours.</p>
<p>I&#8217;m a developer: As was mentioned above I have developed a CASE tool, also several parsers (a HTML-LATEX parser, a Math expressions Latex analyzer, a SQL parser, a Fuzzy SQL parser and a Jay analyzer (Jay is a subset of the C programming language). As part of my course work I have developed a mini Database server for indexing basic data types, including data structures and a SQL parser. I&#8217;m quite familiar with the PostgreSQL because of the Data Structures Course where I&#8217;ve added another data structure for indexing data.</p>
<p>I&#8217;m a researcher: I&#8217;m a beginner researcher, I&#8217;ve published three papers:<br />
. &#8220;Fuzzy Queries, A framework for parsing fuzzy queries for PostgreSQL&#8221; in the Peruvian Computer Week at Trujillo, PERU (November 2007).<br />
. &#8220;Hybrid model for the control of medicines for Parkinson patients&#8221; in the Computer Science Week at Trujillo, PERU (September 2007), and<br />
. &#8220;Texture-based faces codification&#8221; in the Computer Science Week at Trujillo, PERU (September, 2007).</p>
<p>I&#8217;ve also participated on a Project Contest at El Alto, BOLIVIA (November  2007) obtaining the second place my project was &#8220;Integrating MYPES to export by the Web&#8221;.</p>
<p>I&#8217;m a student: In my country the program is System Engineering but is oriented to Computer Science, I&#8217;m a last year undergraduated student and I&#8217;m placed second in the global ranking of my school for the last four years.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[pgAdmin Fuzzy SQL support (Gsoc idea)]]></title>
<link>http://christianwong.wordpress.com/2008/03/26/pgadmin-fuzzy-sql-support-gsoc-idea/</link>
<pubDate>Wed, 26 Mar 2008 14:17:02 +0000</pubDate>
<dc:creator>christianwong</dc:creator>
<guid>http://christianwong.wordpress.com/2008/03/26/pgadmin-fuzzy-sql-support-gsoc-idea/</guid>
<description><![CDATA[Application for Summer of Code 2008: Christian J. Wong Cruz Synopsis Fuzzy logic applied to SQL quer]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Application for Summer of Code 2008:</strong> Christian J. Wong Cruz</p>
<p><strong>Synopsis</strong></p>
<p>Fuzzy logic applied to SQL queries allows relax the relational model including some restrictions which are human language-like.</p>
<p>I will introduce some features to pgAdmin III in order to incorporate fuzzy logic into PostgreSQL queries. These includes a Fuzzy SQL parser, a Graphical Query Builder to specify the fuzzy queries without facing the Fuzzy SQL syntax and a Trapezoidal Distribution Manager which allow define some restrictions for querying some table attributes.</p>
<p><strong>Project</strong></p>
<p>I would divide this project into three tasks to complete, all with the same goal: Allow Fuzzy Queries over the stored data.</p>
<p>The major task I would like to contribute is the implementation of a Fuzzy SQL parser which will allow running fuzzy queries over PostgreSQL data attributes. The attributes are classified into four types: (i) crisp attributes: current implementation, (ii) allow crisp and fuzzy attributes over a sorted domain (ie. bigger), (iii) attributes defined over a discrete domain non ordered with a similarity relationship (ie. red-haired, blond), (iv) is the same as (iii) but without the similarity relationship. In this step I will implement Fuzzy attributes (iii).</p>
<p>The second task will be the Trapezoidal Distribution Manager which will relate the trapeze name, column name, table name, and the trapeze limits. The trapeze values will be stored in a table linking to PG_ATTRIBUTE (ATTRELID and ATTNUM). This task needs to be implemented as GUI in order to bring the abstraction on defining the rule. There are two ideas for implementing this task: (i) the user fill a form with the trapeze values &#8211; text form, (ii) the user will select the table and column for the trapeze and will define the trapeze limits in a graphic trapeze.</p>
<p>The last item is a Graphical Query Builder which will allow specify the fuzzy queries without facing the Fuzzy SQL syntax. It can complement the PostgreSQL idea about &#8216;A graphical query builder&#8217; but will not be only for SQL queries. The GUI will allow the following tasks: (i) select the attributes of the response, (ii) select the restrictions &#8211; logical and/or fuzzy. It&#8217;s also necessary to include groups, order, subqueries and other things. It must have the response query as part of the output.</p>
<p><strong>Profit for PostgreSQL</strong></p>
<ol>
<li>With Fuzzy Queries into PostgreSQL and the Graphical Query Builder pgAdmin will be a powerful database manager tool for non developers and for inexpert users.</li>
<li>With a Graphical Query Builder, it will be easy to develop complex queries for PostgreSQL users.</li>
</ol>
<p><strong>Success Criteria</strong></p>
<ul>
<li>Implement the tasks described above, the parser must be tested carefully.</li>
<li>The GUI must be user friendly and intuitive, a complex interface will discourage users to use this functionality</li>
</ul>
<p><strong>Project Schedule and Deliverables</strong></p>
<p>The Project Schedule will be as follows:</p>
<ul>
<li>Publish my goals to the PostgreSQL community and try to get some feedback and suggestions on my plans. Know my mentors, read documentation, get familiar with the specific pgAdmin internals that I require for my work. (until end of May)</li>
<li>Implement all tasks in the order they are specified above. Both, the first and the second task will be implemented between May 26 and June 16, the third task will be implemented between June 16 to July 7 week.</li>
<li>Test all features. This will begin as soon as one component is finished and should be completed by the mid of August.</li>
</ul>
<p>I will try to implement things so that they can be used despite they are not completely finished and I should present a report of pgAdmin internals before May 26, the parser for the first task, the Trapezoidal Distribution Manager for the second task and the Graphical Query Builder for the last task. All the deliverables should be integrated to pgAdmin.</p>
<p><strong>Biography</strong></p>
<p>I am a last year undergraduated student in Computer Science at San Agustín National University (Arequipa, Perú).</p>
<p>As part of my course work I have developed latex parsers, SQL parsers, fuzzy SQL parsers and a Jay parser (Jay is a subset of the C programming language), and currently I am developing a wiki-based parser for web sites content.</p>
<p>I have deeply studied fuzzy logic with SQL and developed a Fuzzy Queries library which runs on Java and is fully compatible with JDBC, then this framework was published in the proceedings of the Peruvian Computer (JPC) Week at Trujillo-PERÚ on November 2007. This is basically the idea of the parser. You can find all the JPC-papers in this link: <a title="http://eventos.spc.org.pe/jpc2007/aceptados.html" href="http://eventos.spc.org.pe/jpc2007/aceptados.html" target="_blank">http://eventos.spc.org.pe/jpc2007/aceptados.html</a></p>
<p>I&#8217;ve participated in two ICPC-ACM contest (2007-2008) representing my University and I am familiar with C/C++/Java and others programming languages, I am also familiar with PostgreSQL, and GTK and QT.</p>
<p>For all above reasons I think that I will succeed in providing the mentioned features for pgAdmin and PostgreSQL in general.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mediawiki research support (Gsoc idea)]]></title>
<link>http://christianwong.wordpress.com/2008/03/26/8/</link>
<pubDate>Wed, 26 Mar 2008 14:07:58 +0000</pubDate>
<dc:creator>christianwong</dc:creator>
<guid>http://christianwong.wordpress.com/2008/03/26/8/</guid>
<description><![CDATA[Application for Summer of Code 2008: Christian J. Wong Cruz Synopsis A wiki is software that allows ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Application for Summer of Code 2008:</strong> Christian J. Wong Cruz</p>
<p><strong>Synopsis</strong><br />
A wiki is software that allows users to collaboratively create, edit, link, and organize the content of a website, usually for reference material and it could also be used for generating new information.</p>
<p>With this project, I will introduce some features to make MediaWiki more research-friendly. These include Latex-2-Wiki and Bibtex-2-Wiki converters in order to import research papers and others latex documents into MW, but also improvements for exporting a Wiki-page into Latex files.</p>
<p><strong>Project</strong><br />
I would divide this project into three tasks to complete:</p>
<ul>
<li>Add properties into the Wiki pages and write a Bibtex-2-Wiki converter for adding bibtex information to the page.</li>
<li>Adapt the &#8230;Latex-2-Wiki&#8230; converter to this proposal.</li>
<li>Write a Wiki-2-Latex converter for exporting documents.</li>
</ul>
<p>The first task would complement some Wiki pages with their Bibtex information; this information will be implemented as &#8230;SemanticWiki&#8230; does with its properties (bibtex-properties in this case) and will be stored in a new table for the database. The Bibtex information could be added in the &#8221;Edit Page&#8221; or imported from a bibtex file. I will implement a Bibtex-2-Wiki parser and the necessary script for supporting bibtex-properties.</p>
<p>The second task will allow importing research papers from the latex source to MW. I will use the &#8230;current Latex-2-Wiki&#8230; converter to parse the source file.</p>
<p>Finally, the last task will be write a wiki-2-Latex parser in order to export a Wiki Page into a Latex document. This exported document could be a research paper, a thesis or any other latex document. With this new feature, MW users will be able to export latex documents with the correct use of the bibtex references (referenced Wiki Pages with bibtex information will be added in the bibliography). Another important think to consider in this task is the use of latex styles, the user could configure some options before export a Wiki Page in order to get a latex source compatible with the latex style preferred by the user.</p>
<p><strong>Profit for Wikimedia</strong></p>
<ul>
<li>Give to MediaWiki the capability of generate new information from the existing and stored information to MediaWiki users.</li>
<li>Support to researchers in the writing process, allowing them pay more attention in the content and leave the references management to MW. (Another reason for sharing information in MediaWiki!)</li>
<li>Wiki Pages could be exported to latex documents with fully support to latex styles.</li>
</ul>
<p><strong>Success Criteria</strong><br />
Create the tasks described above. The functionality has to work with the main latex documents&#8217; styles.</p>
<p><strong>Roadmap</strong></p>
<ol>
<li>Publish my goals to the MediaWiki Ideas Page and try to get some feedback and suggestions on my plans. Know my mentors, read documentation, get up to speed to begin working on my project. (until end of May)</li>
<li>Implement all tasks in the order they are specified above. I will try to implement things so that they can be used despite they are not completely finished. (until beginning July)</li>
<li>Test all features. This will begin as soon as one component is finished and should be completed by the mid of August.</li>
</ol>
<p><strong>Biography</strong><br />
I am a last year undergraduated student in Computer Science at San Agustín National University (Arequipa, Perú).</p>
<p>As part of my course work I have developed latex parsers, SQL parsers, fuzzy SQL parsers and a Jay parser (Jay is a subset of the C programming language), and currently I am developing a wiki-based parser for web sites content.</p>
<p>As a last year undergraduated student I am writing my thesis project, for that reason I am using a MediaWiki copy installed in my computer and I have realized that this project could be helpful in this process.</p>
<p>I&#8217;ve participated in two ICPC-ACM contest (2007-2008) representing my University and I am familiar with PHP programming language, also with WM source code and its database structure.</p>
<p>For all above reasons I think that I will succeed in providing the mentioned features for MediaWiki.</p>
<p><strong>External Links </strong></p>
<ul>
<li><a title="The Wikimedia Projects Ideas" href="http://www.mediawiki.org/w/index.php?title=Summer_of_Code_2008&#38;oldid=176428" target="_blank"> The Wikimedia Projects Ideas</a></li>
<li><a title="My User on MediaWiki's wiki" href="http://www.mediawiki.org/w/index.php?title=User:Cjd.wong&#38;oldid=176429">My User on MediaWiki&#8217;s wiki</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Gira Nacional 2007 (Arequipa-Lima-Trujillo)]]></title>
<link>http://christianwong.wordpress.com/2007/11/14/gira-nacional-2007-arequipa-lima-trujillo/</link>
<pubDate>Wed, 14 Nov 2007 15:25:56 +0000</pubDate>
<dc:creator>christianwong</dc:creator>
<guid>http://christianwong.wordpress.com/2007/11/14/gira-nacional-2007-arequipa-lima-trujillo/</guid>
<description><![CDATA[Holasss, en los proximos días voy a publicar en este blog mi viaje por todo Lima y Trujillo, mis exp]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Holasss, en los proximos días voy a publicar en este blog mi viaje por todo Lima y Trujillo, mis experiencias con los chicos del SECC, con Markus y Eduardo (de Google), con la familia que conocí en Lima por el cumpleaños de mi Tío José, la exposición del artículo en las JPC, el concurso de programación en Lima (ICPC-ACM) y el regreso a casa por mi cumpleaños….</p>
<p>comming soon</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
