Ciencias de la Computación (plan 2013) 2025-1
Primer Semestre, Introducción a Ciencias de la Computación
Grupo 7146, 43 lugares. 21 alumnos.
Inicio de clase: 5 de Agosto de 2024
Fin de clase: 22 de Noviembre de 2024
Objetivo General
“Computer science is no more about computers than astronomy is about telescopes. Science is not about tools. It is about how we use them. [Edjar Dijkstra]
En la actualidad, existe una percepción común de que el estudio de las ciencias de la computación se centra exclusivamente en la computadora como objeto principal. No obstante, aunque la computadora es una herramienta valiosa en este campo, no es esencial en todos los aspectos. Los científicos de la computación se enfocan en aplicar sus conocimientos para resolver problemas del mundo real en los cuales se puede usar la computadora como herramienta para ello.
Este curso tiene como objetivo principal introducir a los estudiantes en los conceptos teóricos y prácticos sobre el funcionamiento de las computadoras: qué hacen, cómo lo hacen y sus limitaciones. Además, se proporcionarán habilidades básicas de programación que servirán como cimientos fundamentales a lo largo de la carrera. Estas habilidades permitirán a los estudiantes utilizar la computadora como una herramienta poderosa en la resolución de problemas más complejos en cursos avanzados.
Prerequisitos
-
Manejo básico de la computadora e uso del internet
-
Y ... mucha perseverancia, entusiasmo y ganas de aprender.
Herramientas
Evaluación
-
Exámenes: 35%
-
Tareas: 30%
-
Laboratorio: 35%
-
Actividad Opcional: 10%
-
En la calificación final a partir de 0,5 se redondeará al entero superior próximo siempre y cuando sea una calificación aprobatoria [>= 6,0]. Por ejemplo, si el alumno obtiene un promedio de 7, 5 su calificación final será 8.0. En cambio, si es 5,9 se quedará en 5,0.
-
El NP solo se considerará si el alumno no ha realizado NINGUNA entrega, o por petición escrita del interesado siempre que haya obtenido un promedio mayor o igual que 7.
-
No hay reposiciones ni examen final.
-
Para la comunicación asíncrona entre alumnos y el grupo de profesores se utilizará Google Classroom.
-
La rúbrica de Actividad Opcional y constará de un artículo que argumente la veracidad/falsedad de una hipótesis planteada por medio de la experimentación. La planteación del experimento es parte fundamental del árticulo aunque no se evaluará con rigor científico. La hipótesis a argumentar es libre y de cualquier tema.
Reglas Entrega
-
Las prácticas y tareas se realizarán en forma individual a menos que se indique lo contrario. Y siempre serán publicadas dentro del sitio web del curso: https://classroom.google.com.
-
Las fechas de entrega son estrictas, por cada día de retraso se penalizará con un punto en la calificación, por lo cual, el máximo número de días de retraso permitido es cuatro. Después de ese límite ya no se aceptará el trabajo y se calificará con cero.
-
La hora límite de entrega para las prácticas es 23:59:59, considerando la zona horaria del Centro de México, del día de la entrega.
-
Está permitido e incluso se incentiva la creación de grupos estudiantiles para discutir los conceptos generales, resolver dudas y en general proveer ayuda entre los miembros del grupo. Sin embargo, la redacción debe ser autoría propia del equipo, por lo que cualquier copia detecta será INADMISIBLE, incluso con un solo ejercicio idéntico la entrega completa se calificará automáticamente con cero para TODAS las personas involucradas, sin derecho a réplica y sin escuchar razones por más válidas que sean.
-
Para la entrega de prácticas se hará a través de Google Classroom, en donde se agregará la liga del PR correspondiente a su código. En el PR aparte de los requerimientos de cada práctica, al inicio se debe agregar el nombre y número de cuenta de cada uno de los integrantes. Cuando sea el caso un SOLO miembro del equipo debe subirla.
Temario
-
Conceptos Generales de Computación
-
Breve historia de la computación
-
Breve descripción de los Lenguajes de Programación
-
Arquitectura de Von Neumann
-
Representación de la información
-
Notación posicional
-
Cambio de base
-
Representación de datos numéricos
-
Números con signo y signados
-
Conceptos generales de programación
-
Ambiente típico de programación
-
Palabras reservadas
-
Datos y rangos de tipos primitivos
-
Variables
-
Operadores
-
Comentarios
-
Estructuras de control
-
Sentencias o expresiones
-
Entrada y salida en consola
-
Bifurcaciones
-
Ciclos
-
Arreglos
-
Declaración y asignación de arreglos
-
Arreglos con múltiples subíndices
-
Programación Orientada a Objetos
-
Conceptos básicos
-
Variables de objeto
-
Variables de clase
-
Métodos
-
Funciones
-
Utilizando objetos: El robot Karel
-
Herencia
-
Interfaces
-
Concepto de herencia
-
Introducción al polimorfismo
-
Redefinición de métodos heredados
-
Clases y métodos abstractos
-
Manejo de Errores
-
Tipos de errores (ejecución, entrada y salida o del usuario)
-
Capturar una excepción
-
Crear nuevas excepciones
-
Definición de errores aprovechando la herencia
-
Listas simples
-
Definición de listas ligadas
-
Operaciones sobre listas
-
Creación de listas simplemente ligadas
-
Implementación de la interfaz Iterator e Iterable
-
Tipos genéricos
-
Definición y uso de genéricos
-
Implementación de listas simples utilizando genéricos
-
Entrada y salida estructurada
-
Lectura de archivos de texto
-
Escritura de archivos de texto
-
Archivos que no son de texto
-
Serialización
-
Administración de memoria durante ejecución
-
Conceptos de memoria
-
Proceso de creación de un objeto
-
Destrucción de objetos (garbaje colector)
-
Hilos de ejecución y multiproceso (threads)
-
Definiciones básicas
-
Ciclo de vida de un hilo
-
Creación de hilos
-
Exclusión mutua
Más información
Para más información de las reglas de entrega y bibliografīa consultar el Syllabus que se encuentra en la sección Trabajo de Clase -> Recursos del sitio de google classroom.