Skip to content

IIC2513-2020-2/syllabus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tabla de contenidos

Programa

Curso

Nombre IIC2513 - Tecnologías y Aplicaciones Web
Sección: 1
Horario: M-J: 2
Créditos: 10
Requisitos: IIC2412 o IIC2413
Atención Alumnos: Agendamiento por correo

Equipo

Profesor

Nombre Github Email
Sebastián Vicencio @sivicencio sivicencio@uc.cl

Ayudantes

Nombre Github Email
Jorge Becerra @JorgeBdelaT jabecerra@uc.cl
Nicolás Bravo @nhbravo nhbravo@uc.cl
Camila Chávez @Cschavez cschavez@uc.cl
Michel Magna @Michelmagna mamagna@uc.cl
Andrés Pincheira @arpincheira arpincheira@uc.cl
Moisés Retamal @meretamal meretamal@uc.cl
Diego Vásquez @dhvasquez dhvasquez@uc.cl

Descripción

En la actualidad vivimos en un mundo hiperconectado gracias a Internet. Es muy común que por temas de estudios, trabajo, entretenimiento u otros, accedamos a distintos sitios web para consultar distintos tipos de información.

Estos sitios tienen distintos objetivos: compartir publicaciones, compartir imágenes, vender productos, proveer comunicación en tiempo real, entre otros. También son distintos en cuanto a comportamiento: en algunos casos hacer clic en un enlace gatilla una recarga del sitio, y en otros puede desplegar información inmediatamente. Además de lo anterior, puede que incluso se vean diferente según el dispositivo que estemos utilizando (computador, teléfono, tablet, etc).

Lo anterior es sólo una muestra de lo distinto que pueden ser los sitios web. Este hecho se relaciona con las distintas tecnologías que están involucradas en la World Wide Web (WWW).

La construcción de estos sitios o, en muchos casos, aplicaciones, requiere entender cómo funciona la Web y cuáles son las tecnologías disponibles para su desarrollo, para luego poder utilizarlas.

Objetivo

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.

Competencias

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.

Contenidos

  • Preliminares:
    • Pasado, presente y futuro de la Web
    • La Web como plataforma de desarrollo
    • Arquitectura de una aplicación web tradicional (modelo MVC)
    • Lenguajes y Frameworks para desarrollo web
  • Introducción a Node.js 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 web tradicional:
    • 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
    • Actualidad en desarrollo web

Metodología

A lo largo del semestre el profesor presentará los contenidos del curso, tanto de forma teórica como de forma práctica. A la vez, los estudiantes desarrollarán actividades y ejercicios propuestos para reforzar el aprendizaje. Por otra parte, trabajarán en equipos desarrollando una aplicación web 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, los estudiantes son evaluados por su grado de avance en el proyecto.

Los estudiantes deberán llevar a cabo un trabajo personal significativo, que involucra:

  • Lectura y estudio de aspectos específicos del lenguaje, del framework y/o de las diferentes tecnologías involucradas.
  • Lecturas y actividades complementarias que profundizan y amplían lo que se discute en clases.
  • Desarrollo del proyecto a lo largo del semestre.

Evaluación

Se llevará a cabo una interrogación a mitad de semestre, que cubre el material visto en clases hasta ese momento y lo asignado como lectura o estudio personal, más un examen final que cubre todo el material del semestre. Adicionalmente, la nota del examen puede reemplazar la nota de la interrogación, en caso de ser esta última menor o de no haberse rendido. En caso de inasistencia al examen, 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 la interrogación, el examen y el proyecto de la siguiente forma:

  • Nota Teórica: (I1 + 2 * Ex - min(I1, Ex)) / 2

  • 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 3.95, entonces es el promedio de ambas.
    • En caso contrario, la menor entre ambas
  • Fechas de evaluaciones:

Evaluación Fecha
I1 01 de octubre
Ex 14 de diciembre

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.

Bibliografía

  • JavaScript, Node.js
    • Haverbeke M. "Eloquent JavaScript, 3rd Ed.: A Modern Introduction to Programming" No Starch Press 2018
    • 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

Código de Honor

Este curso adscribe el Código de Honor firmado 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 (https://www.uc.cl/codigo-de-honor/). Puede encontrar más información en la plataforma Siding (Pregrado - Información general - Reglamentos - Integridad académica).

Proyectos

Pueden encontrar toda la información relacionada a los proyectos en la sección correspondiente.

Wiki

Tendremos mucha información útil en la Wiki del curso, la cual pueden encontrar en el menú superior o haciendo clic aquí.

Getting Started

En particular, les sugerimos revisar esta sección en la wiki antes de comenzar con su proyecto.

Foro

La página de Issues se utilizará como foro para preguntas.

Etiquetas

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 pregunta 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...).
  • Heroku: para preguntar sobre errores o dudas que pueden tener con Heroku y el deploy de su app.
  • Postgres: para preguntar sobre errores o dudas que pueden tener con el manejo de su base de datos.
  • Importante: issues con información importante que deben leer.

Procedimiento

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 😃.

About

Material e información del curso

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published