Nuestros cursos:

Nuestros cursos:

Introducción para el estudiante

Algoritmos y estructuras de datos son términos habituales en las asignaturas de introducción a la algoritmia en la Universidad. Sin embargo, en el título de esta guía de ejercicios hemos añadido un tercer elemento: los procesos de pensamiento.

En la actualidad, con el auge de la inteligencia artificial (IA), la atención se ha centrado cada vez más en imaginar un futuro impulsado por esta tecnología. Esperamos mucho de la IA y muy poco de nuestra propia inteligencia. Una de las razones es que los procesos de pensamiento son invisibles y difíciles de percibir mientras ocurren.

El propósito de esta guía no es simplemente ofrecer un conjunto de ejercicios de programación, sino poner el foco en hacer visibles esos procesos cognitivos. Al hacerlo, buscamos que no solo resuelvas problemas de programación, sino que también desarrolles habilidades de razonamiento crítico.

Para tal finalidad, utilizaremos una herramienta fundamental: la escritura explicativa, a veces referida como escritura epistémica. Se trata de una forma de escribir, que puede iniciarse como un proceso simple, como un comentario para uno mismo o un mensaje de WhatsApp, y que, a medida que se desarrolla, nos ayuda a generar nuevas ideas mientras escribimos.

En la era de la IA, la capacidad de análisis y reflexión es más importante que nunca y se fortalece con la observación crítica de casos. Si bien la IA puede generar código rápidamente, el verdadero desafío no es solo programar, sino también comprender el código escrito, explicar su funcionamiento y mejorar su diseño en un proceso continuo de aprendizaje y desarrollo del pensamiento.

Un estudiante que se encuentra cursando el primer año en una ingeniería o licenciatura en informática, es probable que tenga alguna asignatura dedicada a la introducción a los algoritmos y estructuras de datos. Es posible que la asignatura se estructure en dos partes, o bien, que sean dos asignaturas cuatrimestrales: una dedicada a la programación en pseudocódigo y otra que se ocupe de la implementación en un lenguaje de programación específico (como C, Python u otros) de los algoritmos que se aprendieron durante el primer cuatrimestre.

Es posible que se encuentren cursando la segunda parte de esa asignatura, o que su universidad no utilice este enfoque en dos etapas y que estén trabajando simultáneamente con pseudocódigo y su traducción a un lenguaje de programación concreto. El problema de trabajar con este método es que los estudiantes dedican su energía y memoria a dos aprendizajes complejos, lo que puede dificultar que alcancen uno de los objetivos, o incluso ambos.

El primer objetivo al que nos referimos es comprender la estructura abstracta de las soluciones programadas, y el segundo, comprender un lenguaje de programación específico. Aprender un segundo lenguaje de programación es más sencillo cuando se tienen conocimientos previos de estructuras algorítmicas. Sin este conocimiento, el proceso puede ser incluso más difícil que aprender el primer lenguaje.

Algo similar ocurre con el aprendizaje de una segunda lengua. Por ejemplo, para los latinoamericanos, aprender inglés implica conocer conceptos de gramática que generalmente se adquieren al aprender la lengua nativa (el español). Sin entender qué es una conjugación verbal o una estructura sintáctica, el aprendizaje del inglés se vuelve más complejo.

La actividad de programar implica ofrecer una solución algorítmica a un problema planteado en el mundo real. Con cada solución planteada, no solo se modifica el mundo porque una parte de él se automatiza, sino que también se modifican las propias estructuras de razonamiento del programador, lo que da lugar a un crecimiento y progreso en sus conocimientos.

El trabajo sobre esas representaciones mentales para pasar de ser un novato a un experto es el resultado más importante que ofrece esta asignatura.

Representaciones mentales

Diversos estudios en psicología cognitiva y ciencia de la computación han demostrado que los programadores expertos poseen estructuras mentales altamente organizadas que facilitan la resolución de problemas computacionales. Estas estructuras, comúnmente denominadas esquemas mentales, permiten identificar patrones, seleccionar estrategias adecuadas y abstraer soluciones reutilizables.

En cambio, los programadores ingresantes al área se encuentran en una etapa de construcción progresiva de dichas representaciones cognitivas, las cuales se van consolidando a través de la práctica y la retroalimentación de un profesor o tutor.

¿Cómo se van construyendo esos esquemas?

En los procesos iniciales de aprendizaje, la memoria integra representaciones duales: visuales y verbales. Pero lo visual y lo verbal no refiere a visualizaciones de imágenes externas (como gráficos o diagramas de flujo), o de verbalizaciones externas (como instrucciones en un lenguaje de programación) sino a imágenes y conceptos internos: modelos representacionales abstractos que los aprendices construyen al internalizar un proceso computacional.

La mera exposición a estos elementos externos no garantiza la construcción de las representaciones internas; debe mediar una actividad de elaboración. Por ejemplo, el acto de explicar oralmente o por escrito una imagen o un texto puede facilitar la construcción de la representación interna.

La verbalización del razonamiento algorítmico —ya sea escrita u oral— cumple un rol central en la consolidación de esquemas mentales. Explicar paso a paso la lógica de un código permite al aprendiz identificar relaciones causales, detectar inconsistencias y reforzar el concepto.

A medida que se incrementa la experiencia, los esquemas mentales adquiridos permiten abordar problemas similares con mayor fluidez y eficiencia.

Esta habilidad resulta especialmente crítica en entornos mediados por inteligencia artificial. Contrariamente a ciertos discursos emergentes, el avance de los sistemas de IA no elimina la necesidad de comprender los principios fundamentales de la programación. Una interacción efectiva con herramientas basadas en IA exige la capacidad de formular instrucciones precisas, evaluar la validez de las soluciones propuestas y realizar ajustes sobre las respuestas automatizadas, lo que requiere una comprensión conceptual sólida del funcionamiento algorítmico.

Finalmente, para comprender plenamente los principios operativos del software, es imprescindible abordar los fundamentos del hardware que le dan soporte lógico.

A continuación, se presentan los principios básicos de hardware que fundamentan la lógica (software) de los programas.



Deja un comentario