Encabezado Facultad de Ciencias
Presentación

Ciencias de la Computación (plan 2013) 2021-2

Primer Semestre, Introducción a Ciencias de la Computación

Grupo 7019, 60 lugares. 12 alumnos.
Profesor Canek Peláez Valdés ma ju 16 a 17:30
Ayudante Alma Rosa Páes Alcalá lu mi 15 a 16
Ayudante Karla Socorro García Alcántara lu mi 15 a 16
Ayud. Lab. Diego Carrillo Verduzco ma ju 17:30 a 19:30
Ayud. Lab. Edgar Quiróz Castañeda ma ju 17:30 a 19:30
 

Repositorio del curso

Introducción a Ciencias de la Computación, grupo 7019, semestre 2021-2.


Temario

  1. Introducción al curso
    1. Breve historia de las Ciencias de la Computación
    2. Evolución de los lenguajes de programación
    3. Lenguaje de máquina y ejecución de programas
  2. Representación de datos en la computadora
    1. Bases numéricas
    2. Complemento a 2
    3. Punto flotante
  3. Introducción a orientación a objetos con Java
    1. Objetos
    2. Comportamiento y propiedades
    3. Clases, métodos y variables de clase
    4. Encapsulamiento de datos
  4. Estructuras de control y listas
    1. Listas
    2. Estructuras de control
    3. Algoritmos iterativos
  5. Recursión
    1. La pila de ejecución
    2. Algoritmos recursivos
    3. Torres de Hanoi
  6. Herencia
    1. Clases y métodos abstractos
    2. Interfaces
    3. Comportamiento heredado
  7. Entrada y Salida, excepciones
    1. Entrada
    2. Salida
    3. Excepciones
  8. Enumeraciones
    1. Constantes y números mágicos
    2. Enumeraciones enteras
    3. Enumeraciones en otros lenguajes de programación
    4. Enumeraciones en Java
  9. Genéricos
    1. Genéricos en Java
    2. Implementación de genéricos en Java
    3. Clases, interfaces y métodos genéricos
  10. Iteradores
    1. Iteradores en Java
    2. Comportamiento de iteradores
    3. Recorriendo iterables
  11. Lambdas
    1. Lambdas y funciones anónimas
    2. Clases internas anónimas
    3. Implementación en Java
  12. Arreglos, ordenamientos y búsquedas
    1. Arreglos en Java
    2. Ordenamientos en arreglos y listas
    3. Búsquedas en arreglos y listas
  13. Interfaces gráficas
    1. Java FX
    2. Patrón Modelo-Vista-Controlador
    3. Lambdas en interfaces gráficas
  14. Programación en red
    1. Enchufes
    2. Modelo servidor/cliente
    3. Entrada y salida con enchufes
  15. Programación concurrente
    1. Hilos de ejecución
    2. Los filósofos chinos
    3. Sincronización de hilos de ejecución

Metodología de trabajo en línea

Comenzando el primer día de clases (2 de marzo) tendremos una sesión vía videoconferencia utilizando Google Meet para abrir el curso; la invitación a la videoconferencia requiere el correo institucional de la Facultad de Ciencias (@ciencias.unam.mx), si no es la dirección de correo que tienen registrada en la Facultad, por favor envíen un correo electrónico al profesor para que se les invite a la videoconferencia. Después nos seguiremos reuniendo vía videoconferencia una vez cada 2 semanas. No es obligatorio asistir en tiempo real a las videoconferencias, y todas estarán disponibles después en YouTube para consultarlas.

NO SE ACEPTARÁ A LA VIDEOCONFERENCIA A NINGÚN PARTICIPANTE QUE NO TENGA CUENTA @ciencias.unam.mx.

Las semanas que no haya videoconferencia, el profesor (y ocasionalmente los ayudantes) publicarán videos en YouTube con los temas del curso; durante el horario de la clase, ayudantía y laboratorio se tendrán sesiones de chat síncronas, donde podrán hacer preguntas en tiempo real. Durante todo el semestre estarán disponibles el profesor y los ayudantes vía correo electrónico, pero a veces tardarán en responder unas horas (o días, si preguntan algo el viernes a las ocho de la noche).

Exceptuando los videos, nada del curso necesitará que tengan una buena conexión a internet o mucho ancho de banda, aunque todo será más fácil sí lo tienen. Para los videos, si lo necesitan les recomendamos que utilicen una herramienta como youtube-dl para bajar los videos en los horarios que les convenga, y si así lo consideran necesario, en una resolución media o baja.

Por motivos de la contingencia, será necesario que traten de avanzar lo más posible por ustedes mismos durante el semestre, utilizando el material que se pondrá a su disposición. Además de los videos, se les proporcionarán libros de texto digitales, repositorios de código y otros recursos en línea; y también estarán disponibles todo el semestre el profesor y los ayudantes a través correo electrónico. Pero lo más importante será el esfuerzo que ustedes puedan dar durante esta modalidad de trabajo en línea.


Evaluación

El curso se evaluará de la siguiente manera:

Exámenes parciales: 30%
Exámenes semanales: 20%
Proyectos: 30%
Prácticas: 20%

Evaluación teórica

Habrá tres exámenes parciales, cada uno de los cuales cubrirá aproximadamente la tercera parte del material visto en clase. En los examenes parciales se les solicitará escribir código, pero recuerden que los exámenes serán en línea, por lo que podrán usar un editor de texto y el compilador de Java para verificar que sea correcto.

Los exámenes semanales son exámenes cortos (diez minutos) que se llevarán a cabo los viernes, y donde se harán preguntas referentes a los conceptos vistos durante la semana. Una vez que todos los alumnos hayan entregado el examen, el profesor publicará las respuestas correctas al mismo. La calificación más baja de todos los exámenes semanales no será contabilizada en el promedio de los mismos.

Los exámenes se realizarán a través de TCExam; las credenciales para ingresar al mismo se les proporcionarán más adelante.

No hay exámenes de reposición ni examen final.

Evaluación práctica

Habrá tres proyectos, para realizarse de forma individual, y consistirán en implementar la solución a un problema específico, utilizando los conceptos y herramientas vistos durante el curso.

Las prácticas consistirán en implementar, en su totalidad o en parte, las clases y métodos correspondientes que se les dejen. Las prácticas también deberán realizarse de forma individual.

La calificación de las prácticas depende de las pruebas unitarias incluidas en cada una de ellas. Si la práctica que el alumno entregue pasa todas las pruebas unitarias la calificación será, en principio, 10. Si un estudiante consigue escribir código demostrablemente incorrecto que pase todas las pruebas unitarias de una práctica, y le avisa al profesor antes de la fecha de entrega, el estudiante obtendrá un punto extra en esa práctica.

Para alcanzar al menos el 5 de calificación, la práctica debe compilar correctamente y sin advertencias. No está permitido bajo ninguna circunstancia utilizar clases del paquete java.util (excepto excepciones y enumeraciones), ni agregar variables de clase (ni públicas ni privadas) a ninguna clase vista durante el curso. Tampoco está permitido agregar métodos públicos; pero métodos privados están permitidos, y de hecho se les sugiere que los utilicen.

Si el ayudante o profesor detectan que han copiado en alguna práctica o proyecto, la calificación de la misma se dividirá entre el número de estudiantes que hayan copiado.

Las prácticas y proyectos estarán disponibles en el repositorio del curso. Ahí también encontrarán las instrucciones para entregarlos.

La fecha límite de entrega de prácticas y proyectos es inamovible.


Renuncias y NPs

Por motivos de la actual pandemia, nadie sacará 5 durante el curso; cualquier estudiante que obtenga una calificación reprobatoria se le pondrá NP en las actas. De todas maneras, si por cualquier motivo deciden abandonar el curso, apreciaríamos que nos avisaran por correo electrónico.

No se guardan calificaciones para próximos semestres ni para exámenes extraordinarios. Mucho menos se “pasan” o “reciben” calificaciones a o de otros profesores.


 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.