Amassando ideas

En la actualidad, existen much@s estudiantes interesado@s en dedicarse a la computación, ya sea como programadores, ingenier@s de software o investigadores. Lamentablemente, muchas de estas carreras en nuestro país requieren aprobar uno o varios cursos de química para poder egresar, cursos que no son relevantes para la labor de un informático. Por eso en este pequeño artículo listaré algunos programas de pregrado y algunos programas de formación técnica enfocados en programación, ciencias de la computación, ciencia de datos o ingeniería de software que no exigen química para titularse/licenciarse, aunque pueden exigir un puntaje mínimo en la PDT de Química.

Puedes buscar una institución en particular con Ctrl+F

Universidad de Santiago de Chile (usach)

Pontificia Universidad Católica de Chile (puc)

-Licenciatura en Ingeniería en Ciencia de la Computación

Universidad de Concepción (udec)

-Ingeniería Civil Informática

Universidad del Bío-Bío (ubb)

Universidad Técnica Federico Santa María (usm, utfsm)

Pontificia Universidad Católica de Valparaíso (pucv)

Universidad Andrés Bello (unab)

Universidad de Talca (utalca)

Las últimas dos carreras mencionadas no están tan enfocadas en la computación, pero tienen muchas asignaturas del área, por lo que las incluí de todos modos.

Universidad de Valparaíso (uv)

La carrera de Ingeniería Civil Informática de esta universidad tiene química en la malla, pero existe una Licenciatura en Física con mención en Computación Científica, que no tiene química. No está directamente enfocada en computación, al igual que las últimas dos carreras mencionadas de la Universidad de Talca, pero al igual que éstas, la incluí porque tiene muchos ramos de computación.

Universidad de la Frontera (ufro)

Universidad Adolfo Ibañez (uai)

Universidad de Tarapacá (uta)

Universidad Mayor (umayor)

La admisión a esta última carrera exige haber cursado por lo menos 5 semestrs o 1600 horas pedagógicas en una carrera profesional o técnica de nivel superior, según los requisitos de admisión de la Universidad Mayor.

Universidad Católica de Temuco (uct)

Universidad de Los Lagos (ulagos)

Universidad Arturo Prat (unap)

Universidad Bernardo O'Higgins (ubo)

Universidad Católica del Maule (ucm)

Universidad de las Américas

Universidad Santo Tomás (ust)

Universidad Tecnológica de Chile (inacap)

La Olimpiada Chilena de Informática (OCI) es una competencia anual para estudiantes escolares enfocada en la programación y algoritmos, con el objetivo de fomentar el desarrollo del pensamiento computacional en la juventud y seleccionar a los mejores candidatos para la Olimpiada Internacional de Informática (IOI). Ésta consiste en resolver una serie de problemas de programación competitiva en un tiempo limitado de tiempo, y una de las mejores formas de prepararse es resolviendo problemas de Olimpíadas pasadas. En GitHub se encuentran algunos problemas con los códigos de las soluciones oficiales, pero muchas no están explicadas, así que decidí realizar yo mismo guías para poder resolver estos problemas.

Las guías no pretenden hacer todo el trabajo que debe hacer el o la estudiante, porque creo que hay algunos detalles se deben trabajar por cuenta propia. Por ejemplo, no incluyo la implementación de las soluciones descritas, para que sea el lector o lectora quien haga el ejercicio de hacerlo, pues para obtener un buen resultado en la competencia también es necesario programar rápido y bien, habilidad que es consigue con la práctica.

A pesar de lo anterior, reconozco que es posible que las soluciones no estén muy bien explicadas y que haya algo que no se entienda correctamente. Si ese es tu caso, por favor contáctame detallando qué parte no entendiste, para que así yo pueda explicarte mejor además de corregir las guías.

Clasificatoria Regional (contraseña: R?55M=b_) Final Nacional (contraseña: v5<5oEYC) (en realidad no es la final porque después viene la competencia clasificatoria para la IOI, pero ese es el nombre que le pusieron)

Es común que al enviar un archivo en formato PDF tengamos problemas porque el archivo a enviar es muy pesado y el servidor de correo electrónico o formulario lo rechace. Una opción es ocupar una herramienta que disminuya el tamaño del archivo, pero muchas de las opciones disponibles en internet son SaaS o software privativo. LibreOffice Draw tampoco funciona bien, porque algunas imágenes o textos del archivo se corrompen al insertarlo en el programa. En este artículo te presento dos programas libres que puedes ocupar para reducir el tamaño de un PDF.

Notar que esta guía está pensada para usuari@s de Trisquel u otras distribuciones basadas en Ubuntu, así que no garantizo que vaya a funcionar en otro tipo de distribuciones.

Solución para la consola de comandos: GhostScript

GhostScript es un intérprete de PostScript, un lenguaje para describir páginas a imprimir, y de PDF, que es lo que nos interesa en este arítculo. Viene incluido en muchas distribuciones de GNU+Linux, así que probablemente no necesitaremos instalar nada.

Para usarlo, debemos dirigirnos a la carpeta donde está el archivo que queremos comprimir, click derecho y seleccionar la opción “Abrir en un terminal”. Una vez que la Terminal esté abierta, escribir:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/CALIDAD -sOutputFile=ARCHIVO-DE-SALIDA.pdf ARCHIVO-A-COMPRIMIR.pdf

Debemos reemplazar “CALIDAD” con alguna de las siguientes opciones, ordenadas por número de puntos por pulgada. Mientras más puntos, más calidad, pero también mayor será el tamaño del archivo resultante:

  • screen
  • ebook
  • printer
  • prepress

Creo que “ebook” es la mejor opción pues el archivo parece casi idéntico al original y al mismo tiempo reduce considerablemente el tamaño del archivo original.

También hay que reemplazar “ARCHIVO-DE-SALIDA” por el nombre que le queremos dar a nuestro archivo “comprimido” y “ARCHIVO-A-COMPRIMIR” por el nombre del archivo que queremos “comprimir” (pongo las palabras “comprimido” y “comprimir” entre comillas.

Cuando estemos en la carpeta donde está nuestro pdf, apretamos click derecho y luego “Abrir en un terminal”

En general este método funciona muy bien, pero con el uso básico que acabo de presentar no está garantizado que el nuevo archivo sea más pequeño que el original.

Solución Gráfica: Moonshiner

Si no te gusta mucho la consola, existe una aplicación gráfica escrita en Python llamada MoonShiner que está basada en GhostScript. Es decir, ocupa GhostScript por detrás para que tú no tengas que escribir muchos comandos en la terminal.

Lamentablemente, no viene incluido en las distribuciones de GNU+Linux basadas en Ubuntu, por lo que tendremos que instalarla manualmente.

Instalación

  1. Descargar el programa desde este enlace
  2. Abrir la carpeta en la que se encuentra el paquete
  3. Apretarlo con el click derecho y “Extraer Aquí”
  4. Entrar a la carpeta recién generada
  5. Click derecho y “Abrir en un terminal”
  6. Escribir:

sudo python install setup.py install

Click derecho sobre el fichero recién descargado y “Extraer aquí”

Uso

  • Menú –> Gráficos –> Moonshiner
  • O bien, escribir “Moonshiner” en la línea de comandos (terminal)

Verás que el programa está en inglés y tiene muchas opciones de configuración, pero no nos preocupemos, es más fácil de usar de lo que parece.

Debemos arrastrar el archivo a comprimir hacia la ventana de Moonshiner. Aparecerá un pequeño cuadro de texto donde colocaremos el nombre del archivo comprimido de salida. Después de eso recomiendo activar las opciones “Downsample color images…”, “Downsample grayscale images…” y “Downsample monochrome images…”, todas presentes en la pestaña “Images”.

Agradecimientos

Debo darle las gracias a la amabilidad y solidaridad de las personas que dedican su tiempo a ayudar a otras en los foros y al desarrollador de Moonshiner que nos hace más fácil la vida sin necesidad de que renunciemos a nuestra libertad 🙂

Webografía

¿Qué es el software libre?

El software libre es aquel que respeta la libertad de sus usuarios. Específicamente, les otorga cuatro libertades esenciales:

0) La libertad de ejecutar el programa para cualquier propósito 1) La libertad de estudiar el código fuente del programa y modificarlo. 2) La libertad de distribuir copias exactas del programa 3) La libertad de distribuir versiones modificadas del mismo

Un programa que no respeta alguna de las cuatro libertades no es libre y se considera privativo, ya que priva de la libertad a sus usuarios.

El software privativo es injusto

Para entender la injusticia del privativo es necesario entender que fundamentalmente un computador sigue instrucciones de un programa escrito por un desarrollador, generalmente una empresa. Por lo tanto, es el desarrollador el que determina qué hace tu computador.

Notar que no sólo las máquinas de escritorio y laptops son computadores, sino también los celulares, tablets, routers, televisores, relojes y autos inteligentes (smartwatches y smartcars, respectivamente).

Dado lo anterior, el software privativo no permite la modificación del programa, dejando a los usuarios sujetos a las decisiones impuestas por el desarrollador y perdiendo el control sobre lo que hace su computador. El privativo tampoco permite distribuir copias para ayudar al prójimo, por lo que promueve una práctica antisocial al prohibir compartir una herramienta útil. Así, los usarios quedan divididos e impotentes.

Por otra parte, el desarrolador introduce habitualmente anti-características en el programa, funcionalidades diseñadas e implementadas para perjudicar al usuario. Por ejemplo, tanto Microsoft Windows como Google Chrome y IOS espían a sus usuari@s, l@s censuran, l@s restringen y abusan de ell@s. Y como el software es privativo, nadie puede cambiarlo.

También existen otras injusticias en el mundo de la informática, tales como la obsolescencia programada y la vigilancia masiva. El software privativo juega un rol importante en su consolidación y perpetuación. Sin embargo, son temas para otro artículo.

FAQ

Si el programa es gratis no es necesario que lo comparta porque los otros pueden simplemente descargarlo

El usuario sigue siendo dependiente injustamente de los medios de distribución del desarrollador, por lo que no se puede distribuir el programa por otros medios. Además, si el desarrollador deja de distribuirlo, nadie podrá conseguirlo, al menos no legalmente.

No voy a modificar el código, ¿para qué querría que el software fuese libre?

La queja anterior quiere decir que el usuario no necesita las libertades del software libre porque no puede o no quiere ejercerlas. La práctica ha demostrado que esto es falso. Si un usuario no sabe programar, puede acudir a otros para que modifiquen el programa por él. Ésto es posible de varias maneras: contratando a un programador para que realize los cambios, participando en la comunidad del software, o utilizando versiones modificadas de programas ya existentes.

Por ejemplo, muchos programas libres populares son versiones modificadas de otros. Por ejemplo, LibreOffice está basdo en OpenOffice, MATE en GNOME, OpenArena en Quake3, IceCat en Firefox, Ubuntu en Debian, etc.

En conclusión, todos los usuarios gozan de las libertades del software libre, sin importar sus conocimientos en computación o su tiempo disponible.

El desarrollador tiene la libertad de elegir qué licencia usar para su programa

No hay que confundir la libertad con el poder. La libertad consiste en el control sobre las decisiones que afectan principalmente a un@ mism@, mientras que el poder consiste en el control sobre las decisiones que afectan principalmente a otras personas. Cuando el desarrollador escoge una licencia de software privativo, no está ejerciendo su libertad, sino que está ejerciendo un poder injusto sobre los usuarios de ese software.

La ley le otorga al autor el derecho de escoger la licencia para su obra

Primero, recordemos que en la mayoría de los casos, son las compañías de software quienes son las titulares de los “derechos”.

En segundo lugar, que la práctica descrita esté avalada por la ley no significa que sea correcta. Hace algunas décadas era ilegal que un negro se sentara junto a un blanco en un autobús en varios estados de los Estados Unidos, pero dicha ley era injusta. Recordemos también que hasta hace algunos años, el divorcio era ilegal en nuestro país, práctica que, en caso de que ambas partes involucradas estén de acuerdo, no supone ningún problema.

El software libre acaba con la competencia

Completamente falso. Como no hay un monopolio sobre el desarrollo del software, cualquier empresa puede aprovechar el software, aumentando la competencia.

El software libre es comunismo porque acaba con la propiedad privada

En el mundo del software libre, la propiedad privada sí existe. El desarrollador de un programa no está obligado a distribuirlo. Del mismo modo, si un usuario modifica su copia de un programa libre no tiene por qué compartirlo con nadie. Las libertades en las que se basa el software libre no son obligaciones.

El software libre es inseguro ya que cualquiera puede hallar una vulnerabilidad y explotarla

Lo anterior asume que la mayoría de los programadores que estudian el código fuente de un programa buscan explotar las fallas de seguridad que tenga un programa, lo que es falso.

Con el software libre, cualquiera puede auditar el código fuente para encontrar un error y reportarlo para ser corregido.

Por otra parte, hay que considerar que el software privativo no ofrece protección alguna contra el desarrollador. Además, si se encuentra una vulenaribilidad, se dependerá del éste para arreglarla, por lo que los sistemas sin soporte oficial quedarán expuestos por siempre.

A lo anterior hay que agregar que la NSA explota e incluso crea vulnerabilidades en sistemas privativos tales como Microsoft Windows.

No es necesario que X videojuego sea libre porque tiene soporte de mods para modificar el juego.

El soporte de mods y sus detalles depende del desarrollador, por lo que el usuario no puede escribir un mod como él quiere, sino como el desarrolador quiere. Además, en caso de existir un bug con el motor, o spyware, el usuario se encuentra totalmente impotente para solucionarlo.

El software libre atenta contra los derechos de autor

El software libre sí se adscribe al sistema de los “derechos” de autor. Un programa libre viene con una licencia de software libre que garantiza las cuatro libertades esenciales.

El software libre acaba con la innovación

La innovación consiste en basarse en lo ya existente para crear algo nuevo. El software libre permite modificar un programa ya existente para desarrollar otro, mientras que en el privativo es necesario empezar desde cero para desarrollar una versión mejorada de un programa, lo que requiere recursos que podrían ser invertidos en innovar con el software libre. Por lo tanto, es el software privativo el que está en contra de la innovación, no el software libre.

Si no se les paga a los desarrolladores, no se desarrollarán más programas

En el mundo del software libre, a los desarrolladores sí se les paga. Existen varias empresas dispuestas a pagar por mejorar su tecnología informátca para mejorar sus procesos de negocio. Una lista no exhaustiva de este tipo de empresas se encuentra aquí.

Sumado a lo anterior, muchos proyectos de software libre se financian vía Crowdsourcing.

La situación actual no va a cambiar porque yo me cambie al software libre

Es una visión corto-placista porque no considera la migración al software libre como parte de un proceso de largo plazo. ¿Acaso alguien puede volverse un profesional estudiando un sólo día? ¡Claro que no! Es necesario ser constante, y, al tratarse de un movimiento social, también es necesario realizar esfuerzos de manera colectiva. Afortunadamente, el movimiento del software libre lleva más de 30 años y tiene miles de seguidores en todo el mundo, lo que permitió el desarrollo de un sistema operativo libre completamente funcional: GNU+Linux

En Chile, existe una modalidad de estudio poco conocida llamada “exámenes libres”, destinada principalmente a quienes no pueden terminar sus estudios como alumn@s regulares en un establecimiento educacional. El proceso consiste en inscribirse en una oficina del Ministerio de Educación donde se le asigna al alumno un colegio o liceo que se encarga de diseñar y aplicar las evaluaciones de los contenidos correspondientes al curso que el alumno desea aprobar.

Por otra parte, el DEMRE publica en mayo de cada año un documento titulado “Normas y aspectos Importantes del Proceso de Admisión” en el que se detallan las distintas partes del proceso. En la página 25 de dicho documento podemos leer la sección de las distinciones, sección cuyo primer párrafo indica “Se excluyen los alumnos de exámenes libres, reconocimiento de estudios y de promociones anteriores para efectos del cómputo de los Puntajes Nacionales, aun cuando obtengan el puntaje máximo.”

Lo anterior constituye una discriminación hacia l@s alumn@s libres, ya que l@s excluye de ciertos beneficios que sólo reciben los puntajes nacionales, tales como las becas Puntaje Nacional. Además, l@s hace menos visibles frente a una sociedad conservadora que confunde la educación con escolarización y salud con hospitales y farmacias, y que cree que un colegio o liceo es imprescindible para una buena educación.

Ahora, ¿por qué existe esta restricción?

Consultando los documentos de los años anteriores, nos damos cuenta que en todos estaba presente la oración citada anteriormente. El documento más antiguo es del 2011, por lo que la exclusión en cuestión existe desde hace más de ocho años. Dado lo anterior, podemos pensar que ninguno de los rectores actuales conoce el motivo.

Para resolver este problema, hablaré con algunos rectores para que incluyan a los alumnos de exámenes libres en el cómputo de los Puntajes Nacionales.