Les vengo a dejar mi experiencia cursando esta materia "Implementación de Arquitecturas de Software Concurrente" electiva de 5to y también mi resumen, TP y parcial.
Qué se ve en esta materia
La materia toca muchos temas de SO y básicamente se ve cómo distintos lenguajes de programación (o paradigmas) manejan la concurrencia. Algunos de los temas principales son: hilos, GIL, corrutinas, callbacks, la diferencia entre concurrencia y paralelismo, el event loop de javascript, promises, contextos de ejecución, sistemas distribuídos, CAP, etc. Los lenguajes que se ven son: Ruby (Ruby MRI y jRuby), Python (para corrutinas), Javascript y Elixir. Es decir, lo que vemos en la materia es básicamente cómo funcionan estos lenguajes por detrás al momento de manejar concurrencia y eso te permite entender las ventajas o limitaciones de cada uno.
Modalidad de cursada
Se cursa los días jueves de 19 hs a 22:30 hs. Las clases teóricas se dan en forma virtual por zoom (sin cámara y tampoco toma lista ni hace preguntas dirigidas) pero las clases prácticas y el parcial son en el laboratorio de Medrano.
Parcial, TP cuatrimestral y prácticas
- Parcial: es un sólo parcial y es en papel. Está dividido en dos partes: una parte teórica y otra práctica y cada una vale 5 puntos. La parte teórica son 10 preguntas V o F a justificar (bien dentro de todo, son todas cosas que se dieron en clase) y en la parte práctica te dan un escenario a resolver -tipo el tp grupal pero mucho más acotado- y tenés que plantear cómo lo resolverías y por qué usaste tal lenguaje para resolverlo (aunque la consigna decía "Resolverlo con el paradigma de actores", o sea Elixir, dijeron que en verdad podías hacerlo como querías. Igual para mi estaba altamente orientado a que lo resuelvas con elixir como el tp
.gif)
pero vaya uno a saber si lo cambian). Por lo que escuché, el recuperatorio es oral y te hacen preguntas sobre lo que hiciste mal en el parcial pero tranqui.
- TP cuatrimestral: dejo acá mi
TP y la
consigna. La verdad es que me pareció un tp un poco pesado (también en mi grupo éramos 3 y el TP estaba pensado para 5). Si leen la consigna capaz no les parece tan complejo pero justamente ahí está el tema: hacer que la aplicación funcione bien en un nodo fue medianamente fácil. Lo complejo fue hacer que la aplicación corriera distribuída en 2 nodos... y una vez que lográs eso tenés que empezar a matar a los nodos y lograr que la aplicación siga en pie. Básicamente quieren que apliques conceptos de sistemas distribuídos, teorema de CAP, replicación de datos, tolerancia a fallos, etc. O sea buscan un tp bastante robusto. Igual me parece que el TP está re bueno y terminás aprendiendo un montón pero también vas a querer revolear el teclado por la ventana varias veces. Y no lo aclaré pero hay un par de checkpoints y la presentación final fue por discord en la última fecha de final (aunque lo podías presentar antes).
- Prácticas en Medrano: de cada unidad que se ve hay una práctica presencial en Medrano que la hacés con tu grupo de TP. Te sugieren instalarte una vm que ya tiene todo instalado pero yo nunca la pude correr así que para hacer cada práctica lleve mi compu con todo instalado antes de la clase. Las consignas están en su
página web y en su
github y recomiendo darles una mirada antes de la clase. Estas prácticas no se entregan ni nada pero te ponen una nota conceptual (solamente pasan por los grupos para ver qué están haciendo y darles una mano si están trabados con algo). Es tranqui, no buscan evaluarte ahí, es más un buen momento para sacarte dudas.
Opinión personal de la materia
La materia es muy técnica, no bullshit y lo opuesto a ladri. Te diría que le des una mirada al resumen y te fijes si te interesan los temas que se ven. No importa si sabés o no los lenguajes, eso es lo de menos, yo tampoco sabía ni Ruby ni Elixir.
Con respecto a la cursada, se nota que los profes son capos pero capaz su forma de enseñar no se alinea completamente con mi forma de aprender, entonces en algunas clases me costó seguirlos.
Lo que pasa es que la clase se da toda con código. O sea, te muestran un pedazo de código y lo corren y el resultado es A y después te muestran otra implementación y con esa el resultado es B y con otra el resultado vuelve a ser A y así. Y la idea es entender qué está pasando en cada caso. Y PARA MI es muy fácil perderse así mirando ejemplo tras ejemplo en un lenguaje que capaz ni idea tenés y que recién al final de todo te expliquen qué está pasando por detrás. Creo que si sumaran algún elemento más visual como un dibujito en paint o lucidchart podría llegar a sumar un montón para ciertos temas
.gif)
Igual a mi en particular me gustó mucho la materia y me llevo muy buenos aprendizajes. Se nota que los profes son cracks y banco mucho que lo único que les importa es que aprendas. No le buscan el pelo al huevo ni están en esas de querer cagarte (como en SdG), todo lo contrario. Por ejemplo en los checkpoints, mientras vean que de tu lado intentaste hacer algo, lo que no te salió te lo van a explicar y listo. No te hacen problema.
Dicho esto, les dejo mi resumen y lo que me acuerdo del parcial