Nombre | IIC2513 - Tecnologías y Aplicaciones Web |
---|---|
Horario: | M-J: 3 |
Créditos: | 10 |
Requisitos: | IIC2412 o IIC2413 |
Atención Alumnos: | Después de clases, previo agendamiento |
Nombre | Sección | Github | |
---|---|---|---|
Gabriel Vidal | 1 | @gpvidal | gpvidal@uc.cl |
Hernan Cabrera | 2 | @HernanCabrera | hernan.cabrera@uc.cl |
Nombre | Github | |
---|---|---|
Ignacio Acosta | @cho19 | iaacosta@uc.cl |
Jorge Becerra | @JorgeBdelaT | jabecerra@uc.cl |
Nicolás Benitez | @nabenitez | nabenitez@uc.cl |
Hue Bin Kim | @Hbkim94 | hbkim@uc.cl |
Sofía Ormazabal | @sormazabal | sormazabal@uc.cl |
Andrés Pincheira | @arpincheira | arpincheira@uc.cl |
Eleuterio Ramírez | @Elramirezv123 | elramirez@uc.cl |
Moisés Retamal | @meretamal | meretamal@uc.cl |
Andre Simon | @asimonv | aasimon@uc.cl |
Tien Villalobos | @tvillalobos | tvillalobos1@uc.cl |
En la actualidad, vivimos en un mundo hiperconectado gracias a Internet. Es muy común que, por temas de estudios, trabajo (u otro); accedamos a distintos sitios para consultar algún tipo de información.
Estos sitios tienen distintos objetivos: vender un producto, compartir imágenes, poder acceder a otro tipo de información, etc. También son distintos en cuanto a comportamiento: en algunos casos hacer clic en un enlace gatilla una recarga del sitio, en otros puede desplegar información inmediatamente. Algunos se ven distinto en tu computador y en tu teléfono.
Lo anterior es solo una muestra de lo distinto que pueden ser los sitios web. Esto, a su vez, se relaciona con las distintas tecnologías que están involucradas para lograr algunas de las cosas mencionadas anteriormente.
La construcción de estos sitios, o aplicaciones en algunos casos, requiere entender cómo funciona la web y cuáles son las tecnologías disponibles para su desarrollo, para luego poder utilizarlas.
El objetivo de este curso es que los estudiantes conozcan la infraestructura tecnológica sobre la cual descansa la World Wide Web y aprendan a manejar las principales tecnologías que se utilizan para construir sitios y aplicaciones en la plataforma Web. Además, adquirirán una base conceptual suficiente como para que puedan entender las nuevas tecnologías y propuestas que surgen día a día.
Al finalizar el curso, los estudiantes serán capaces de:
- Conocer los principales estándares que hacen posible la WWW.
- Conocer la arquitectura tecnológica de sitios y aplicaciones Web.
- Desarrollar sitios Web con contenido dinámico.
- Desarrollar aplicaciones Web usando diversas tecnologías y herramientas, disponibles en la actualidad, para este fin.
- Evaluar los méritos de las nuevas tecnologías para el desarrollo de sitios y aplicaciones web, como también aquellas que soportan la WWW.
- Preliminares:
- Pasado, presente y futuro de la Web
- La Web como plataforma de desarrollo
- Arquitectura de una aplicación Web típica (modelo MVC)
- Lenguajes y Frameworks para desarrollo Web
- Introducción a NodeJS y koa:
- Una primera mirada a la plataforma y al framework
- Introducción al lenguaje de programación JavaScript
- Presentación de la aplicación que desarrollaremos en clases
- Desarrollo de una aplicación típica:
- Controladores y Vistas
- El Protocolo HTTP
- HTML y templating engines
- Modelo y ORM
- Clases, tablas, migraciones
- Validación de la entrada (input)
- Control de la presentación con CSS
- Una Web de APIs de programación:
- Introducción a los servicios web
- REST
- Diseñando una API Restful
- Aplicaciones web de cliente enriquecido (RIA):
- JavaScript y el DOM
- Introducción a frameworks en el lado del cliente
- AJAX: Mejorando la experiencia del usuario
- Aspectos finales:
- Introducción a aspectos de seguridad
- Protocolo seguro HTTPS
- Aspectos de performance
A lo largo del semestre los estudiantes desarrollarán sistemáticamente ejercicios en clases. Por otra parte, trabajarán en equipos desarrollando una aplicación propia durante el semestre. Las distintas tecnologías, estándares y técnicas van siendo introducidas a medida que la aplicación se completa, en el momento que se hacen necesarios. Cada cierto número de semanas, son evaluados por su grado de avance en el proyecto.
Los estudiantes deberán tener un trabajo personal significativo, que involucra:
- Lectura y estudio de aspectos específicos del lenguaje y/o del framework.
- Lecturas complementarias que profundizan y amplían lo que se discute en clases.
- Desarrollo del proyecto a lo largo del semestre.
Se llevarán a cabo dos interrogaciones que cubren el material visto en clases y lo asignado como lectura o estudio personal, más un examen final que cubre todo el material del semestre. En caso de inasistencia a alguna interrogación, debe ser justificada ante la Escuela de Ingenieria según el procedimiento oficial.
El trabajo práctico en el proyecto será evaluado de la siguiente forma: un 50% de la nota corresponderá al promedio de las evaluaciones periódicas parciales y un 50% corresponderá a la entrega del producto final. Para tener derecho a la entrega final debe acreditarse un avance de al menos un 50% al completar la última evaluación parcial. La nota final considera las interrogaciones, el examen práctico y el proyecto de la siguiente forma:
-
Nota Teórica: (I1 + I2 + Ex) / 3
-
Nota Práctica: (Promedio entregas parciales) * 0.5 + (Entrega final) * 0.5
-
Nota final:
- Si notas Teórica y Práctica son mayores o iguales a 4 entonces es el promedio de ambas.
- En caso contrario, la menor entre ambas
-
Fechas de interrogaciones:
Evaluación | Fecha |
---|---|
I1 | 07 de abril |
I2 | 14 de mayo |
Ex | 14 de julio |
Durante el semestre podrían haber evaluaciones y/o actividades, con o sin previo aviso, que aunque no serán consideradas directamente en la nota final, podrían significar bonificaciones en alguna de las evaluaciones listadas anteriormente.
- JavaScript, NodeJS
- Haverbeke M. "Eloquent JavaScript, 2nd Ed.: A Modern Introduction to Programming" No Starch Press 2014
- Crockford D. "JavaScript: The Good Parts" O'Reilly 2008
- Flanagan D. "JavaScript: The Definitive Guide: Activate Your Web Pages" O'Reilly 2011
- Simpson, K. "You Don't Know JS" O'Reilly – not yet published
- Cantelon M., Harter M., Holowaychuk TJ, Rajlich N. "Node.js in Action" Manning 2013
- Quigley E. "JavaScript by Example", Pearson 2011
- Design, HTML, XHTML, CSS, Standards
- Beaird J. "The principles of beautiful Web Design" Sitepoint 2007
- Vora P. "Web Application Design Patterns" Morgan Kaufman 2009
- Niederst J. "Learning Web Design: A Beginner's Guide to (X)HTML, StyleSheets, and Web Graphics", OReilly 2007
- Zeldman, J. "Designing with Web Standards (3rd Ed)", New Riders 2009
- McFarland, D. "CSS: The Missing Manual", OReilly 2009
- Collison, S. "Beginning CSS Web Development: From Novice to Professional" APress 2006
- Lawson B., Sharp R. "Introducing HTML5", New Riders 2011
- Keith J. "HTML 5 for Web Designers" A book apart 2011
- Javascript
- Resig J. "Pro JavaScript Techniques" APress 2006
- Powers, S. "Learning JavaScript" OReilly 2006
- Keith, J. "DOM Scripting: Web Design with JavaScript and the Document Object Model" APress 2005
Este curso adscribe el Código de Honor establecido por la Escuela de Ingeniería el que es vinculante. Todo trabajo evaluado en este curso debe ser propio. En caso de que exista colaboración permitida con otros estudiantes, el trabajo deberá referenciar y atribuir correctamente dicha contribución a quien corresponda. Como estudiante es su deber conocer la versión en línea del Código de Honor (http://ing.puc.cl/codigodehonor).
Pueden encontrar toda la información relacionada a los proyectos en la sección correspondiente.
Tendremos mucha información útil en la Wiki del curso, la cual pueden encontrar en el menú superior o haciendo clic aquí.
En particular, les sugerimos revisar esta sección en la wiki antes de comenzar con su proyecto.
La página de Issues se utilizará como foro para preguntas.
Dentro de Issues, las entradas se pueden etiquetar dentro de ciertas categorías para mantener el orden y facilitar la búsqueda de problemas similares. Una entrada puede tener múltiples etiquetas. Aunque el equipo docente irá etiquetando según corresponda, también puedes adelantarte y clasificar tu progunta en la(s) categoría(s) que correspondan:
- Material: para discutir sobre el material entregado por el equipo docente.
- Código: sobre métodos, clases, sintaxis, estándares, etc.
- Enunciado o Entrega: sobre el enunciado o situación relacionada a alguna entrega de proyecto.
- Interrogación: sobre fechas, contenido, recorreción de interrogaciones, etc.
- Materia: sobre conceptos y/o temas vistos en clases o fuera de éstas.
- Duplicada: pregunta repetida, se hará referencia a la pregunta original.
- Packages: Consultas acerca de si se puede utilizar cierto package que no está explícitamente indicado en la Wiki.
- Git: Preguntas relacionadas con
git
- Inválida: la pregunta no cumple los estándares o viola el procedimiento descrito abajo.
- Meta-pregunta: pregunta sobre cómo y qué preguntar.
- Tengo un error: para preguntar sobre errores o bugs en códigos antes de caer en la desesperación (pero luego de haber buscado apropiadamente en la Web...).
Antes de postear:
- Busca en Internet para encontrar la solución.
- Si pasan horas y el problema persiste, entra a Issues.
- Busca si alguien tiene la misma pregunta o problema.
- Si encuentras un post marcado como resuelto, pero no te satisface la respuesta, puedes comentar la issue y volver a abrirla.
- En caso de no encontrar un post que te sirva, lo creas presionando New issue.
- Escribe una entrada explicando bien el problema o pregunta.
- Publica.
Tanto al publicar como comentar, debes atenerte a las normas del curso. Además, debes utilizar Markdown cuando sea necesario. Por ejemplo, cuando se necesita mostrar código o mensajes de error.
Una vez resuelto el problema, da las gracias y cierra el issue 😃.