Update for the first year, it wasn’t quite weekly like mentioned in the last post ;). Because some time passed I’ll only give a short summary.
Coursers for the first semester:
- Web Application Development
- Advance Chapters of Neural Networks (I also followed Neural Networks the undergraduate course)
- Distributed Operating Systems (the website might be password protected but I have the [course description][sod-cd])
- Advanced Software Engineering Techniques
Courses for the second semester:
- Event-based systems
- Specification and verification of distributed systems
- [Pragmatical aspects related to cloud computing][https://www.qwiklabs.com/]
- Distributed and parallel programming
Web Application Development
Here my team’s final project took all the projects from Cloud Native Computing Foundation Landscape ) mapped it into an Ontology about distributed and CloudNative software projects and in combinations with schema.org we could have some smart queries in order to help a developer choose the best type of technology based on license, GitHub metrics, technologies used, etc … .
Advance Chapters of Neural Networks
Implemented successfully the MNIST dataset homework.
For the final project, we classified CIFRA10 dataset and we were graded based on our accuracy. The model was a convolutional neural network.
Distributed Operating Systems
The python wrapper for the last homework used numpy and pandas to plot graphs of the results.
For the second and third homework, we had to implement various operations for images (very similar to matrics operations), break the processing in multiple chings and schedule them on workers run with [OpenMP][openmp].
For the research part, I had a presentation about Lamport, L. (2006). Fast paxos. Distributed Computing, 19(2), 79-103.
Advanced Software Engineering Techniques
Our solution examines the running pattern of various functions running in Kubeless and predicts the load allowing us the possibility to scale up/down when needed.
Here the focus on all the types of event-based systems, we analyzed topic-based systems, content-based systems, how they are implemented and the pros and cons to all of them. We also analyzed various researched papers. Four the final project we have created a broker overlay over NATS that is a topic-based streaming platform) that implement content-based filtering: you specify the property of the content that you are interested in and the brokers will stream to you all the messages that match. The project is extremely experimental but is available here
My team also took a closer look at de Assuncao, M. D., da Silva Veith, A., & Buyya, R. (2018). Distributed data stream processing and edge computing: A survey on resource elasticity and future directions. Journal of Network and Computer Applications, 103, 1-17.
Specification and verification of distributed systems
This course was mostly based on theory and exercises and we looked at various semantics and mathematical(logics) models that can help us specify and check various properties of distributed systems.
For the practica side (except exercises) we looked at CPN Tools
Distributed and parallel programming
Here an overview of cloud paradigms and offerings was presented from a research perspective.
Our projects revolved around architecting distributed applications based on various other technologies (blockchain for example) that can implement highly sensitive tasks, we looked at how we can ensure using blockchain the fair use of data streams provided by IoT devices.
Pragmatical aspects related to cloud computing
This course was actually about AWS and it was presented by engineers working on the tools using qwiklabs. It presented various architectures used for creating cloud-native applications and how we can leverage tools from AWS.
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.
- Building consistent transactions with inconsistent replication
- A Brief History of Information-Centric Network
- Nakadi SQL engine
- Nakadi event broker
- Streaming Events for 100s of teams
- Notes on Distributed Systems for Young Bloods
- Distributed systems theory for the distributed systems engineer
- Pahl, C., & Lee, B. (2015, August). Containers and clusters for edge cloud architectures–a technology review. In 2015 3rd international conference on future internet of things and cloud (pp. 379-386). IEEE.
- Sonkoly, B., Czentye, J., Szabo, R., Jocha, D., Elek, J., Sahhaf, S., … & Risso, F. (2015). Multi-domain service orchestration over networks and clouds: a unified approach. ACM SIGCOMM Computer Communication Review, 45(4), 377-378.
- Practical Distributed Consensus using HashiCorp/raft
- Alpern, B., & Schneider, F. B. (1987). Recognizing safety and liveness. Distributed computing, 2(3), 117-126.
- Höfer, C. N., & Karagiannis, G. (2011). Cloud computing services: taxonomy and comparison. Journal of Internet Services and Applications, 2(2), 81-94.
- Van Renesse, Robbert & Guerraoui, Rachid. (2010). Replication Techniques for Availability. 5959. 19-40. 10.1007/978-3-642-11294-2_2.
- ACM Transactions on Computer Systems 16, 2 (May 1998), 133-169. Also appeared as SRC Research Report 49.
- A CRDT Primer Part I: Defanging Order Theory
- Armbrust, Michael & Fox, Armando & Griffith, Rean & Joseph, Anthony & Katz, Randy & Konwinski, Andy & Lee, Gunho & Patterson, David & Rabkin, Ariel & Stoica, Ion & Zaharia, Matei. (2010). A View of Cloud Computing. Commun. ACM. 53. 50-58. 10.1145/1721654.1721672.
- Attiya, H., & Welch, J. L. (1994). Sequential consistency versus linearizability. ACM Transactions on Computer Systems (TOCS), 12(2), 91-122.
- Gray, J., Helland, P., O’Neil, P., & Shasha, D. (1996). The dangers of replication and a solution. ACM SIGMOD Record, 25(2), 173-182.
- Schneider, F. B. (1990). Implementing fault-tolerant services using the state machine approach: A tutorial. ACM Computing Surveys (CSUR), 22(4), 299-319.
And I still need to get familiar with LaTeX