Curso online – especialización profesional certificada en programación paralela en Java por Google y Rice University

Mejore su experiencia en programación con paralelismo. Conozca los principios básicos de la programación concurrente, concurrente y distribuida.

Suggested by: Coursera (What is Coursera?)

Professional Certificate

nivel intermedio

No prior knowledge required

Time to complete the course

7-day free trial

No unnecessary risks

Skills you will acquire in the course

  • habilidades de comunicacion
  • gestión del tiempo
  • pensamiento crítico
  • trabajo en equipo
  • resolución de problemas
  • liderazgo
  • habilidades de presentación
  • Capacidad de aprendizaje independiente
  • gestión de proyectos
  • habilidades tecnológicas

What you will learn in the course

Courses for which the course is suitable

  • ingeniero de software
  • desarrollador de software
  • Desarrollador de sistemas paralelos
  • Desarrollador de sistemas distribuidos
  • Experto en programación multihilo
  • Desarrollador de aplicaciones en la nube
  • Desarrollador de soluciones biomédicas
  • Desarrollador de servicios financieros

Pasantía: una serie de cursos de 3 unidades.

  • La programación paralela, la programación concurrente y la programación distribuida forman la base del software en una variedad de campos, desde la investigación biomédica hasta los servicios financieros.
  • Esta especialización está dirigida a cualquier persona que tenga conocimientos básicos de programación serial en Java y esté interesado en aprender a escribir programas paralelos, concurrentes y distribuidos.
  • A través de una colección de tres cursos (que pueden estudiarse en cualquier orden o por separado), aprenderá temas básicos en el campo del paralelismo, la competitividad y la distribución.
  • Estos cursos lo prepararon para la programación multiproceso y la programación distribuida en una amplia variedad de plataformas informáticas, desde dispositivos móviles hasta servidores de computación en la nube.

Para ver un vídeo resumen sobre esta pasantía, haz clic aquí .

Para ver una entrevista con dos ingenieros de software que inician su carrera sobre la relevancia de la computación paralela para su trabajo, haga clic aquí .

gratitud

  • El instructor, Prof. Vivek Sarkar, quisiera agradecer al Dr. Max Grossman por sus contribuciones a los miniproyectos y al material del curso.
  • Dr. Zoran Budimlik por sus contribuciones a las preguntas del examinador.
  • Dr. Max Grossman y Dr. Shams Imam por sus contribuciones a la biblioteca pedagógica del PCDP utilizada en varios de los miniproyectos.
  • y a todos los miembros del equipo de Rice Online que contribuyeron al desarrollo del contenido del curso (incluidos Martin Kelby, Anthet Hawai, Seth Tiger y Chong Zhu).

Un proyecto de aprendizaje práctico.

  • Cada curso incluye miniproyectos que permitirán a los estudiantes adquirir experiencia práctica con las populares API de Java para programación paralela, concurrente y distribuida.
  • Los miniproyectos se tomaron de problemas del mundo real en una variedad de campos.

Details of the courses that make up the specialization

Programación paralela en Java

Curso 1

  • 19 horas
  • 4,6 (1.205 valoraciones)

Detalles del curso

¿Qué aprenderás?

Este curso enseña a los profesionales y estudiantes de la industria los conceptos fundamentales de la programación paralela en el contexto de Java 8. La programación paralela permite a los desarrolladores aprovechar las computadoras de múltiples núcleos para acelerar el rendimiento de las aplicaciones mediante el uso de múltiples procesadores simultáneamente. Al final del curso, sabrá cómo utilizar marcos de programación paralelos populares en Java (como ForkJoin, Stream y Phaser) para escribir programas paralelos para una amplia variedad de plataformas multinúcleo, incluidos servidores, computadoras de escritorio y dispositivos móviles. dispositivos, y también aprenderá sobre sus fundamentos teóricos, incluidos gráficos computacionales, paralelismo ideal, aceleración paralela, ley de Amadel, carreras de información y determinismo.

¿Por qué deberías realizar este curso?
  • Todas las computadoras son computadoras multinúcleo, por lo que es importante que aprendas a ampliar tus conocimientos de programación secuencial a Java.
  • Java 7 y Java 8 introdujeron nuevos marcos para la programación paralela (ForkJoin, Stream) que cambiaron significativamente los paradigmas de la programación paralela desde las primeras décadas de Java.
  • Cada uno de los cuatro módulos del curso tiene un proyecto naznachti en miniatura, que le brindará una experiencia práctica útil para aplicar los conceptos aprendidos una vez finalizado el curso.
  • Durante el curso necesitarás acceso en línea al profesor y a los mentores para recibir respuestas personalizadas a tus preguntas en los foros.
Los resultados de aprendizaje deseados del curso incluyen:
  • Teoría del paralelismo: gráficas computacionales, trabajo, rango, paralelismo ideal, aceleración paralela, ley de Amadel, carreras de información y determinismo.
  • Paralelismo de tareas con el marco ForkJoin de Java
  • Simultaneidad funcional utilizando los marcos Future y Stream de Java
  • Paralelismo a nivel de bucle con extensiones para barreras y agrupación de iteraciones (fragmentación)
  • Paralelismo del flujo de datos utilizando el marco Phaser y tareas basadas en datos

Dominar estos conceptos le permitirá aplicarlos inmediatamente en el contexto de programas Java multinúcleo y también le proporcionará la base para dominar otros sistemas de programación paralelos de los que se beneficiará en el futuro (como C++11, OpenMP, Biblioteca paralela de tareas .Net).

habilidades que adquirirás
  • Categoría: flujo de datos
  • Categoría: programación paralela
  • Categoría: Metodología Java

Programación sincronizada en Java

Curso 2

  • 18 horas
  • 4,5 (655 valoraciones)

Detalles del curso

¿Qué aprenderás?

Este curso enseña a estudiantes y profesionales de la industria los conceptos fundamentales de la programación sincronizada en el contexto de Java 8. La programación sincronizada permite a los desarrolladores gestionar de manera eficiente y correcta el uso de recursos compartidos en programas paralelos. Al finalizar el curso sabrás utilizar estructuras básicas de sincronización en Java como procesos (Threads), bloqueos, partes críticas, variables atómicas, aislamiento, modelos de actores, sincronización optimista y colecciones sincronizadas, así como sus fundamentos teóricos. (como garantías de progreso, Deadlock, Livelock, inanición y linealización).

¿Por qué deberías realizar este curso?
  • Es importante conocer los fundamentos teóricos de la sincronización para evitar errores de programación comunes pero sutiles.
  • Java 8 ha actualizado la mayoría de las estructuras de sincronización desde los primeros días de procesos y bloqueos.
  • Durante el curso necesitarás acceso en línea al profesor y a los mentores para recibir respuestas personalizadas a tus preguntas en los foros.
  • Cada uno de los cuatro módulos del curso tiene un proyecto naznachti en miniatura, que le brindará una experiencia práctica útil para aplicar los conceptos aprendidos una vez finalizado el curso.
Los resultados de aprendizaje deseados del curso incluyen:
  • Teoría de la sincronización: garantías de progreso, punto muerto, bloqueo en vivo, inanición, linealización
  • Uso de procesos y bloqueos en una configuración ordenada/desordenada en Java
  • Variables atómicas y aislamiento.
  • Sincronización optimista y colecciones sincronizadas en Java (como colas sincronizadas, Hashmaps sincronizados)
  • Modelo de reproductor en Java

Dominar estos conceptos le permitirá aplicarlos inmediatamente en el contexto de programas Java sincronizados y le ayudará a dominar otros sistemas de programación sincronizados de los que se beneficiará en el futuro (como subprocesos POSIX, subprocesos .NET).

habilidades que adquirirás
  • categoría: Sincronización (Ciencias de la Computación)
  • Categoría: Modelo de jugador
  • Categoría: Control de sincronización optimista
  • Categoría: Programación sincronizada

Programación distribuida en Java

Curso 3

  • 17 horas
  • 4,5 (489 valoraciones)

Detalles del curso

¿Qué aprenderás?

Este curso enseña a estudiantes y profesionales de la industria los conceptos fundamentales de la programación distribuida en el contexto de Java 8. La programación distribuida permite a los desarrolladores utilizar múltiples nodos en un centro de datos para aumentar el rendimiento y reducir la latencia de las aplicaciones seleccionadas. Al final del curso, sabrá cómo utilizar marcos de programación distribuidos populares para programas Java, incluidos Hadoop, Spark, Sockets, Remote Method Invocation (RMI), Multicast Sockets, Kafka, Message Passing Interface (MPI), así como varios enfoques para combinar la distribución del trabajo y los procesos de multiprogramación.

¿Por qué deberías realizar este curso?
  • Todos los servidores de los centros de datos están organizados como conjuntos de servidores distribuidos y también es importante aprender a utilizar varios servidores para aumentar el ancho de banda y reducir la latencia.
  • Además de aprender marcos específicos para la programación distribuida, el curso le enseñará cómo combinar el paralelismo multinúcleo y la programación distribuida en un enfoque unificado.
  • Cada uno de los cuatro módulos del curso tiene un proyecto naznachti en miniatura, que le brindará una experiencia práctica útil para aplicar los conceptos aprendidos una vez finalizado el curso.
  • Durante el curso necesitarás acceso en línea al profesor y a los mentores para recibir respuestas personalizadas a tus preguntas en los foros.
Los resultados de aprendizaje deseados del curso incluyen:
  • Programación distribuida Map-Reduce en Java usando los frameworks Hadoop y Spark
  • Programación cliente-servidor utilizando las interfaces de invocación de método remoto (RMI) y socket de Java
  • Programación para el paso de mensajes con la ayuda de Message Passing Interface (MPI) en Java
  • Enfoques para combinar la distribución del trabajo con la programación multiproceso, incluidos procesos y procesos, actores distribuidos y programación reactiva.

Dominar estos conceptos le permitirá aplicarlos inmediatamente en el contexto de programas Java distribuidos y también le proporcionará la base para dominar otros sistemas de programación distribuidos que encontrará en el futuro (como Scala o C++).

habilidades que adquirirás
  • categoría: Programación distribuida
  • Categoría: Modelo de jugador
  • Categoría: programación paralela
  • Categoría: programación reactiva