Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Informatica
Área: Area de Formacion Inicial en Informatica
(Programa del año 2022)
I - Oferta Académica
Materia Carrera Plan Año Periodo
INTRODUCCION A LA COMPUTACION LIC.CS.COMP. 18/11 2022 2° cuatrimestre
INTRODUCCION A LA COMPUTACION LIC.CS.COMP. 32/12 2022 2° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
DORZAN, MARIA GISELA Prof. Responsable P.Adj Exc 40 Hs
TRUGLIO, MATIAS IVAN Responsable de Práctico JTP Semi 20 Hs
CUELLO, CAROLINA YAMILE Auxiliar de Práctico A.1ra Simp 10 Hs
GARCIARENA UCELAY, MARIA JOSE Auxiliar de Práctico A.1ra Semi 20 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
0 Hs. 2 Hs. 4 Hs. 1 Hs. 7 Hs. 2º Cuatrimestre 08/08/2022 18/11/2022 15 105
IV - Fundamentación
Por ser la primera asignatura disciplinar en la carrera se plantean varios desafíos, entre ellos, enseñar una metodología para la resolución de problemas e introducir un lenguaje formal simple para escribir los programas focalizando la enseñanza de los conceptos algorítmicos.
Se trabaja a partir de diferentes situaciones problemáticas de la vida real y se emplean las estrategias de solución para finalmente llegar a una implementación acorde a las especificaciones planteadas.
Los contenidos abordados en la asignatura permitirán al estudiante familiarizarse con los conceptos básicos de la disciplina. Además, se fomenta un ambiente de trabajo que despierte el espíritu emprendedor de los estudiantes evitando que se sientan abrumados o desanimados en este primer encuentro con la programación.

V - Objetivos / Resultados de Aprendizaje
El objetivo general que se persigue es que los estudiantes puedan resolver problemas básicos a través de la construcción de programas basados en algoritmos, es decir, definir un conjunto de pasos lógicamente ordenados, precisos y no ambiguos, escritos a través de símbolos o en lenguaje natural siguiendo una metodología de trabajo adecuada.
Si bien el conjunto de símbolos, instrucciones y estructuras presentes en un algoritmo son fáciles de identificar y aprender en relación a su significado, la dificultad se presenta al intentar combinar lógicamente estas instrucciones y estructuras para que resuelvan un problema planteado.

En este sentido, se plantean los siguientes objetivos específicos:
- Desarrollar una adecuada metodología de trabajo para la resolución de problemas introduciendo estrategias para resolverlos.
- Interpretar claramente los objetivos del problema y poder resolverlo, es decir, identificar las posibles restricciones o condiciones que deben ser consideradas en la resolución del problema.
- Desarrollar la capacidad de diseñar un algoritmo que modele la resolución del problema seleccionando las estructuras de control y de datos adecuadas, de implementar el algoritmo en un lenguaje de diseño y de elegir un conjunto adecuado y representativo de valores de los datos de entrada para realizar una correcta prueba del algoritmo realizado.
- Introducir la notación lógica formal con el fin de expresar ideas o razonamientos de forma clara y precisa, fomentando la rigurosidad y la formalidad.
- Introducir conceptos formales de especificación y verificación de algoritmos, describiendo la transformación de los datos del entorno a través de pre y postcondiciones.
- Desarrollar competencias generales, como por ejemplo: trabajo en equipo, comunicación en forma oral y escrita, aprendizaje autónomo, entre otras.
- Promover el uso de buenos hábitos de programación incentivando, desde el principio de la carrera, el ejercicio de la documentación, los comentarios y la indentación de los programas desarrollados facilitando la legibilidad de los mismos y su mantenimiento.
VI - Contenidos
Para cada unidad se dejan disponibles en el aula virtual videos donde se desarrollan los contenidos de la unidad, las diapositivas de clase, el apunte teórico y su correspondiente trabajo práctico.
Para una mejor organización, tanto de los estudiantes como del equipo docente, se presenta un cronograma con la descripción de las actividades que se van a realizar cada día de clase.

UNIDAD 1: LÓGICA PROPOSICIONAL
El lenguaje de las proposiciones: Alfabeto y sintaxis de las fórmulas bien formadas. Construcción de enunciados. Conjunto de significados. Clasificación de fórmulas bien formadas. Equivalencia lógica.

UNIDAD 2: RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS
Comprensión de problemas en general. Método de 4 etapas de Polya basado en preguntas. Representación de problemas: abstracciones. Resolución de problemas y computadoras. Formalización del concepto de procesador, ambiente, acción, acción primitiva, algoritmo y programa.
Metodología a desarrollar para la resolución de un problema por medio de algoritmos: formulación del problema, diseño de algoritmos, codificación y ejecución. Desagregación del problema. Metodología de refinamiento por pasos sucesivos.

UNIDAD 3: LENGUAJE DE DISEÑO DE ALGORITMOS - TIPOS DE DATOS, OPERACIONES Y EXPRESIONES - INTERACCIÓN: ENTRADA Y SALIDA DE DATOS
Ambiente de un algoritmo. Datos de entrada y salida. Transformación del ambiente. Objetos del ambiente: constantes y variables. Tipos de datos primitivos. Expresiones. Operadores aritméticos, lógicos y relacionales. Precedencia y orden de evaluación. Funciones primitivas. Operación de asignación. Estructura general de un programa. Definición de variables. Operaciones de entrada y salida de datos. Cuestiones de estilo: indentación, elección de nombres adecuados de variables, comentarios.

UNIDAD 4: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE CONTROL
Estructura de control secuencial: Concepto. Estructura de control condicional: Simple y Múltiple. Elección entre dos alternativas. Elección entre varias alternativas.
Estructuras de control repetitiva: Conceptos. Estructuras con número de iteraciones predeterminado y no predeterminado. Pautas para seleccionar la estructura repetitiva más adecuada. Ciclos infinitos. Anidamiento de estructuras de control.
Ejecución de un programa a través de tablas de ejecución. Utilización de diagramas de flujo para visualizar los posibles flujos de ejecución de un algoritmo.

UNIDAD 5: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE DATOS
Definición de estructura de datos. Tipo de datos estructurados versus tipos de datos simples. Arreglos lineales. Índice y componentes. Operaciones sobre arreglos lineales: asignación, recuperación y recorrido.

UNIDAD 6: LENGUAJE DE DISEÑO DE ALGORITMOS - SUBALGORITMOS
Definición de subalgoritmos. Ambiente de un subalgoritmo. Funciones y procedimientos. Parámetros actuales y formales. Tipo de pasaje de parámetros. Invocación de subalgoritmos.

UNIDAD 7: INTRODUCCIÓN A LA ESPECIFICACIÓN Y VERIFICACIÓN FORMAL DE ALGORITMOS
Conceptos fundamentales de Cálculo de Predicados. Especificación y Verificación de algoritmos: pre/post condiciones, reglas generales y algunas reglas particulares.

VII - Plan de Trabajos Prácticos
Metodología:
Los trabajos prácticos correspondientes a las unidades temáticas del programa consisten en problemas que deben ser resueltos por parte de los estudiantes guiados de los docentes.
Las actividades solicitadas en la asignatura son pensadas con la finalidad de ir marcando “instantáneas en el tiempo”, tanto en el proceso de aprendizaje, como en el de enseñanza para que le brinden información al estudiante y al docente acerca de la situación particular antes de llegar a las instancias evaluativas.

En general se proponen problemas que desafíen a los estudiantes y motiven el pensamiento. La idea es que los estudiantes resuelvan los ejercicios y utilicen el horario de práctica para realizar consultas surgidas sobre los mismos.
Al comenzar cada trabajo práctico los estudiantes deben resolver una actividad teórica compuesta de ítems de múltiple opción y preguntas de respuestas simples relacionadas con la teoría correspondiente a dicho trabajo práctico. Se pretende que el estudiante comience cada trabajo práctico habiendo participado de la clase teórica y/o habiendo visualizado el video de la clase y leído los apuntes teóricos. Además, con este tipo de actividad, se busca que el estudiante empiece a expresarse de manera escrita, a socializar y reflexionar sobre sus respuestas y a comprender cuáles fueron los conceptos no comprendidos marcados en la corrección informada.

Con el objetivo de realizar una evaluación formativa, en cada trabajo práctico se solicita la entrega opcional de ciertos ejercicios y se pretende que el estudiante pueda medir su nivel de apropiación del conocimiento. Para cada ejercicio solicitado se realiza una corrección informada del docente hacia cada estudiante.
Cada ejercicio solicitado tiene su resolución disponible en el aula virtual para que comiencen a practicar la autocorrección y puedan ver otras formas de resolución. Además de las correcciones individuales, se comparte con todos los estudiantes un resumen de los errores comunes cometidos en los ejercicios solicitados y su explicación correspondiente.
Para realizar un seguimiento en el nivel de apropiación de los conocimientos de los estudiantes, se requiere la participación activa de ellos en las clases.

A partir del trabajo práctico 3 se puede utilizar la herramienta PsFlex la cual fue pensada y diseñada por el equipo de cátedra y desarrollada por Gabriel Cavecedo, Analista Programador Universitario y estudiante avanzado de la Licenciatura que formó parte de la cátedra. Dicha herramienta sirve para asistir al estudiante en sus primeros pasos en programación y realizar ejercicios directamente en la computadora o corroborar que los ejercicios realizados en el papel son correctos. Se diseñó utilizando el Lenguaje de Diseño de Algoritmo, el cual posee una sintaxis simple e intuitiva permite centrar la atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas.

Para integrar los conceptos adquiridos durante la cursada de la asignatura, se solicita el diseño y desarrollo de un proyecto final integrador que resuelva un enunciado más complejo que los trabajados en los prácticos. Este proyecto debe realizarse en grupo para poder compartir experiencias.

Se brindan consultas con el objetivo de resolver dudas que surjan con los ejercicios prácticos y de manera que se promueva el trabajo con los compañeros y que haya un acercamiento entre los estudiantes y los docentes.

TRABAJO PRÁCTICO 1: LÓGICA PROPOSICIONAL
Objetivos generales: Introducir la notación lógica formal con el fin de expresar ideas o razonamientos de forma clara y precisa, fomentando la rigurosidad y formalidad.
Objetivos específicos: Identificar el alfabeto y la sintaxis de las fórmulas bien formadas. Poder construir fórmulas bien formadas a partir de enunciados expresados en lenguaje coloquial. Determinar el valor de verdad de fórmulas bien formadas utilizando las tablas de verdad, es decir, el conjunto de significados de las fórmulas bien formadas. Determinar la equivalencia lógica de fórmulas bien formadas utilizando las tablas de verdad.

TRABAJO PRÁCTICO 2: RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS
Objetivos generales: Interpretar claramente los objetivos del problema y poder resolverlo, es decir, identificar las posibles restricciones o condiciones que deben ser consideradas en la resolución del problema. Aplicar una adecuada metodología de trabajo para la resolución de los problemas introduciendo diferentes estrategias para resolver problemas.
Objetivos específicos: Crear modelos y abstracciones de problemas de la vida cotidiana. Dado un problema identificar los datos de entrada y los datos de salida como así también las restricciones del mismo. Descomponer problemas complejos en tareas más sencillas con el objeto de resolver el problema original. Diseñar algoritmos que resuelvan problemas utilizando un conjunto finito de instrucciones y la posterior ejecución de dichas instrucciones. Con la idea de motivarlos, fomentar la curiosidad y su capacidad de indagación, los estudiantes realizan ejercicios los cuales pueden ser probados en el sitio web de PilasBloques (http://pilasbloques.program.ar/online/#/desafios) la cual es una herramienta desarrollada por Program.AR.

TRABAJO PRÁCTICO 3: LENGUAJE DE DISEÑO DE ALGORITMOS – TIPOS DE DATOS, OPERACIONES Y EXPRESIONES - INTERACCIÓN: ENTRADA Y SALIDA DE DATOS
Objetivos generales: Escribir expresiones del lenguaje de diseño, analizando sintaxis y significado. Traducir enunciados en lenguaje natural a expresiones aritméticas, lógicas y relacionales. Comprender la interacción con usuario.
Objetivos específicos: Describir el ambiente de un algoritmo: variables de entrada, salida y auxiliares. Identificar los objetos variables y constantes de un problema. Declaración de variables en el algoritmo.
Identificar los tipos de datos primitivos que provee el lenguaje de diseño y las operaciones definidas para cada tipo de dato.
Construir expresiones en lenguaje de diseño. Evaluar diferentes tipos de expresiones. Identificar el mecanismo de trabajo del operador de asignación. Asignaciones válidas e inválidas. Desarrollar algoritmos que involucran la definición de variables y la lectura y escritura de datos. Ejecución de algoritmos utilizando tablas de ejecución.

TRABAJO PRÁCTICO 4: LENGUAJE DE DISEÑO DE ALGORITMOS – ESTRUCTURAS DE CONTROL CONDICIONAL
Objetivos generales: Comprender el funcionamiento de la estructura de control condicional simple y múltiple, introduciendo la importancia de realizar pruebas para comprobar el funcionamiento de un algoritmo.
Objetivos específicos: Desarrollar algoritmos que involucran el uso de las estructuras de control condicional: simple y múltiple. Identificar cuándo es adecuado la utilización de cada estructura. Ejecutar algoritmos con diferentes estructuras de control condicional, haciendo hincapié en la selección de un adecuado conjunto de casos de prueba. Realización de diagramas de flujo para visualizar los diferentes caminos de ejecución de un algoritmo.

TRABAJO PRÁCTICO 5: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE CONTROL REPETITIVO
Objetivos generales: Comprender el funcionamiento de estructuras de control repetitivo.
Objetivos específicos: Comprender el mecanismo de trabajo de una estructura de control repetitivo. Identificar los casos especiales en cada estructura. Identificar cuándo es adecuado la utilización de cada estructura. Ejecutar algoritmos con diferentes estructuras de control repetitivo. Desarrollar algoritmos que involucran el uso de tres estructuras de control repetitivo. Realización de diagramas de flujo para visualizar los diferentes caminos de ejecución de un algoritmo.

TRABAJO PRÁCTICO 6: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE DATOS
Objetivos generales: Comprender y aplicar los conceptos relacionados con la estructura de datos.
Objetivos específicos: Identificar la necesidad de utilizar uno o más arreglos lineales para resolver un problema. Declarar un arreglo en lenguaje de diseño. Identificar los límites de un arreglo lineal. Conocer las operaciones válidas sobre las componentes de un arreglo: asignación de un valor y consulta del valor de un elemento del arreglo.

TRABAJO PRÁCTICO 7: LENGUAJE DE DISEÑO DE ALGORITMOS - SUBALGORITMOS
Objetivos generales: Comprender y aplicar los conceptos relacionados con la modularización de procesos.
Objetivos específicos: Definir subalgoritmos. Identificar el ambiente de un subalgoritmo. Identificar los tipos de parámetros y el pasaje de parámetros. Definir funciones y procedimientos. Identificar cuando es adecuado el uso de cada tipo de subalgoritmo. Invocar subalgoritmos.

TRABAJO PRÁCTICO 8: LÓGICA DE PREDICADOS - INTRODUCCIÓN A LA ESPECIFICACIÓN Y VERIFICACIÓN FORMAL DE ALGORITMOS
Objetivos generales: Comprender y aplicar los conceptos relacionados con la Lógica de Predicados. Comprender y aplicar los conceptos relacionados con la especificación y verificación formal de algoritmos.
Objetivos específicos: Identificar las limitaciones de la Lógica Proposicional. Identificar el alfabeto, términos y predicados de la lógica de predicados. Utilizar cuantificadores. Construir especificaciones formales de algoritmos utilizando pre/post condiciones. Leer especificaciones formales de algoritmos para saber qué realiza dicho algoritmo. Aplicar reglas de verificación formal generales y específicas.

TRABAJO PRÁCTICO 9:
Realizar un proyecto final integrador utilizando PsFlex el cual se realiza en grupo. Se va desarrollando a través de los trabajos prácticos realizando la entrega de ejercicios grupales correspondientes a subtareas del proyecto final integrador. La entrega final consta de una exposición oral donde muestran a sus compañeros y al equipo docente el algoritmo desarrollado y se socializa lo diseñado por todos los grupos.
Además deben presentar un informe escrito donde se deben describir las estructuras de datos utilizadas para almacenar los datos, explicar el análisis y diseño de las diferentes tareas, mostrar un ejemplo de ejecución del algoritmo, describir la experiencia obtenida del trabajo en equipo, entre otras tareas.
Se pretende que el estudiante utilice, tanto en la exposición oral como en el informe escrito, un vocabulario acorde a los contenidos vistos en la asignatura.

VIII - Regimen de Aprobación
1-Acerca de las condiciones de regularización de la asignatura.
Para regularizar la asignatura el estudiante debe cumplimentar los siguientes ítems:
a) Asistencia: concurrir al menos al 80% de las actividades previstas.
b) Actividades teóricas: entregar al menos el 80% de las actividades solicitadas en tiempo y forma.
c) Aprobar el Proyecto Final Integrador (grupal):
- asistir a todas las exposiciones, a las entregas parciales y a la consulta obligatoria.
- aprobar el algoritmo final y el informe escrito.

d) Evaluaciones teórico/prácticas: aprobar las dos evaluaciones o alguna de sus respectivas recuperaciones con nota menor que 7 pero superior o igual a 6.

2- Acerca de la aprobación de la asignatura.
Existen dos formas de aprobación de la asignatura:
a) Por Promoción, para lo cual se exige la regularización de la asignatura aprobando las dos evaluaciones o alguna de sus
respectivas recuperaciones con nota 7 o superior,
La calificación final provendrá del promedio de las calificaciones obtenidas en: las evaluaciones y/o recuperaciones aprobadas (parte práctica y parte teórica), las entregas de actividades teóricas, y el proyecto final integrador.
Cabe aclarar que la parte teórica de la evaluación se rinde sólo si el estudiante tiene intenciones de promocionar, por lo que sería el coloquio integrador que se solicita para promocionar.
b) Por Regularización más examen final.

3- Acerca del examen final.
En dicho examen se evalúan conceptos teóricos en los cuales se basa la práctica regularizada. Podrá ser oral o escrito y se rinde en turnos de exámenes establecidos en el Calendario Académico.

4- Acerca del examen libre.
Esta asignatura no se puede rendir libre debido a la evaluación continua que se realiza a lo largo de todo el cuatrimestre.
IX - Bibliografía Básica
[1] M. J. Abásolo, F. Guerrero y J. Perales López. "Introducción a la Programación", Colección materiales didácticos, Universidad de las Islas Baleares, 2011.
[2] C. Pons, R, Rosenfeld, C. Smith. “Lógica para informática”, 1a ed. La Plata: Universidad Nacional de La Plata, 2017.
[3] E. P. Arís, J. L. Sánchez González y F. M. Rubio. "Lógica Computacional", Thomson Editores, España, 2003.
[4] G. Polya. "Cómo plantear y resolver problemas", Editorial Trillas, México, 1970.
[5] S. Braustein y A. Gioia. "Introducción a la Programación y a las Estructuras de Datos", Eudeba, Argentina, 1986.
[6] J. J. Garcia Molina, J. Fernandez Aleman, M. J. Majado Rosales y J. Montoya Dato Francisco. "Una Introducción a la Programación - Un Enfoque Algorítmico", Editorial: PARANINFO, 2005.
[7] F. Pinales Delgado y C. Velázquez Amador. "Problemario de algoritmos resueltos con diagramas de flujo y pseudocódigo". Universidad Autónoma de Aguascalientes. ISBN: 978-607-8285-96-9
[8] PsFlex (http://psflex.forjota.com.ar/)
[9] Material de estudio diseñado por el equipo docente.
X - Bibliografia Complementaria
[1] "Introducción a la Informática". Universidad Nacional de Santiago del Estero Facultad de Ciencias Exactas y
[2] Tecnologías. 2011
[3] G. Sarria y Mario Mora, "Introducción a la Programación". 2012
[4] D. Gil, "Guía teórica. Informática Básica". 2007
[5] L. Joyanes Aguilar. “Fundamentos de Programación. Algoritmos, estructura de datos y objetos”, Mcgraw-HILL/Interamericana de España, 4ta edición, 2008
XI - Resumen de Objetivos
- Desarrollar una adecuada metodología de trabajo para la resolución de los problemas introduciendo estrategias para resolver problemas.
- Desarrollar la capacidad de diseñar un algoritmo que modele la resolución del problema, de implementar el algoritmo en un lenguaje de programación y de elegir un conjunto adecuado y representativo de valores de los datos de entrada para realizar una correcta prueba del algoritmo realizado.
- Introducir la notación lógica formal con el fin de expresar ideas o razonamientos de forma clara y precisa, fomentando la rigurosidad y formalidad.
- Introducir conceptos formales de especificación y verificación de algoritmos, describiendo la transformación de los datos del entorno a través de pre y postcondiciones.
XII - Resumen del Programa
UNIDAD 1: LÓGICA PROPOSICIONAL
UNIDAD 2: RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS
UNIDAD 3: LENGUAJE DE DISEÑO DE ALGORITMOS - TIPOS DE DATOS, OPERACIONES Y EXPRESIONES - INTERACCIÓN: ENTRADA Y SALIDA DE DATOS
UNIDAD 4: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE CONTROL
UNIDAD 5: LENGUAJE DE DISEÑO DE ALGORITMOS - ESTRUCTURAS DE DATOS
UNIDAD 6: LENGUAJE DE DISEÑO DE ALGORITMOS - SUBALGORITMOS
UNIDAD 7: INTRODUCCIÓN A LA ESPECIFICACIÓN Y VERIFICACIÓN FORMAL DE ALGORITMOS
XIII - Imprevistos
En caso de ser necesario, se recortarán los contenidos que no sean prioritarios y se seleccionarán aquellos más importantes considerando los objetivos planteados.

El presente programa puede presentar ajustes dada la situación epidemiológica. Toda modificación será acordada y comunicada con el estudiantado e informada a Secretaría Académica.

Las vías de comunicación con los estudiantes son las siguientes:
- Correo electrónico de la asignatura: intro.comp.unsl@gmail.com
- Correos electrónicos de los docentes: gise.dorzan@gmail, matias.truglio@gmail.com, mjgarciarenaucelay@gmail.com
- Oficina: 30 – 1° piso – 2° Bloque
- Teléfono: +54 (266) 4520300 - Int 2130
- Aula Virtual: https://evirtual.unsl.edu.ar/course/view.php?id=140 donde se pueden descargar las teorías,
trabajos prácticos, avisos importantes, apuntes, cronograma, hacer consultas o comentarios, etc.
- Grupo de WhatsApp donde el equipo docente realiza avisos importantes.
XIV - Otros