Estas listo para ¿Avanza tu carrera?

Nuestro programa se especializa en las áreas de sistemas de software y desarrollo de software utilizando OOP (Java) y aplicaciones web, junto con algunos cursos de ciencia de datos. Las áreas centrales de estudio incluyen: desarrollo avanzado de software, programación y arquitectura de aplicaciones web, algunos cursos de ciencia de datos y varias áreas importantes de aplicación.

Todos los cursos están diseñados para ayudarlo a avanzar en su carrera y cada curso contiene tareas prácticas. Ver requisitos de graduación.

Cursos de ciencia de datos

Cursos básicos estándar

  • Este curso presenta los principios fundamentales de la programación orientada a objetos. Los estudiantes aprenderán cómo escribir software reutilizable y mejor mantenido, e integrarán este conocimiento con tareas y proyectos de laboratorio. Los temas incluyen: principios fundamentales y modelos de programación orientada a objetos, diagramas de clase UML y principios de diseño que promueven la reutilización y la capacidad de mantenimiento del software. (Unidades 4)

  • Este curso considera los métodos y prácticas actuales para un buen diseño de los sistemas de software. Los temas incluyen: patrones de diseño de software, marcos, arquitecturas y sistemas de diseño para aplicar estas abstracciones de múltiples niveles. (Créditos de 2-4) Requisito previo: CS 401 o consentimiento del profesorado del departamento.

  • Este curso presenta métodos para analizar la eficiencia de los algoritmos (incluidos los análisis de caso más desfavorable y promedio) e introduce una variedad de algoritmos conocidos y altamente eficientes. El análisis, diseño e implementación de algoritmos reciben igual énfasis. Los temas incluyen la búsqueda y clasificación, la eficiencia de las operaciones en las estructuras de datos (incluidas listas, tablas hash, árboles de búsqueda binaria balanceada, colas de prioridad), algoritmos de grafos, algoritmos combinatorios, relaciones de recurrencia, programación dinámica, problemas NP-completos y algunos temas especiales como el tiempo. permite. (Los temas especiales incluyen geometría computacional, algoritmos para sistemas criptográficos, aproximación, Big Data y computación paralela).

  • Este curso se centra en la enseñanza de los principios y prácticas utilizados al desarrollar aplicaciones empresariales a gran escala. Examinaremos las diferentes capas arquitectónicas que se usan con frecuencia y las diferentes tecnologías asociadas con estas capas, incluyendo el Mapeo Relacional de Objetos (ORM), la Inyección de Dependencias (DI), la Programación Orientada a Aspectos (AOP) y la integración con otras aplicaciones a través de Servicios Web (RESTfull y SOAP), Mensajería y invocación de método remoto. Debe tener un conocimiento práctico de bases de datos relacionales y SQL. Si no tiene un curso sólido o un buen conocimiento práctico de SQL, debe inscribirse en CS422 DBMS antes de inscribirse en EA. (Unidades 4)

  • Ingeniería de software es un curso que presenta al estudiante las mejores prácticas en el desarrollo de software a través de una metodología de desarrollo de software. Los estudiantes ya han tenido algo de experiencia en cursos anteriores con el paradigma Orientado a objetos y han usado algunos de los diagramas UML básicos para modelar las relaciones entre objetos de software. En Ingeniería de Software, el estudiante desarrollará habilidades para juntar estas herramientas para producir un software robusto y fácil de mantener. Una metodología de desarrollo de software describe cuándo y cómo deben utilizarse los conceptos OO y los diagramas UML para lograr el objetivo de crear software de calidad. El curso se centra en un pequeño proyecto en el que se pueden ilustrar y aplicar los principios discutidos en el formato de la conferencia. Al final del curso, el estudiante tendrá una aplicación en ejecución, construida de acuerdo con los altos estándares de la metodología de desarrollo RUP (Rational Unified Process).

  • Este curso enfoca las aplicaciones web en un entorno empresarial. Una aplicación empresarial es un gran sistema de software diseñado para operar en una organización grande como una corporación o un gobierno. Las aplicaciones empresariales son complejas, escalables, basadas en componentes, distribuidas y de misión crítica. Este curso, CS545, se enfoca en la parte frontal o la capa de presentación de una aplicación web empresarial. CS544 Enterprise Architecture es un curso complementario que se centra en el back-end o la capa empresarial, incluida la lógica de negocios, las transacciones y la persistencia. CS472, Programación de aplicaciones web, es un curso de requisito previo que cubre HTML, CSS, JavaScript, servlets y JSP.

    El curso enseña principios y patrones que son generales a través de plataformas y marcos. El curso examinará y trabajará con los dos marcos web de Java predominantes, Java Server Faces (JSF) y SpringMVC. JSF es un marco basado en componentes y es la especificación oficial del marco de presentación para la pila de tecnología Java Enterprise Edition. SpringMVC forma parte del marco Core Spring y se ha convertido en el marco web de Java más utilizado en los últimos años. (Unidades 4) Requisito previo: CS 472 o consentimiento de la facultad del departamento.

  • Este curso proporciona una introducción sistemática a la programación de aplicaciones web interactivas y dinámicas. El curso está dirigido a personas con poca o ninguna experiencia previa en programación de aplicaciones web. Esta oferta utilizará servlets Java y JSP para el procesamiento del lado del servidor. El curso introducirá HTML y CSS. JavaScript es un tema central del curso y se trata como un lenguaje de programación funcional que incluye módulos y espacios de nombres jQuery, Ajax y JavaScript. Es un requisito previo para la arquitectura de aplicaciones web CS545. No cubre AngularJS o NodeJS, pero el JavaScript que se cubre aquí lo preparará para aprender esas tecnologías. (4 unidades)
    Requisito previo: CS 220 o CS 401 o consentimiento de la facultad del departamento.

  • Su primer curso está diseñado específicamente para establecer las bases de cómo puede convertirse en un profesional de la informática de alto rendimiento. El curso tiene sus raíces en la práctica de la Meditación Trascendental que conduce a la realización de su verdadero potencial. Aprenderá acerca de los beneficios de la MT, incluida la capacidad de resolver problemas complejos mediante un funcionamiento mental superior que mejora la creatividad y el pensamiento "listo para usar". El curso se centrará en los principios que sustentan el rendimiento máximo en la actividad mediante el desarrollo de una combinación óptima de descanso y actividad. Desarrollará y experimentará una rutina diaria ideal que respalda el éxito en la vida. (2 unidades)

  • El objetivo de este curso es proporcionar a los estudiantes conocimientos y habilidades en liderazgo, incluidas las habilidades de comunicación como preparación para futuros roles de liderazgo.

    Al final de este curso, los estudiantes comprenderán las respuestas a las preguntas clave sobre el liderazgo efectivo, que incluyen lo siguiente:

    ¿Hay líderes 'naturales'?

    ¿Tienes que tener carisma para liderar efectivamente?

    ¿Qué un activo se requiere para ser un líder?

    ¿Cuál es la diferencia entre administrar y liderar?

    ¿Cuáles son las muchas 'inteligencias' requeridas para liderar en esta era?

    ¿Qué es la 'mala práctica de la gerencia' y cómo conduce al auto-sabotaje?

    Sabiendo que la retroalimentación es esencial para el proceso de liderazgo, ¿cómo podemos superar el temor de darlo y recibirlo?

    ¿Cuál es la fuente del 80% de los problemas encontrados en el lugar de trabajo?

    ¿Existe investigación científica disponible para ayudar a la organización a mejorar sus habilidades de liderazgo individual y de equipo?

    Los oradores invitados incluirán eminentes empresarios, científicos de la computación, filántropos, académicos y otros líderes prominentes en la sociedad.

    (unidades 2)

Cursos adicionales de MSCS

  • Este curso considera temas avanzados en diseño de lenguaje de programación con énfasis en métodos formales y mecanismos de abstracción. Los temas incluyen datos y abstracción de control, especificación formal de sintaxis y semántica, pruebas de corrección del programa, programación no determinista, estructuras de control avanzado y estudio de lenguajes específicos. (Unidades 4) Requisito previo: CS 401 o consentimiento de la facultad del departamento.

  • El procesamiento moderno de la información está definido por vastos repositorios de datos que no pueden ser manejados por los sistemas de bases de datos tradicionales. Este curso cubre la última tecnología desarrollada y utilizada por los líderes de la industria para resolver este problema de la manera más eficiente. Los temas específicos cubiertos incluyen los algoritmos MapReduce, los patrones de diseño del algoritmo MapReduce, HDFS, la arquitectura de clúster Hadoop, YARN, las frecuencias relativas de computación, la clasificación secundaria, el rastreo web, los índices invertidos y la compresión de índices, los algoritmos Spark y Scala. (Unidades 4) Requisito previo: Algoritmos CS 435.

  • Big Data es el nuevo recurso natural: los datos se duplican cada mes 12-18. Este nuevo curso de análisis de Big Data cubre los conceptos y herramientas fundamentales para extraer grandes conjuntos de datos diversos para generar nuevos conocimientos. Dominarás el uso del lenguaje R para crear Wordcloud, Pagerank, Visualización de datos, Árboles de decisión, Regresión, Agrupación, Redes neuronales y más. Trabajará con algunos grandes conjuntos de datos de registro multimillonario, y también extraerá feeds de Twitter. Aprenderá los conceptos de Hadoop / MapReduce y Streaming Data, y explorará otros proyectos de Big Data de Apache, tales como Spark, Flink, Kafka, Storm, Samza, NoSQL a través de trabajos de investigación individuales. Trabajará en grupos en proyectos abiertos de Kaggle.com para competir por el premio en efectivo al resolver los mejores desafíos analíticos de datos. También aprenderá a usar IBM SPSS Modeler, líder en la industria, y plataformas de minería de datos de código abierto. El libro de texto del bestseller #1 utilizado en este curso está escrito por el propio instructor. El curso también utilizará una amplia gama de materiales de capacitación en video de MIT, Coursera, Google y otros lugares. (Unidades 4) Requisito previo: Consentimiento de la facultad del departamento

  • En solo unos pocos años, las tecnologías de big data han pasado del ámbito de la moda a uno de los componentes centrales de la nueva era digital. Estas tecnologías son muy útiles para transformar la información en conocimiento.

    El objetivo del curso es agregar algunas herramientas realmente importantes a su arsenal para ayudarlo a resolver varios problemas de big data. Comenzaremos dando respuestas a preguntas como “¿Qué es Big Data? ¿Por qué es importante o útil? ¿Cómo se almacenan estos macrodatos? " Luego, estudiaremos diferentes herramientas y modelos de programación de la pila de tecnología de big data que nos ayudarán a analizar los datos. Los temas incluyen algunos de los proyectos en el ecosistema de Hadoop como MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper y proyectos de ecosistema de Apache Spark. También cubriremos una introducción a AWS y EMR. Trabajará principalmente con una distribución Hadoop de un solo nodo de Cloudera. (4 unidades) (Sin requisitos previos)

  • El objetivo de este curso es aprender los conceptos, los principios de la arquitectura y la terminología de las redes de computadoras explorando cómo funcionan las redes y desarrollando aplicaciones de red. Este curso sigue el enfoque de arriba hacia abajo para comprender las redes utilizando la arquitectura y los protocolos de Internet como el ejemplo principal de una implementación de los principios de la red. Comenzamos en la capa de aplicación y continuamos a través de la capa de transporte, la capa de red, la capa de enlace y la capa física de las redes informáticas. Los estudiantes desarrollan varias aplicaciones de red y completan varios laboratorios diseñados para rastrear y comprender los protocolos de red predominantes que se utilizan en Internet. (4 unidades) Requisito previo: CS 401 o consentimiento del cuerpo docente del departamento.

  • Este curso profundiza en los tres aspectos de la seguridad informática: confidencialidad, integridad y disponibilidad. Se estudian varios modelos de políticas de seguridad confidenciales e integridad. Se examina el papel de la criptografía para garantizar la confidencialidad y la integridad. Otros temas incluyen autenticación, auditoría, pruebas de penetración, vulnerabilidades comunes y detección de intrusos. El curso concluye con el estudio de caso de un sistema seguro realista. Se les pedirá a los estudiantes que lean los artículos de la literatura de seguridad y los apliquen al material dado en las conferencias. (Créditos 4) Requisito previo: CS 401 o consentimiento del profesorado del departamento.

  • Los sistemas de bases de datos organizan y recuperan información, lo que permite al usuario acceder a la información deseada de manera fácil y eficiente. Los temas incluyen: modelo de datos relacionales; SQL; Modelado ER; álgebra relacional; normalización de datos; actas; objetos en la base de datos; seguridad e integridad de los datos; almacenamiento de datos, OLAP y minería de datos; bases de datos distribuidas; y estudio de un sistema de base de datos comercial específico. (Unidades 4) Requisito previo: CS 401 o consentimiento de la facultad del departamento.

  • El aprendizaje automático, el campo de estudio que brinda a las computadoras la capacidad de aprender de los datos, está en el corazón de casi todas las disciplinas científicas, y el estudio de la generalización (es decir, la predicción) a partir de los datos es el tema central del aprendizaje automático. Este curso brinda una introducción a nivel de posgrado al aprendizaje automático y una cobertura en profundidad de métodos nuevos y avanzados en el aprendizaje automático, así como su teoría subyacente. Enfatiza enfoques con relevancia práctica y analiza una serie de aplicaciones recientes del aprendizaje automático, como la minería de datos (en Big Data / ciencia de datos, análisis de datos), procesamiento de lenguaje natural, visión por computadora, robótica, bioinformática y procesamiento de datos de texto y web. El aprendizaje automático se utiliza en diversas industrias, incluidas las de servicios financieros, petróleo y gas, atención médica, marketing y publicidad, gobierno, Internet e Internet de las cosas.

    Este curso cubre una variedad de paradigmas de aprendizaje, algoritmos, resultados teóricos y aplicaciones. Utiliza conceptos básicos de inteligencia artificial, teoría de la información, estadística y teoría de control en la medida en que sean relevantes para el aprendizaje automático. Los temas incluyen: aprendizaje supervisado (aprendizaje generativo / discriminativo, aprendizaje paramétrico / no paramétrico, redes neuronales, máquinas de vectores de apoyo, árbol de decisiones, aprendizaje y optimización bayesianos); aprendizaje no supervisado (agrupamiento, reducción de dimensionalidad, métodos de kernel); teoría del aprendizaje (compensaciones de sesgo / varianza; teoría de VC; márgenes grandes); aprendizaje por refuerzo y control adaptativo. Otros temas incluyen HMM (modelo oculto de Markov), computación evolutiva, aprendizaje profundo (con redes neuronales) y el diseño de algoritmos cuyo rendimiento se puede analizar rigurosamente para detectar problemas fundamentales de aprendizaje automático.

    Una parte importante del curso es un proyecto grupal. Las principales herramientas de código abierto utilizadas para el aprendizaje automático paralelo, distribuido y escalable se cubrirán brevemente para ayudar a los estudiantes a realizar los proyectos. (Unidades 4) Prerrequisito: Ninguno.

  • La importancia de la programación de dispositivos móviles ha emergido en los últimos años como un nuevo dominio en el desarrollo de software. Este curso prepara a los estudiantes para desarrollar aplicaciones que se ejecutan en dispositivos móviles como un teléfono IPhone, iPad o Android. Este es un mercado en rápido desarrollo. El curso se enfoca en instalar, desarrollar, probar y distribuir aplicaciones móviles. Al final de este curso, los estudiantes pueden desarrollar una aplicación para las plataformas cubiertas, simularlas, probarlas en el dispositivo real y, finalmente, publicarlas en la tienda de aplicaciones para que estén disponibles para los usuarios. (Unidades 4) Requisito previo: CS472 o consentimiento de la facultad del departamento.

  • En este curso, aprenderá la Arquitectura de programación reactiva de SPA (aplicaciones web de una sola página) junto con todas las habilidades necesarias para crear una aplicación web moderna completa. Las tecnologías incluyen: NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase y bases de datos NoSQL (MongoDB). El curso abarcará:

    • Cómo funcionan el motor de C ++ V8 y el código asíncrono en el bucle de eventos Nodo y Nodo.
    • Cómo estructurar su código para reutilizarlo y crear una API Restful usando módulos y ExpressJS.
    • Cómo funcionan las bases de datos NoSQL: Mongo Shell, marco de agregación, conjuntos de réplicas, agrupación en clústeres, fragmentos, ORM de mangosta.
    • Comprensión profunda de cómo funciona Angular (respaldado por Google), detección de cambios, programación de RxJ reactivos con observables y sujetos, The Shadow DOM, zonas, módulos y componentes, directivas y tuberías personalizadas, inyección de dependencias y servicios, compilador angular, compilación de JIT y AOF , Formularios (controlados por plantillas y controlados por datos), enlace de datos, enrutamiento, protecciones y protección de rutas, cliente HTTP, autenticación de token web JWT JSON.

    (unidades 4)

  • Un sistema operativo controla los recursos centrales del sistema informático y los asigna a usuarios individuales. Los temas del curso incluyen procesos secuenciales y concurrentes, exclusión mutua, uso compartido de recursos, cooperación de procesos, interbloqueo, asignación de recursos, programación de procesadores, administración de memoria, algoritmos de segmentación y paginación, sistemas de tiempo compartido, algoritmos de programación y protección de recursos. (4 unidades) Requisito previo: CS 401 o consentimiento del cuerpo docente del departamento.

  • El procesador estándar para todas las computadoras nuevas ahora es un procesador de múltiples núcleos, que tiene el potencial de ejecutar programas mucho más rápidamente. Sin embargo, para utilizar este potencial, un programador debe tener algún conocimiento de las técnicas de programación paralela. Durante este curso, los estudiantes pasarán la mayor parte del tiempo escribiendo y depurando programas paralelos. El resultado esperado será desarrollar un nuevo nivel de habilidad de programación práctica. Esta habilidad no solo será útil para la programación de procesadores de múltiples núcleos, sino también para la programación de sistemas operativos y la programación de bases de datos distribuidas. Las herramientas de software utilizadas durante este curso incluyen Microsoft Visual C / C ++, la biblioteca de subprocesos múltiples de Java y el estándar de subprocesos OpenMP. (Unidades 4) Requisito previo: Conocimiento de la programación de computadoras utilizando Java, C o C ++.

  • En este curso veremos las técnicas, los principios y los patrones de cómo diseñar sistemas de software flexibles, escalables, comprobables y resistentes mediante microservicios. Estudiaremos cómo podemos dividir las aplicaciones grandes en microservicios más pequeños que son más fáciles de construir y otras ventajas en comparación con las aplicaciones empresariales monolíticas. Una arquitectura de microservicio distribuida también presenta muchos desafíos. Estudiaremos estos retos y cómo abordarlos. Los temas de este curso son estilos arquitectónicos, técnicas y patrones de integración, diseño impulsado por dominio, arquitectura dirigida por eventos y programación reactiva. (Créditos 4). (No hay requisitos previos)

  • En este curso de práctica, los estudiantes realizan tareas relacionadas con la informática en un puesto técnico profesional. Las tareas realizadas pueden ser en el diseño y desarrollo de nuevos sistemas o la aplicación de sistemas existentes para propósitos específicos. Las descripciones de los puestos de práctica son formuladas por el empleador y el estudiante, y requieren la aprobación previa de uno de los profesores graduados del departamento, en consulta con el supervisor de prácticas donde se ubica al estudiante. (Este curso es principalmente para estudiantes en pasantías o programas cooperativos.) (0.5-1 unidad por bloque - puede repetirse).

“La primera vez que escuché sobre el programa MSCS, lo dudé. No podía creer que existiera algo así. Pero un día, un amigo mío se unió al programa. Fue entonces cuando confirmé que es real. Luego reanudé mi proceso de solicitud. ¡Bien! Es verdad, estoy aquí, he completado el programa y estoy muy feliz ”.