Four software projects I developed in university

3min read
Projects

January 20, 2018

A screenshot of Softhub source code

During my time in Computer Engineering University in Italy, I developed various kind of software projects as an assignment for the courses.

Softhub - Bachelor’s thesis

https://github.com/davcri/softhub

Softhub is a web application developed as a part of my bachelor’s thesis. The goal was to study and apply software engineering principles and open source best practices. I opted for an app store web app, a kind of software that, in a real case scenario, needs to be maintainable, flexible and scalable.

Building this kind of software project alone is a challenging task, so I needed great tools to work with: I picked up Python and the Django web framework because they both have a great documentation and enforce best practices as Don’t Repeat Yourself and MVC architectural pattern.

This helped me developing the web-app without reinventing the wheel for many use cases, so I spent time focusing on:

  • creating cohesive and decoupled Python classes using Object Oriented Analysis and Design (OOA and OOD) and GRASPs;

  • automating the installation and configuration (it’s important for open source projects), using Python virtualenv, Django custom admin commands and Bower.

    Probono appreciated this effort:

For who doesn’t know Probono, he is the developer of the great Appimage packaging format for Linux applications! I posted on their forum to offer my application to their open source community.

Unibox - Web development

https://github.com/davcri/Unibox-Ajax

Unibox was my first web development project. You can find a demo version online, but the user interface is avaliable only in Italian.

With this project we were not allowed to use frameworks or advanced libraries, so we had to develop all the software architecture from the ground up: mysql queries, PHP classes, templating system, and so on. Moreover I wanted to realize a single page web application.

It turned out that it was totally doable with JavaScript, jQuery and AJAX requests, but there were some issues that I was not aware of at that time: the most important are some security flaws that I needed to patch (yes I got hacked, but the hacker was very kind and reported the issue on Github!).

Pong UDP - Computer Networking

https://github.com/davcri/pong-clone

It seems the simplest game ever made, but believe me: it's really difficult to implement online multiplayer

Pong UDP is a simple game with a client/server multiplayer architecture developed with my dear friend Pasquale Salvati. For the (very basic) graphics we used libGDX Java game framework.

We designed a simple game network protocol to manually take care of packets validation and ordering at application level. We used UDP and JSON to implement it.

When you try to develop an online/multiplayer game once, you understand why experienced game developers say: “Pick whatever genre you like, but please don’t think about making a MMORPG as you first game”.

Pushup app - Personal summer project

https://github.com/davcri/Pushup-app

Pushup app it’s a simple Python desktop program that let’s you keep track of progress in a pushups.

I developed it to experiment with desktop applications and graphic toolkits. It uses Qt4, matplotlib, and sqlite.

Conclusions

The focus turned out to be mostly on web technologies, even if there were courses on Java, C++, C, Matlab and Arduino.

Working on all these projects was a nice learning experience, I’m eager to work on other projects with all the knowledge acquired during these years!

comments powered by Disqus