Información Básica
-
Créditos: 3
-
Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
-
Horas de trabajo independiente: 4 / semana
-
Pre-requisitos: Programación Orientada a Objetos
-
Tipo de curso: Núcleo de Formación Fundamental.
Descripción del Curso
La interacción humano computador trata del diseño de las interacciones entre las actividades humanas y los sistemas computacionales que las soportan y acerca de la construcción de las interfaces que permiten esta interacción. Este curso explora las distintas tendencias y técnicas para el diseño de interfaces centradas en los usuarios. Se centra en la identificación de requerimientos, prototipado, implementación y validación de interfaces. Se enfatiza en los principios de diseño de interfaces gráficas, pero se considera el contexto de las interfaces en general. Además, se tratan temas relacionados con la seguridad brindada por la interfaz.
Objetivos
Al finalizar el curso los participantes podrán:
-
Conocer los conceptos fundamentales de las interfaces humano-computador
-
Explicar en términos generales como las señales análogas pueden ser representadas razonablemente por muestras discretas, por ejemplo, la manera en que las imágenes son representadas por pixeles
-
Discutir por qué el desarrollo de software centrado en el humano es importante
-
Desarrollar y usar un vocabulario conceptual para analizar la interacción humana con el software: Affordance, modelo conceptual, retroalimentación, etc.
-
Resumir los preceptos básicos de la interacción psicológica y social involucradas en las interfaces humano-computador
-
Definir un proceso de diseño centrado en el usuario que tiene en cuenta explícitamente el hecho de que el usuario no es como el desarrollador o sus conocidos.
-
Realizar y documentar un análisis de necesidades para un grupo de usuarios previamente identificados
-
-
Utilizar técnicas de diseño, desarrollo y evaluación de interfaces de usuario
-
Crear una aplicación sencilla, con una interfaz gráfica de usuario que provee elementos de ayuda y documentación
-
Utilizar técnicas de prototipado lo-fi (low-fidelity) para recopilar y generar reportes de las respuestas de los usuarios
-
Realizar evaluaciones cuantitativas y discutir/informar sobre los resultados
-
Reconocer estándares de diseño de interfaces de usuario
-
-
Aplicar las técnicas de diseño de interfaces a la solución de problemas que involucran el desarrollo de software
-
Explicar la importancia del Patrón MVC en la programación de interfaces de usuario
-
Explicar y utilizar los conceptos de programación de Interfaces Gráficas de Usuario: manejo de eventos, gestión de diseño basado en restricciones
-
Crear una aplicación con una interfaz gráfica de usuario moderna
-
Identificar similitudes y diferencias entre las interfaces de usuario de diferentes plataformas (web, móviles, industriales, etc.)
-
Explicar cómo el diseño centrado en el usuario complementa otros modelos de procesos de software
-
Elegir los métodos apropiados para apoyar el desarrollo de una interfaz de usuario específica
-
-
Desarrollar aplicaciones especializadas en alguna plataforma específica teniendo en cuenta las fortalezas y limitaciones que éstas proveen.
-
Ítem de lista desordenadaDescribir cómo el desarrollo basado en la plataformas difiere de la programación de propósito general
-
Reconocer las características especiales de los lenguajes de plataforma
-
Identificar las ventajas y desventajas de las limitaciones de programación basada en plataformas
-
Diseñar e implementar una aplicación web sencilla.
-
Identificar las limitaciones que implican desarrollar aplicaciones web para los desarrolladores
-
Diseñar e implementar una aplicación para una determinada plataforma móvil
-
Analizar los sacrificios entre rendimiento/potencia de las plataformas móviles
-
Identificar las limitaciones que implican desarrollar aplicaciones móviles para los desarrolladores
-
Diseñar e implementar una aplicación para una determinada plataforma industrial
-
Identificar las diferencias entre los lenguajes de dominio vs los lenguajes de programación de propósito general.
-
Describir las limitaciones que implican desarrollar aplicaciones para plataformas industriales
-
-
Utilizar las mejores prácticas de ingeniería del software para el desarrollo de interfaces humano-computador
-
Describir cómo el software puede interactuar con y participar en, varios sistemas, incluyendo la gestión de la información, sistemas embebidos, control de procesos y sistemas de comunicaciones.
-
Explicar cómo la programación en grandes grupos de desarrollo difiere de la programación individual con respecto a la comprensión de un código base grande, legibilidad del código, la comprensión de los despliegues y la identificación del contexto de los cambios
-
Listar los componentes clave de un modelo de datos
-
Identificar uno o más patrones de diseño que serían aplicables al desarrollo de un sistema de software simple.
-
Identificar las diferentes técnicas de programación, idioms y mecanismos para la implementación de diseños para conseguir las propiedades deseadas de un sistema, tales como la confiabilidad, la eficiencia y la robustez.
-
Generar código robusto utilizando mecanismos para el manejo de excepciones
-
Se desarrollan competencias en
- Identificar por qué el desarrollo de software centrado en el usuario es importante.
- Desarrollar la capacidad de analizar y desarrollar la interacciones humanas con sistemas de software
- Crear y conducir pruebas de usabilidad.
- Crear aplicaciones con interfaces gráficas de usuario modernas.
- Comparar métodos de evaluación de interfaces.
- Construir prototipos de interfaces.
- Analizar cómo incluir y cómo los aspectos de seguridad influyen en los factores humanos de una interfaz.
Contenido
Capítulo 1: Conceptos Básicos de las Interfaces Humano-Computador
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad |
---|---|---|---|---|
1 | 3 | Digitalización de datos análogos, resolución y los límites de la percepción humana. Ej.: pixeles en pantallas, puntos por pulgada en impresoras laser y muestras por segundo en sistemas de audio. | Uso | |
Contextualización acerca de la interfaces Humano-Computador Ej.: paginas web, aplicaciones empresariales, aplicaciones móviles, videojuegos, etc. | Familiaridad | |||
2 | 2 | Procesos para el desarrollo de software enfocados hacia el usuario. Ej.: Enfoque temprano en usuarios, pruebas empíricas, diseño iterativo | Uso | |
Medidas de evaluación. Ej.: Utilidad, eficiencia, facilidad de aprendizaje, satisfacción del usuario. | Uso | |||
Heurísticas de usabilidad y los principios de las pruebas de usabilidad | Evaluación | |||
3 | 3 | Capacidades físicas que componen el diseño de interacción. Ej.: Percepción del color, ergonomía | Familiaridad | |
Modelos cognitivos que componen el diseño de interacción. Ej.: la atención, la percepción y el reconocimiento, el movimiento y la memoria, diferencias entre la expectativa y la ejecución | Familiaridad | |||
Modelos sociales que componen el diseño de interacción. Ej.: la cultura, la comunicación, redes y organizaciones de personas | Familiaridad | |||
4 | 2 | Principios del buen diseño y de los buenos diseñadores; sacrificios de la ingeniería | Uso | |
Accesibilidad. Ej.: Interfaces para poblaciones con capacidades diferentes (ciegos, personas con movilidad reducida, etc.) | Uso | |||
Interfaces para grupos poblacionales de diferentes edades Ej.: niños, ancianos, etc. | Evaluación |
Total de Horas: 10.
Capítulo 2: Análisis y Diseño de Interfaces de Usuario
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad |
---|---|---|---|---|
5 | 3 | Principios de interfaces graficas de usuario (GUIs) | Uso | |
Elementos del diseño visual (diseño, color, fuentes, etiquetado) | Uso | |||
Análisis de tareas, incluyendo los aspectos cualitativos de la generación de modelos de análisis de tareas | Familiaridad | |||
6 | 2 | Prototipado de baja fidelidad (paper) | Uso | |
Técnicas de evaluación cuantitativas Ej.: Evaluación del nivel de pulsaciones de teclas | Familiaridad | |||
7 | 3 | Documentación y Ayudas | Uso | |
Manejo de fallas humanas o fallas del sistema | Uso | |||
Estándares de interfaces de usuario | Familiaridad |
Total de Horas: 8.
Capítulo 3: Programación de Sistemas Interactivos
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad |
---|---|---|---|---|
8 | 2 | Patrones arquitecturales de software. Ej.: MVC, Objetos de comando, programación orientada a eventos, programación reactiva, como es usado el patrón MVC en el contexto de la programación orientada eventos. | Uso | |
Patrones del diseño de interacción: jerarquía visual, distancia de navegación | Familiaridad | |||
9 | 3 | Escogencia de estilos y técnicas de interacción | Familiaridad | |
Presentación de la información: navegación, representación, manipulación | Familiaridad | |||
10-11 | 3 | 2 | Librerías modernas de GUI (Ej.: iOS, Android, JavaFX), GUI builders y ambientes de programación de UI (Desarrollo basado en plataformas/Plataformas móviles) | Uso |
12 | 2 | Especificaciones declarativas de interfaces: Hojas de estilos y DOMs | Uso | |
Aplicaciones basadas en datos (paginas web en bases de datos) | Familiaridad | |||
13 | 3 | Diseño multi-plataforma | Familiaridad | |
Diseño para dispositivos de recursos limitados. Ej.: dispositivos móviles | Familiaridad | |||
Proceso de diseño: Enfoques y características | Familiaridad | |||
14 | 2 | Técnicas para recolectar requerimientos. Ej.: Entrevistas, encuestas, investigaciones contextuales y etnográficas | Evaluación | |
Técnicas y herramientas para el análisis y la presentación de los requerimientos. Ej.: reportes | Evaluación | |||
15 | 3 | Internacionalización, diseño para usuarios de otras culturas | Evaluación | |
Representación de la información para los usuarios: navegación, representación, manipulación | Familiaridad |
Total de Horas: 20.
Capítulo 4: Desarrollo Basado en Plataformas
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad |
---|---|---|---|---|
16 | 2 | Visión general de las plataformas. Ej.: plataformas móviles, de videojuegos, web, industriales | Familiaridad | |
Programando utilizando APIs especificas de cada plataforma | Uso | |||
17 | 3 | Visión general de lenguajes de plataforma. Ej.: Objective-C, HTML5, Java | Familiaridad | |
Programando bajo las limitaciones de cada plataforma | Familiaridad | |||
18 | 2 | Lenguajes de programación web. Ej.: HTML5, JavaScript, PHP, CSS | Evaluación | |
19 | 3 | Limitaciones de las plataformas web | Familiaridad | |
20 | 2 | Estándares web | Familiaridad | |
21 | 3 | Lenguajes de programación para móviles | Evaluación | |
22 | 2 | Retos con la movilidad y la comunicación inalámbrica | Uso | |
Aplicaciones basadas en la ubicación | Uso | |||
23 | 3 | Compensaciones entre rendimiento/potencia | Familiaridad | |
Limitaciones de las plataformas móviles | Familiaridad | |||
Tecnologías emergentes | Familiaridad | |||
24 | 2 | Tipos de plataformas industriales Ej.: Matemáticas, Robóticas, Control de Industrias | Uso | |
Software robótico y su arquitectura | Familiaridad | |||
25 | 3 | Lenguajes específicos de dominio | Evaluación | |
Limitaciones de las plataformas industriales | Familiaridad |
Total de Horas: 25 .
Capítulo 5: Técnicas de Ingeniería del Software
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad |
---|---|---|---|---|
26 | 3 | Consideraciones a nivel de sistemas. Ej.: La interacción del software con su entorno previsto | Familiaridad | |
Programación utilizando grandes grupos de gente vs programación individual | Familiaridad | |||
27-30 | 3 | 6 | Descripción de los datos del sistema utilizando, por ejemplo, diagramas de clases y diagramas entidad-relación | Familiaridad |
Patrones de diseño | Evaluación | |||
31-32 | 3 | 2 | Buenas practicas de programación: técnicas, idioms/patrones, mecanismos para construir programas de calidad (Programación defensiva, métodos de desarrollo): Practicas defensivas de codificación; Practicas de seguridad en la codificación; Uso de mecanismos para el manejo de excepciones con el fin de hacer los programas mas robustos y tolerantes a fallas | Uso |
Problemas potenciales de seguridad en los programas: Buffer y otros tipos de desbordamientos; Race conditions; Inicializaciones incorrectas, incluyendo la elección de privilegios; Verificación de entradas; Suponer el éxito y la correctitud; Validar suposiciones | Uso |
Total de Horas: 17.
Uso de material en exámenes
Asistencia
Bibliografía
-
Buschmann, F., Henney, K., & Schmidt, D. C. (2007). Pattern-oriented software architecture, on patterns and pattern languages (Vol. 5). John wiley & sons.
-
Dix, A. (2009). Human-Computer Interaction. En L. LIU & M. T. ÖZSU (Eds.), Encyclopedia of Database Systems (pp. 1327-1331). Boston, MA: Springer US.
-
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software (Adobe Reader). Pearson Education.
-
Gothelf, J., & Manzano, J. L. (2014). Lean UX : cómo aplicar los principios Lean a la mejora de la experiencia de usuario. Universidad Internacional de La Rioja S.A.
-
Harris, P. (2008). Designing And Reporting Experiments In Psychology. McGraw-Hill Education.
-
Hartson, H. R., & Pyla, P. S. (2012). The UX Book: Process and Guidelines for Ensuring a Quality User Experience. Elsevier.
-
Helander, M. G. (2014). Handbook of Human-Computer Interaction. Elsevier Science.
-
Jakob, I. N. (1995). 10 Usability Heuristics for User Interface Design.
-
Lazar, J., Feng, J. H., & Hochheiser, H. (2010). Research Methods in Human-Computer Interaction. John Wiley & Sons.
-
Marcus, A. (2015). HCI and User-Experience Design: Fast-Forward to the Past, Present, and Future. Springer London.
-
Neil, T. (2012). Mobile Design Pattern Gallery: UI Patterns for Mobile Applications. O’Reilly Media, Incorporated.
-
Nielsen, J. (1994). Usability Engineering. Morgan Kaufmann.
-
Preece, J., Rogers, Y., & Sharp, H. (2015). Interaction Design: Beyond Human-Computer Interaction. Wiley.
-
Pressman, R., & Lowe, D. (2008). Web Engineering: A Practitioner’s Approach. McGraw-Hill Education.
-
Pressman, R. S. (2005). Software Engineering: A Practitioner’s Approach. Boston.
-
Rubin, J., Chisnell, D., & Spool, J. (2011). Handbook of Usability Testing: How to Plan, Design, and Conduct Effective Tests. Wiley.
-
Saleh, K. A. (2009). Software Engineering. J. Ross Pub.
-
Tidwell, J. (2010). Designing Interfaces. O’Reilly Media.
-
Vora, P. (2009). Web Application Design Patterns. Elsevier Science.
-
Walker, M., Takayama, L., & Landay, J. A. (2002). High-fidelity or low-fidelity, paper or computer? Choosing attributes when testing web prototypes (Vol. 46, pp. 661-665). Presentado en Proceedings of the human factors and ergonomics society annual meeting, SAGE Publications.
Instalaciones
Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.