Ingeniería en Software y Tecnologías Emergentes · Plan 2021-2

Una forma de programar no sirve para todos los problemas.

Explora cómo piensan los paradigmas orientado a objetos, funcional y lógico. Reconoce sus principios, implementa soluciones y aprende a elegir el enfoque adecuado para cada problema.

UABC · FCITEC · 5 unidades · 28 horas
Comprender · Comparar · Elegir
01

Orientado a objetos

Modela el problema como objetos que combinan datos y comportamiento.

Unidad III
02

Funcional

Construye soluciones componiendo funciones puras, sin estado compartido.

Unidad IV
03

Lógico

Describe hechos y reglas; el motor de inferencia encuentra las respuestas.

Unidad V

¿Para qué estudiamos esto?

Propósito del curso

Comprender los lenguajes de programación para elegir, con criterio, la mejor forma de resolver cada problema.

Propósito de la unidad de aprendizaje

Identificar la importancia de los lenguajes de programación, a partir del análisis de su historia, antecedentes y niveles de descripción, para comprender su aplicación, con actitud reflexiva, crítica e interpretativa. Distinguir los elementos fundamentales de los lenguajes, considerando el entorno de desarrollo, su estructura y sintaxis, para utilizarlos en la creación de programas de cómputo.

Competencia general

Identificar, distinguir y aplicar los paradigmas orientado a objetos, funcional y lógico mediante su implementación en la resolución de problemas reales, para comprender sus ventajas y desventajas, con actitud crítica, proactiva y reflexiva.

Cómo se aprende

Comparando. Un mismo problema pequeño, como el factorial o el ordenamiento de una lista, se resuelve en Java, Haskell y Prolog para observar cómo cambia la forma de expresar la solución.

Ver el recorrido por unidades

Mapa de navegación

Tu recorrido por la asignatura

De los fundamentos de los lenguajes a la resolución de problemas con tres paradigmas distintos.

U / 01

Lenguajes de programación

Reconoce la importancia de los lenguajes mediante su historia y sus niveles de descripción.

HistoriaLéxico y sintaxisSemánticaCompiladores e intérpretes
Disponible6 horas
U / 02

Elementos fundamentales

Comprende los componentes que permiten describir y ejecutar un programa.

Nombres y objetosAlcanceMemoriaControlTipos de datos
Disponible4 horas
U / 03

Programación orientada a objetos

Emplea el paradigma orientado a objetos para modelar y resolver problemas reales.

AbstracciónEncapsulamientoHerenciaPolimorfismoGenéricos
Disponible6 horas
U / 04

Programación funcional

Aplica conceptos funcionales para expresar transformaciones y construir soluciones.

Funciones purasInmutabilidadTransparencia referencialEvaluación lazy / eager
Disponible6 horas
U / 05

Programación lógica

Utiliza hechos, reglas y consultas para representar conocimiento y resolver problemas.

HechosReglasConsultasUnificaciónBacktracking
Disponible6 horas
RETO

Reto integrador: comparar soluciones

Implementa un mismo problema en distintos paradigmas y contrasta cómo cambia la forma de expresar la solución.

Python / POOHaskell / FuncionalProlog / Lógico

Las horas y contenidos corresponden al mapa de contenidos de la asignatura. Cada unidad incluye, además de sus subtemas, un proyecto de cierre.

Resultados de aprendizaje

¿Qué podrás hacer al finalizar?

Enfoque del curso

META / 001

Entender qué expresa cada paradigma y cuándo conviene usarlo

Empezar por la Unidad I
01

Identificar

Reconocer las características fundamentales de los lenguajes y paradigmas de programación.

02

Seleccionar

Argumentar qué paradigma puede ser más adecuado para un problema determinado.

03

Implementar

Construir soluciones en lenguajes representativos, como Java, Haskell y Prolog.

04

Evaluar críticamente

Comparar ventajas, limitaciones y diferencias entre las soluciones desarrolladas.

05

Documentar

Organizar un repositorio comparativo de programas y evidencias de aprendizaje.

Criterios de evaluación

Cómo se integra tu calificación

Calificación mínima aprobatoria de 60/100 y asistencia mínima conforme al Estatuto Escolar.

E / 01

Tareas y prácticas de taller

20%

E / 02

Exámenes parciales

40%

E / 03

Portafolio de evidencias

40%

Esta página es una guía de navegación. Las indicaciones oficiales de la asignatura prevalecen ante cualquier actualización.

Material de apoyo

Recursos para aprender y practicar

Presentaciones, actividades y ejemplos organizados por unidad.

RECURSO / 01

Presentaciones

Clases interactivas

Presentaciones 16:9 con animaciones paso a paso, notas del presentador y mini-quiz autocalificable.

Disponible
RECURSO / 02

Práctica

Actividades y ejemplos de código

Hojas de trabajo graduadas y programas comentados en Python, Java, Haskell y Prolog.

En preparación
RECURSO / 03

Evaluación

Rúbricas y formatos

Criterios para trabajos de investigación, exposiciones y entrega del portafolio de evidencias.

En preparación

Bibliografía base

Lecturas para profundizar

2016
LIBRO

Programming Language Explorations

Toal, R.; Rivera, R.; Schneider, A.; Choe, E. · CRC Press

2015
LIBRO

Concepts of Programming Languages (11.ª ed.)

Sebesta, R. · Pearson

2015
LIBRO

Programming Language Pragmatics (4.ª ed.)

Scott, M. · Morgan Kaufmann

2010
LIBRO

Programming Languages: Principles and Paradigms

Gabrielli, M.; Martini, S. · Springer

2001
LIBRO

Programming Languages: Design and Implementation (4.ª ed.)

Pratt, T.; Zelkowitz, M. · Prentice Hall

Contacto

¿Dudas o sugerencias sobre el curso?

Escríbeme para resolver dudas de contenido, compartir observaciones o proponer mejoras al material.

Correo profesional[email protected]
InstituciónUABC · FCITEC