Download Sílabo de Programación Cliente/Servidor

Document related concepts

Programación funcional wikipedia , lookup

Lisp wikipedia , lookup

Ocaml wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

Meta Lenguaje wikipedia , lookup

Transcript
SILABO DEL CURSO
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA DE SISTEMAS
LENGUAJES DE PROGRAMACIÓN
1. DATOS GENERALES
1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
Facultad
Carrera Profesional
Departamento
Tipo de Curso
Requisito
Ciclo de estudios
Duración del curso
Inicio
Término
1.8. Extensión Horaria
1.9. Créditos
1.10. Periodo lectivo
1.11. Docente
:
:
:
:
:
:
:
:
:
:
:
:
:
Ingeniería
Ingeniería de Sistemas
Ingeniería de Sistemas
Obligatorio
Análisis y Diseño de Algoritmos
5
18 semanas
17 de Marzo de 2008
19 de Julio de 2008
4 horas (02 h Teoría, 02 h Laboratorio)
3
2008-1
Ing. Iván Anselmo Sipirán Mendoza
[email protected]
David Wong Aitken
[email protected]
2. FUNDAMENTACIÓN
Este curso es un curso teórico/práctico en donde el alumno conocerá la teoría fundamental de los
lenguajes de programación y de esta manera cuenten con una formación sólida en el área de ciencias
de la computación. Es importante notar que los tópicos a estudiar en este curso le ayudarán al alumno a
tener un carácter crítico con respecto a la creación y utilización de nuevas tecnologías de computación,
en especial aquellas relacionadas con el estudio de los lenguajes de programación, su análisis, diseño y
construcción. El curso se centrará en el estudio de los componentes y etapas de construcción de un
lenguaje de programación. Además se le presentará a los alumnos dos nuevos paradigmas de
programación: la programación funcional y la programación lógica.
3. COMPETENCIA
Al terminar el curso, el alumno será capaz de:
• Conocer los Principios y Fundamentos de los Lenguajes de Programación, para su diseño e
implementación.
• Comprender los procesos de análisis léxico y análisis sintáctico de un lenguaje de programación.
• Diseñar un lenguaje de programación e implementar sus componentes básicos.
• Aplicar los principales Paradigmas de Programación, utilizando casos de estudio en lenguajes
como C, Scheme, Lisp, Prolog.
4. OBJETIVOS ESPECÍFICOS DEL CURSO
4.1. Unidad I
(a) Comprenda los principios que rigen el diseño de lenguajes de programación.
(b) Conozca los diversos paradigmas de programación existentes.
(c) Comprenda los roles de un analizador léxico y sintáctico.
(d) Comprenda el manejo de las variables por el lenguaje de programación.
(e) Conozca los diferentes tipos de datos disponibles en el diseño de lenguajes de programación.
(f) Comprenda el funcionamiento del paso de parámetros en lenguajes de programación
estructurados.
1
4.2. Unidad II
(a)
Comprenda la importancia de los lenguajes de programación funcionales.
(b)
Represente información en un lenguaje de programación funcional.
(c)
Comprenda la construcción de formas funcionales para la solución de problemas.
4.3. Unidad III
(a)
Comprenda la importancia de la programación lógica en la construcción de sistemas
inteligentes.
(b)
Comprenda la representación de conocimiento empleando la lógica de primer orden.
(c)
Comprenda el proceso de inferencia en lenguajes lógicos.
(d)
Comprenda las formas de inferencia y sus aplicaciones.
(e)
Resuelva procesos de inferencia simples basados en el algoritmo de Resolución SLD.
(f)
Construya predicados lógicos para manipular Listas.
5. CONTENIDOS CONCEPTUALES
5.1 Unidad I
• Principios, fundamentos y paradigmas de los Lenguajes de Programación
• Análisis Léxico y Sintáctico.
• Tiempo de vida y alcance de variables, tipos de datos y paso de parámetros.
5.2 Unidad II
• Fundamentos, principios y características de la programación funcional.
• Lenguaje de programación Lisp y dialectos: Scheme
• Tipos de datos, estructuras y formas funcionales disponibles en lenguajes funcionales.
• Aplicaciones de los lenguajes de programación funcionales.
5.3 Unidad III
• Introducción a la Programación Lógica
• Fórmulas Lógicas y Lógica de Primer Orden
• Representación de conocimiento en programación lógica
• Proceso de Inferencia en Programación Lógica
• Encadenamiento hacia delante y encadenamiento hacia atrás.
• Resolución SLD
• Listas en Prolog
6. CONTENIDOS PROCEDIMENTALES
Al término del curso, el alumno podrá:
6.1 Desarrollar los dos componentes iniciales de análisis de un lenguaje de programación: Analizador
léxico y analizador sintáctico.
6.2 Construir programas bajo el paradigma de programación funcional.
6.3 Representar conocimiento y desarrollar programas sobre el paradigma de programación lógica.
7. CONTENIDOS ACTITUDINALES
7.1 Responsabilidad
7.2 Trabajo en Equipo
7.3 Solidaridad
8. METODOLOGÍA GENERAL DEL CURSO
El curso se desarrollará en su mayor parte de forma expositiva. Además en el laboratorio, el docente
dará la base para que los alumnos puedan implementar los algoritmos vistos y para que puedan
desarrollar su proyecto por propia cuenta.
En cuanto a la evaluación continua, estará determinada por las prácticas que desarrolle el alumno en
laboratorio y un proyecto de fin de curso.
El proyecto final es un software que los alumnos, reunidos en equipos de trabajo de no más de 3
personas, deberán desarrollar empleando cualquiera de los paradigmas de programación vistos en
clase. Al inicio del curso, el docente dará una lista tentativa de proyecto que los alumnos escogerán, o
en su defecto podrán presentar cualquier proyecto que involucre los temas del curso, previa consulta
con el docente para que se determine su alcance y se pueda registrar.
2
La calificación del proyecto involucra un informe de no más de 6 páginas en formato paper acerca del
proyecto y una exposición (presentación + software). La calificación final será el promedio simple de las
notas del informe y la exposición.
9. PROGRAMACIÓN
Unidad
1. Fundamentos de
los Lenguajes de
Programación.
(5 semanas)
2. Paradigma de
Programación
Funcional.
(4 semanas)
2. Paradigma de
Programación
Funcional(Continu
ación)
(1 semana)
3. Paradigma de
Programación
Lógica
(5 semanas)
Sem.
1
Actividad
Principios y fundamentos de los Lenguajes de Programación
Presentación de proyectos tentativos y conformación de los grupos de trabajo
2
Proceso de Compilación e Interpretación de un Lenguaje de Programación.
Elaboración de un analizador léxico en el laboratorio.
3
Binding, Lifetime y Scoping
Elaboración de un analizador sintáctico en el laboratorio.
Evaluación T1
4
Tipos de datos.
Práctica tipos de datos en el laboratorio con un caso de estudio: Lenguaje C.
Evaluación T2
5
Paso de parámetros
Práctica de paso de parámetros en el laboratorio con un caso de estudio:
Lenguaje C.
• Evaluación T2
FUENTES BIBLIOGRÁFICAS:
[1] Capítulos 3,4
[2] Capítulos 2, 3, 4, 5, 6
[3] Capítulo 1, 2, 3, 7
6
• Fundamentos de la programación funcional.
• Caso de estudio en el laboratorio: Programación Funcional con Lisp.
7
• EL lenguaje de programación Lisp
• Práctica de laboratorio: Tipos de datos y estructuras en Lisp.
8
• Scheme como dialecto de Lisp.
• Caso de estudio en el laboratorio: Lenguaje Scheme.
FUENTES BIBLIOGRÁFICAS:
[1] Capítulos 15
[3] Capítulo 11
EXAMEN PARCIAL
9
10
• Formas funcionales en Scheme
• Práctica de Laboratorio: Formas funcionales en Scheme
• Evaluación T3
FUENTES BIBLIOGRÁFICAS:
[1] Capítulos 15
[3] Capítulo 11
11
• Introducción a la Programación Lógica
• Caso de estudio en el laboratorio: Programación Lógica
12
• Fórmulas Lógicas
• Práctica de laboratorio: Creación de fórmulas lógicas en Prolog
13
• Representación del Conocimiento
• Práctica de Laboratorio: Representación del Conocimiento
14
• Proceso de Inferencia Lógico
• Práctica de Laboratorio: Creación de hechos y reglas en Prolog.
15
• Listas en Prolog
• Práctica de Laboratorio: Creación de predicados para manejo de listas.
• Evaluación T4
16
• Listas de Listas en Prolog
• Práctica de Laboratorio: Creación de Listas de Listas en Prolog
• Evaluación T5
FUENTES BIBLIOGRÁFICAS:
[2] Capítulo 16
[3] Capítulo 11
17
EXAMEN FINAL
18
EXAMEN SUSTITUTORIO
•
•
•
•
•
•
•
•
•
•
•
•
3
10. SISTEMA DE EVALUACIÓN DEL CURSO
El cronograma de la evaluación continua del curso es el siguiente:
ESPECIFICACIÓN DE TRABAJOS DEL CURSO
Descripción
T
T1
T2
T3
T4
T5
Semana
Resumen de Lectura sobre Lenguajes de Programación
Promedio de las evaluaciones de las prácticas de tipos de
datos y paso de parámetros
Solucionar un problema planteado por el docente en el
laboratorio, empleando programación funcional
Solucionar un problema planteado por el docente en el
laboratorio, empleando programación lógica
Presentación de trabajos finales
3
4y5
10
15
16
El peso de cada T es:
EVALUACIÓN
T01
T02
T03
T04
T05
TOTAL
PESO (%)
10
15
20
25
30
100%
ESCALA VIGESIMAL
1,2
1,8
2,4
3,0
3,6
12
Los pesos ponderados de las clases de evaluación son los siguientes:
EVALUACIÓN
PARCIAL
CONTINUA (Ts)
FINAL
TOTAL
PESO (%)
20
60
20
100%
ESCALA VIGESIMAL
4
12
4
20
11. BIBLIOGRAFÍA OBLIGATORIA
#
1
CÓDIGO
AUTOR
FRIEDMAN, Daniel; WAND,
005.13/F83
Mitchell; HAYNES, Christopher
TITULO
Essentials of Programming Languages
12. BIBLIOGRAFÍA COMPLEMENTARIA
#
2
3
AUTOR
SEBESTA, Robert
SCOTT,Michael
TITULO
Concepts of Programming Languages
Programming Language Pragmatics
13. REFERENCIAS WEB
#
4
5
6
TITULO
Programming Language
Research
Researchers in Programming
Languages and Compilers
The Language Guide
ENLACE
http://www.cs.cmu.edu/~mleone/language-research.html
http://www.cs.cmu.edu/~mleone/language-people.html
http://www.engin.umd.umich.edu/CIS/course.des/cis400/
4