October 28, 2018

Masters Degree week#1 - week#4

In this series of posts, I’ll try to keep a weekly summary of my progress in my master’s degree. If somebody finds this on the internet, I just started a master’s degree that focuses on distributed systems at Faculty Of Computer Science(part of University Alexandu Ioan Cuza).

In my first semester I’ll have the following courses:

I was able to select the courses on my own (not follow a predefined curriculum) but an extra research component was added to my degree. At the end of each semester, I’ll have to present what research journey and a comity will decide if I passed, and can continue with my degree, or I failed and have to switch to a normal master’s degree (with a predefined curriculum). My research focus will be on distributed systems and as part of my first semester, I’ll try and grasp as much of the available literature as possible to come with a specific “thing” that I can focus my efforts on (besides the normal courses).

I’ll try and keep a weekly update (maybe it will be useful for my coordinators or me when I have to present my progress), but as the semester started four weeks ago this update will contain the current status of my studies.

Web Application Development

For this course, we will have to complete a project, from the proposed one I already chose DiSyO, the project will be done in a team (I already paired with another two students). Not many updates on this course, we will have to start work for the project. Until now the course had a “fast-paced” recap of the Web Systems Development undergraduate course, but we are starting to move into the semantics web part of the course.

Advance Chapters of Neural Networks

I already had the first homework (from the undergraduate course) in which we need to implement and train 10 perceptions that recognize the numbers from the MNIST dataset.

For the second homework we need to implement a neural network that can recognize the numbers and train it using gradient descent, it also must use softmax at the last layer and cross-entropy as the cost function. The weights should be initialized properly also. Unfortunately, I could not find the implementation from the last year, everything is for the best as I also need to work shroud the details again for this course.

Distributed Operating Systems

I started work on the first homework that has two components:

  • multiply two matrices in C and use OpenMP to parallelize the work in multiple manners (parallelize one for, all of them, variate the number of threads, etc …)
  • run multiple experiments and graph how the performance is impacted by the implementation and configuration, for example:
    • variate the number of threads
    • variate the number of cores on the host machine
    • what is the impact of containerization
    • what is the impact of vitalization
    • how various styles of parallelization of the code perform

The program is already written (with 6+1 methods of parallelization, basically parallelize of nor each one of the 3 for instruction involved in a matrix multiplication). Next week I’ll have to write a python wrapper that will feed various parameters and restriction to our C implementation and record the running time (and probably plot it).

Advanced Software Engineering Techniques

For this course, we have to implement a project that we decide on in a team (also here I already got two colleges). We decided to analyze the scalability of a multi-cloud function as a service (we might use as a base Kubeless). The two partners for this project are focused on Data Science and Machine Learning and my focus will be on the infrastructure and Function as a service part (I already have experience with AWS, OpenStack, Terraform and Kubernetes and I can do most of the work on this part).


In this category I’ll put the progress on the research side, articles I read/plan to read and what I’m trying to understand at the moment.

Done Reading/Viewing
Future Work

I want to get familiar with LaTex again (I used it in my undergraduate studies a bit but I need to re-learn it) and also read Alpern, B., & Schneider, F. B. (1987). Recognizing safety and liveness. Distributed computing, 2(3), 117-126.

Unfortunately, I had to make my homework repository private (there were some incidents where somebody presented my work) and I can’t link the work now, but I will think if I can make it public again or start another one with only the work from my master degree.