Está en la página 1de 7

ESCUELA DE MAESTRÍA EN

POSGRADO INFORMÁTICA

LENGUAJES DE PROGRAMACIÓN

Clave : 1INF13 Créditos : 3.0


Tipo : Obligatorio Semestre : 2023-1
Horario : Sábados de 09:00 a 12:00 Requisitos : No tiene
Profesor/a : Mg. Johan Baldeón
Mg. David Allasi
Dr. Freddy Paz

1. Sumilla
Curso teórico-práctico, en el que los estudiantes desarrollarán las habilidades
necesarias para la programación de componentes tecnológicos en proyectos
informáticos. Los alumnos, específicamente, conocerán los conceptos de programación,
terminología básica, lenguajes de programación y paradigmas de programación.
También, aplicarán técnicas y herramientas de programación para el desarrollo de
componentes de software en soluciones tecnológicas del siguiente tipo: monolitos
modulares, servicios REST, aplicaciones móviles, microservicios, sistemas distribuidos,
arquitecturas basadas en eventos, serverless, entre otros. Finalmente, en el curso, se
abordarán temas de formulación y propuestas de esquemas de organización estructural
de los programas que forman parte de un proyecto de desarrollo de software.

2. Objetivos de aprendizaje
● Desarrollar las habilidades necesarias para afrontar la programación de
aplicaciones. Conocimiento general y práctico de algunos lenguajes de
programación en los distintos paradigmas.
● Reconocer los diferentes lenguajes de programación.
● Reconocer los diferentes paradigmas de programación.
● Elaborar pequeños programas en distintos lenguajes.
● Permitir la comprensión de los lenguajes de programación.
● Desarrollar y desplegar componentes distribuidos de software.
● Reconocer las diferentes arquitecturas utilizadas actualmente para el desarrollo
de sistemas de información.
● Reconocer y emplear tecnologías emergentes que permiten el desarrollo y
despliegue de programas distribuidos.
● Reconocer y diseñar una arquitectura de aplicaciones basada en microservicios.
● Desarrollar e implementar aplicaciones, web y móviles, utilizando servicios
REST y microservicios.

3. Contenido

CAPÍTULO 1. Introducción y Descripción General (3 horas)


Introducción y objetivos del curso. Terminología básica. Historia. Lenguajes de
programación. Paradigmas de programación. Análisis léxico, análisis sintáctico
y análisis semántico. Gramática de Libre Contexto y Ambigua.

EP-Eje-4.01 Rev.1 Página 1 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

CAPÍTULO 2. Programación Distribuida (9 horas)


Fundamentos generales, tipos de arquitecturas distribuidas, librerías y
componentes, conexión a base de datos, patrones de diseño en programación,
implementación de programas distribuidos mediante Java RMI, .NET Remoting
(C#), servicios web SOAP y REST, y despliegue de programas distribuidos en
servidores. Presentación individual de temas de investigación.

CAPÍTULO 3. Serverless (3 horas)


Fundamentos generales, cloud computing, proveedores cloud, tipos de
infraestructura cloud, modelos de servicio, Amazon Web Services (AWS),
Relational Database Service (RDS), Elastic Compute Cloud (EC2), Lambda y
API Gateway.

CAPÍTULO 4. Servicios REST (4 horas)


Fundamentos generales de la arquitectura de servicios web. Principios de
arquitectura REST. Gestión de Servicios. Tipos de Servicios REST. Integración
de aplicaciones. Taller práctico.

CAPÍTULO 5. Microservicios (4 horas)


Fundamentos generales de la arquitectura de microservicios. Arquitectura
monolítica vs Arquitectura de microservicios. Características de los
microservicios. Beneficios de los microservicios. Taller práctico.

CAPÍTULO 6. Aplicaciones Móviles (4 horas)


Fundamentos para el desarrollo de aplicaciones móviles. Arquitectura de
aplicaciones para dispositivos móviles. Prototipos para aplicaciones móviles.
Taller práctico.

CAPÍTULO 7. Paradigma Lógico (3 horas)


Principios y características del paradigma lógico. Conceptos básicos de la
programación lógica. Aritmética de operaciones y consultas. Funciones y reglas
recursivas. Manipulación de listas. Estructuras de control de flujo.

CAPÍTULO 8. Paradigma Funcional (3 horas)


Fundamentos generales, transferencia referencial, ejemplos de programación
funcional, cálculo aritmético, funciones matemáticas, funciones predefinidas,
definición de funciones, definición de variables, sintaxis condicional,
recursividad, expresiones y listas.

CAPÍTULO 9. Paradigma Imperativo (3 horas)


Fundamentos generales, características del paradigma imperativo. Aplicaciones
del paradigma imperativo con tecnologías de realidad extendida (XR).

EP-Eje-4.01 Rev.1 Página 2 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

CAPÍTULO 10. Paradigma Orientado a Objetos (3 horas)


Fundamentos generales, características del paradigma orientado a objetos.
Aplicaciones del paradigma orientado a objetos con tecnologías de realidad
extendida (XR).

4. Metodología
El curso se basa en clases expositivas y las aplicaciones prácticas de cada temática se
realizan empleando distintos lenguajes de programación.

Revisa las NORMAS PARA LA ELABORACIÓN DE TRABAJOS GRUPALES

5. Sistema de evaluación

Trabajos del curso 60%


Exámenes 40%

Se considerará el promedio de las notas de los exámenes del curso (Ex) y el promedio
de las notas de trabajos (Tr) que se realizarán en el transcurso de todo el semestre. La
nota final del curso (NF) se obtendrá mediante la siguiente fórmula:

NF = (Tr1 + Tr2 + Tr3 + Ex1 + Ex2) / 5

Donde:
Tr1 = Nota de presentación de trabajo de la sección de programación distribuida.
Tr2 = Nota de presentación de trabajo de la sección de servicios REST,
microservicios y aplicaciones móviles.
Tr3 = Nota promedio de trabajos individuales relacionados con los paradigmas
imperativo, orientado a objetos y lógico.

Cada nota de trabajo individual (Tr) será calculada de la siguiente manera:


● 60%: Resolución de ejercicios, tareas y participación en clase
● 40%: Presentación del trabajo final relacionado a la sección correspondiente

Ex1 = Nota del Examen Parcial


Ex2 = Nota del Examen Final

Fechas de Entrega de los trabajos:


● Trabajo relacionado a la Programación Distribuida: 28 de abril del 2023.
● Trabajo relacionado a Servicios REST, microservicios y aplicaciones móviles: 10
de junio del 2023.
● Trabajo relacionado al Paradigma Lógico: 17 de junio de 2023.
● Trabajo relacionado al Paradigma Funcional: 24 de junio de 2023.
● Trabajo relacionado al Paradigma Imperativo y Orientado a Objetos: 08 de julio
de 2023.

EP-Eje-4.01 Rev.1 Página 3 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

6. Bibliografía

BIBLIOGRAFÍA RELACIONADA A INTRODUCCIÓN Y DESCRIPCIÓN GENERAL


● Bansal, A. K. (2014). Introduction to programming languages. Boca Raton: Chapman &
Hall/CRC.
● Chen, Y. (2017). Introduction to programming languages: programming in C, C , Scheme,
Prolog, C#, and Soa. Dubuque, IA: Kendall Hunt Publishing Company.
● Harper, R. (2016). Practical foundations for programming languages. Cambridge
University Press.
● Lee, K. D. (2017). Foundations of Programming Languages. Springer.
● Lee, K. D. (2008). Programming languages: an active learning approach. New York:
Springer.
● Louden, K. C., & Lambert, K. A. (2012). Programming languages: principles and practice.
Boston: Course Technology.
● Mitchell, J. C., & Apt, K. (2003). Concepts in programming languages. Cambridge
University Press.
● Reynolds, J. C. (2009). Theories of programming languages. New York: Cambridge
University Press.
● Sebesta, R. W., Mukherjee, S., & Bhattacharjee, A. K. (2016). Concepts of programming
languages. Boston: Pearson Prenitce Hall.
● Tucker, A. B., & Noonan, R. E. (2007). Programming languages principles and
paradigms. Boston: McGraw-Hill Higher Education.
● Watt, D. A., & Wong, S. (1990). Programming Languages. Concepts and Paradigms
Prentice Hall.

BIBLIOGRAFÍA RELACIONADA A PROGRAMACIÓN DISTRIBUIDA


● Burns, B. (2018). Designing Distributed Systems: Patterns and Paradigms for Scalable,
Reliable Services. Estados Unidos: O'Reilly Media.
● Coulouris, G., Dollimore, J. and Kindberg, T. (2001). Distributed Systems: Concepts and
Design. 3era Edición. Estados Unidos: Addison Wesley.
● Downing, T. (1998). Java RMI. Estados Unidos: Hungry Minds Inc.
● Grosso, W. (2001). Java RMI. Estados Unidos: O'Reilly Media.
● McLean, S., Naftel, J. and Williams, K. (2002). Microsoft .NET Remoting. Estados Unidos:
Microsoft Press.
● Rammer, I. and Szpuszta, M. (2010). Advanced .NET Remoting. 3era Edición. Estados
Unidos: Apress.
● Steen, M. v. and Tanenbaum, A. S. (2017). Distributed Systems. 3era Edición. Estados
Unidos: CreateSpace Independent Publishing Platform.
● Tanenbaum, A. S. and Steen, M. v. (2016). Distributed Systems: Principles and
Paradigms. 2da Edición. Estados Unidos: CreateSpace Independent Publishing
Platform.
● Varela, C. A. and Agha, G. (2013). Programming Distributed Computing Systems: A
Foundational Approach. Estados Unidos: The MIT Press.

BIBLIOGRAFÍA RELACIONADA A SERVERLESS


● Adzic, G. and Korac, N. (2019). Running Serverless: Introduction to AWS Lambda and
the Serverless Application Model. Reino Unido: Neuri Consulting LLP.
● Chapin, J. and Roberts, M. (2020). Programming AWS Lambda: Build and Deploy
Serverless Applications with Java. Estados Unidos: O'Reilly Media.

EP-Eje-4.01 Rev.1 Página 4 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

● Culkin, J. (2022). AWS Cookbook: Recipes for Success on AWS. Estados Unidos:
O'Reilly Media.
● Katzer, J. (2020). Learning Serverless: Design, Develop, and Deploy with Confidence.
Estados Unidos: O'Reilly Media.
● Sbarski, P., Cui, Y. and Nair, A. (2022). Serverless Architectures on AWS. 2da Edición.
Estados Unidos: Manning.

BIBLIOGRAFÍA RELACIONADA A APLICACIONES MÓVILES, SERVICIOS REST


y MICROSERVICIOS
● McWherter, Jeff and Gowell, Scott. (2012). Professional Mobile Application Development.
● Jesse Feiler (2015). Introducing SQLite for Mobile Developers.
● Mark, David (2015). More Iphone Development with Swift Exploring the IOS SDK.
● Balaji, Varanasi and Sudha Belida (2015). Spring REST, REST and Web Services
Development using Spring. Estados Unidos: Apress
● Bogonuva Mohanram Balachandar (2017). RESTful Java Web Services - Third Edition:
A Pragmatic Guide To Designing and Building RESTful APIs Using Java. Estados
Unidos: Packt Publishing.
● Ken Finnigan (2018). Enterprise Java Microservices.
● Chris Richardson (2018). Microservices Patterns: With examples in Java. Estados
Unidos: Manning

BIBLIOGRAFÍA RELACIONADA AL PARADIGMA LÓGICO


● Kifer, M., & Liu, Y. A. (2018). Declarative logic programming. Morgan & Claypool.
● Lloyd, J. W. (2011). Foundations of logic programming (2nd ed.). Springer.
● Bramer, M. A. (2005). Logic programming with Prolog. Alemania, Berlín: Springer
International Publishing.
● Bratko, I. (2001). Prolog programming for artificial intelligence. Reino Unido: Pearson
Education.
● Clocksin, W. F. and C. S. Mellish (2003). Programming in Prolog: Using the ISO
Standard. Alemania, Berlín: Springer International Publishing.
● Krzysztof, R. (1996). From logic programming to Prolog. Estados Unidos, Upper Saddle
River, NJ: Prentice-Hall, Inc.
● Matthews, C. (1988). An introduction to natural language processing through Prolog.
Estados Unidos, Nueva York: Addison Wesley Longman.
● Merrit, D. (2017). Expert Systems in Prolog. Estados Unidos: Independent Publishing
Platform.
● Nilsson, U. and J. Maluszynski (1990). Logic, Programming and PROLOG. Estados
Unidos: John Wiley & Sons, Inc.
● Sterling, L. and E. Shapiro (1994). The Art of Prolog. London, England, The MIT Press.
● Spivey, M. (1996). An introduction to logic programming through Prolog. Estados Unidos:
Prentice-Hall, Inc.

BIBLIOGRAFÍA RELACIONADA AL PARADIGMA FUNCIONAL


● Antani, V., & Mantyla, D. (2016). JavaScript: Functional programming for JavaScript
developers. Packt Publishing.
● Atencio, L. (2016). Functional programming in JavaScript. Manning Publications.
● Bird, R. (1998). Introduction to Functional Programming. Prentice Hall international series
in computer science. Estados Unidos, NJ, Upper Saddle River: Prentice Hall.
● Buonanno, E. (2022). Functional Programming in C# (2nd ed.). Manning Publications.
● Fogus, M. (2013). Functional JavaScript. O’Reilly Media.
● Kereki, F. (2020). Mastering JavaScript Functional Programming (2nd ed.). Packt
Publishing.
● Ford, N. (2014). Functional Thinking: Paradigm Over Syntax. Sebastopol, CA, USA,
O'Reilly Media.

EP-Eje-4.01 Rev.1 Página 5 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

● Hutton, G. (2016). Programming in Haskell. Cambridge. United Kingdom, Cambridge:


University Press.
● Lott, S. F. (2022). Functional Python Programming - Third Edition (3rd ed.). Packt
Publishing.
● Michaelson, G. (2013). An introduction to Functional Programming through Lambda
Calculus. USA, New York: Addison Wesley.
● Stelly, J. W. (2021). Racket Programming the Fun Way: From Strings to Turing Machines.
Estados Unidos: No Starch Press.
● Stone, J. D. (2018). Algorithms for Functional Programming. Alemania, Berlín: Springer
International Publishing.

BIBLIOGRAFÍA RELACIONADA AL PARADIGMA IMPERATIVO


● Goguen, J. and Malcolm, G. (1996). Algebraic Semantics Of Imperative Programs.
Cambridge: MIT Press.
● Salus, P. (1998). Handbook of Programming Languages, Volume II: Imperative
Programming Languages. Indianapolis, Ind: Macmillan Technical Publishing.
● Baruah, R. (2021). Creating an augmented reality website with three.Js and the WebXR
API. In AR and VR Using the WebXR API (pp. 217–252). Apress.
● Dirksen, J. (2023). Learn Three.js - Fourth Edition (4th ed.). Packt Publishing.
● Flanagan, D. (2020). JavaScript - The Definitive Guide (7th ed.). O’Reilly Media.
● Linowes, J., & Babilinski, K. (2017). Augmented reality for developers. Packt Publishing.
● Lopez Benito, J. R., & Artetxe Gonzalez, E. (2019). Enterprise Augmented Reality
Projects. Packt Publishing.
● Deitel, Harvey M. Java: how to program. Editorial Prentice Hall. Tercera edición. 1999.
● Lanham, M. (2018). Learn ARCore - Fundamentals of Google ARCore. Packt Publishing.

BIBLIOGRAFÍA RELACIONADA AL PARADIGMA ORIENTADO A OBJETOS


● Clark, D. (2013). Beginning C# object-oriented programming (2nd ed.). APress.
● Nakov, S., & Kolev, V. (2013). Fundamentals of Computer Programming with C#: The
Bulgarian C# book. Faber Publishing.
● Albahari, J. (2022). C# 10 in a nutshell. O’Reilly Media.
● Chan, J. (2015). Learn C# in one day and learn it well. Createspace Independent
Publishing Platform.
● Linowes, J. (2020). Unity 2020 Virtual Reality Projects (3rd ed.). Packt Publishing.
● Wells, R. (2020). Unity 2020 By Example (3rd ed.). Packt Publishing.
● Whitaker, R. B. (2021). The C# Player’s Guide (5th Edition). Starbound Software.

EP-Eje-4.01 Rev.1 Página 6 de 7


ESCUELA DE MAESTRÍA EN
POSGRADO INFORMÁTICA

7. Cronograma

Semana Fecha Unidad, tema o capítulo


Introducción al curso e inducción a la modalidad virtual
1 25/03/2023
Descripción General del Curso, Historia, Paradigmas, Lenguajes, etc.
2 01/04/2023 Sistemas Distribuidos
3 08/04/2023 Feriado
4 15/04/2023 Sistemas Distribuidos
5 22/04/2023 Serverless
Sistemas Distribuidos
6 29/04/2023
Presentación de trabajos de investigación
7 06/05/2023 Servicios REST
8 13/05/2023 Microservicios
9 20/05/2023 EXAMEN PARCIAL
10 27/05/2023 Aplicaciones móviles
11 03/06/2023 Aplicaciones móviles - Presentación de trabajos
12 10/06/2023 Paradigma Lógico - Actividad
13 17/06/2023 Paradigma Funcional
14 24/06/2023 Aplicaciones del Paradigma Imperativo
15 01/07/2023 Aplicaciones del Paradigma Orientado a Objetos
16 08/07/2023 EXAMEN FINAL

EP-Eje-4.01 Rev.1 Página 7 de 7

También podría gustarte