University - Extra-Curricular Awards

The Extra-Curricular Award is an award given for attending five different activities (some had been split into parts), for at least a total of 30 hours (10 hours having to be interdisciplinary, outside my course).

I had been awarded this within my first year, although found myself attending some of the same activities in my second year, preparing myself for third year units, which gave me a total of over 100 hours of logged award activities (not including the three activities I have ran, Futures Friday challenge for the Computing Society, and also the Hackathons that counted towards a maximum of 10 hours each).

Intro to Android Programming

Hours: 10hrs

This was the first activity I had attended and introduced us to creating Android Apps in Android Studio, this would provide useful in second year since the tasks we did in this award activity, were lab tasks to help us produce the first assignment.

When it came to my second year assignment I could easily go back to the MMUCheeseApp I produced and quickly remember how I created an app with a list view, then from there implement the features that would lead me to gain 100% for that particular assignment.

This "Cheese App" was one of two Android Apps we produced for the award, but the other was a calculator, pretty simple but did introduce us to different layout types, as well as being further practice for learning to create an app (which I have also put on my GitHub).

C++ Programming: Intro

Hours: 9hrs (19hrs)

Being quiet a low level language, in the first part of this activity we initially learned how C++ has header files and how the general language works, this as demonstrated by producing a command line application which used randomness to calculate PI (being on my GitHub).

From there the next two labs were dedicated to using C++ in a games aspect, due to the lecturer teaching this activity being a tutor for games, but also for how prevalent it is used within the gaming industry.

Luckily he did supply us with some base code to work on, which I cloned and pushed to GitHub once I finished my modifications in the activities, although from this I have understood that I prefer higher level languages (not having to necessarily deal with memory pointers as well, which I learned in my Algorithms unit using C++).

Building 3D Models

Hours: 3hrs (22hrs)

This activity simply introduced us to the complex program that is Maya, we were taught how to interact with the environment, morph shapes and render them with lighting, below is one of the renders I produced after only under three hours of using Maya for the first time.

Wine Glass Render

Web Mapping: Intro

Hours: 3hrs (25hrs)


Internet of Things: Building Smart Environments

Hours: 10hrs (35hrs)

In this activity we focused on devices such as sensors that can be used for IoT, particularly being Phidget (brand) devices (servos, RFID, etc), with these we initially connected to them via the proprietary piece of software, then through Java with the use of a library (phidget21.jar).

From there we used our Java code to send our sensor values to a server, this being one we create through another Java project, it wasn't too complex due to the nature of the activities being aim towards those not studying a Computing related course, but was a functional RESTful API (posting values through the URI).

Once this was done, we set up a SQLite Database to store these values, simply using the below snippet to execute a insert statement into the DB:

String updateSQL = "insert into sensorUsage(SensorName, SensorValue, TimeInserted) " + "values('" + sensorNameStr + "','" + sensorValueStr + "', now());";

Once we learned about this, we then moved onto MQTT, this being a lightweight protocol for IoT communication implementing a publish/subscribe transportation technology, allowing it to have a lightweight footprint on both the code needed to be written, but also on bandwidth (since the a subscribed client will not be persistently checking for updates).

Luckily there is a library for this as well (org.eclipse.paho.client.mqttv3-1.1.1.jar), as well as many public brokers (MQTT Servers, essentially), which we could create topics to publish/subscribe to (which holds data in a text based format, which can be parsed to another data format such as JSON).

As I gave an example of a snippet of code you would write to insert data into a SQLite database, below is a snippet of the lines of could you could write to insert a sensor value with the aforementioned library:

final MqttTopic rfidTopic = client.getTopic(TOPIC_RFID);
final String rfid = rfidTag + "%";
rfidTopic.publish(new MqttMessage(rfid.getBytes()));

Using this knowledge for roughly the last three hours we were given the task of creating something with the Phidget devices, as well as the various forms of communication we can use to transmit data and pieces of scarp material to build with (cardboard).

My small team of two of my peers created a simple door opener, which would activate a servo when you scan a valid RFID card onto the sensor, the code for this can be found on my peers GitHub.

MATLAB® for Scientists & Engineers / Research

Hours: 10hrs (45hrs)

Being one of the more organised activities that was in two parts, each part having a break and a chapter for MatLab to go through each either side of the short breaks, this was ran by Dr Stephen Lynch, a lecturer at the University that has written multiple books on MatLab.

The first chapter was going through some basic syntax of MatLab and how to write in it, how it handles variables and different types of statements.

Intro to Node-Red

Hours: 5hrs (50hrs)

Node-Red is a visual platform to code without having to type any code (although can if you want to), we were introduced to how we can modularly drag blocks for the likes of Twitter to gather data, then use other blocks like sentiment analysis to determine tweets sentiment (being if it is a negative or positive tweet).

This is roughly what we did in the first hour or two, then bleeding into the second and third hours we were demonstrated how to implement other API's we might want to use, but are not necessarily build into Node-RED by default.

We covered how we could do this by getting an OpenWeatherMap API key and using a user-made 'palette' (a series of related blocks), from there we we able to create a 'flow', blocks of code that connected and ended up with something similar to the flow below:

Node-RED Weather Flow

What this does is it gets the weather just for Manchester in the OpenWeatherMap block, from there we use a function block we create, writing a bit of code to get the value we want from the given JSON data that OpenWeatherMap, which determines if the weather will be clear, then finally we tweet that to Twitter (which we have to provide another set of API keys for).

From here we then used an MQTT module, covering similar topics we did for the IoT activity, although it was not a prerequisite to have attended that activity to attend this one, which is why we ended up covering MQTT twice, although this time from another approach (without too much code).

Similar tp the other activities once we wrapped up the lab sheets, we were then given time to play with Node-RED, seeing what other palettes we could use and what we could do with them.

Intro to Mainframe Programming

Hours: 5hrs (55hrs)


Intro to Node-RED

Hours: 6hrs (61hrs)


IoT: Building Smart Devices

Hours: 10hrs (71hrs)


3D Printing Intro

Hours: 3hrs (74hrs)


Stereoscopic 3D Film

Hours: 3hrs (77hrs)


Leadership & Teamwork Training - Army Style

Hours: 10hrs (87hrs)


MATLAB® for Scientists & Engineers / Research

Hours: 5hrs (93hrs)


Python Programming

Hours: 3hrs (96hrs)


Python Matplotlib

Hours: 3hrs (99hrs)


Adventures in Chemiluminscence

Hours: 5hrs (104hrs)