Current and Completed Major Projects
MKConnect
- C# / ASP.NET / MS-SQL
- Dev. Concluded
Whilst working the rest of the week at Kuehne+Nagel, I would attend college on Mondays as part of my apprenticeship. One of the first tasks I was set as part of my apprenticeship was to work in a small team to develop a web-based mentoring application for the college. This was the final project for other apprentices but due to the time I joined Kuehne+Nagel, I was entered with this being my first project. Our client was a member of the HR department. The program was to allow prospective mentees to search for mentors in particular work-based competencies, and sign onto courses allowing them to work on particular skills with that mentor.
My role differed depending on which team I was in; initially I was in one team, but with more members joining the course, the lecturer decided to split some members of the original team into a new team to develop a rival application. On the first team, my role was to mainly work on the design and development of a side-bar, both for the desktop and mobile version. In the second team, my role was to work on a profile course viewer, the courses page and to then work on a course/mentors search, pictured here, as well as some other minor features. In both teams, we decided to work in a sort of hybrid waterfall-agile approach.
In order to develop the aesthetic features for the first team, I utilised mainly HTML and CSS with the Bootstrap.js library. For the second team, I was working on both front-end features and back-end features, so I also used in ASP.NET and C# with the WebForms framework and some MS-SQL for data search and retrieval queries. For version control, we utilised git. In hindsight, WebForms is quite dated, and something like Razor may have been more appropriate.
As we were restricted to a few weeks to develop the application, a fully featured application was not required, merely one that met the design brief given to us in the beginning. At the end we also presented our solutions to the client, complete with a live demonstration, whereupon we answered questions from our client and from some employers who had been invited. Although our solution still had some features left to complete, the core features were implemented, and the search and courses page were amongst them.
This was my first non-work project where I was working as part of a team, and I also learnt to appreciate quite a lot the importance of object relation mapping, as without it manually writing data access code expended development time. Additionally, I gained some project-based experience working with using C# and ASP.NET with a framework, and crucially getting some practical experience using bootstrap and git.
'Daftar'
As a Tutor I have always felt the need to take quick and efficient notes during my sessions with students without wasting paper. Initially, I solved this problem by just making my own word document template for notes, although that took time to fill out and most of my tutees would race ahead whilst I was fumbling trying to still describe my notes on a question they did a few questions ago!
So as a solution to this problem, I am developing a simple note-taking program in Visual Basic to use during 1:1 tuition sessions that would quickly allow me to add notes. I've picked Visual Basic to capitalise on the excellent Visual Studios designer which allows me to design the exact interface I need with ease, though I did consider writing it in Python and possibly using Tkinter for the GUI. At the moment however I feel a real need for the program so have gone ahead and started developing it in Visual Basic, though I might consider re-writing it in C# in the future.
Pictured is the current program; I used to have a more basic version of the program uploaded on here; I have since added in a few features as shown, like the ability to make behavioural notes etc. I still have much work to do adding all the features I think are needed to make this an effective program, such as making question entry even faster.
Already however, I am seeing how smooth it makes note-taking, allowing me to focus on tuition scaffolding whilst it helps give me the information I need to deliver effective and targeted feedback.
This Website
Having been looking for a software or web development apprenticeship for over a year at the time, I wondered what I could do to improve my prospects. Developing my own website, whilst quite a task, was certainly the way forward - I had completed numerous school coding assessment tasks which I wanted to show to employers, had work experience I wished to showcase and wished to also have a space to talk about my current passion projects as I work on them.
I developed and designed this website myself, mainly utilising HTML and CSS, although I have used some PHP for the contact form and also to ensure I don't need to copy and paste changes of certain repeated page elements. Whilst one might be able to tell I am not quite the natural web designer, I feel happy with the end result and feel it looks professional. To try to climb the Google Search rankings I had to teach myself the basics of SEO (Search Engine Optimisation) - at the time of writing I am now number 1 on the Google search for my name, "Mihi Hasan"!
In addition to the markup and styling, the images are also my own. In particular, the background image is a photo of my home village, during Autumn of 2022. I designed the favicon as a general profile picture in late 2021 though it is based off a picture of me from when I had just finished school! The photo taken for the homepage is recent at the time of writing. Pictured above is the HTML for this page when I was still developing it!
Whilst my website is complete, I still intend to update it from time to time and might consider additional pages in the future, like a blog perhaps.
A-Level Timetabling Program
For my A-Level Computer Science NEA, I was given free rein to complete any advanced computational project I could come up with, so long as it was rigorous enough to meet the demands of the qualification and so long as it was developed for a client. After a discussion with a Maths teacher, I chose to pursue a timetabling program: a program that would take in an input .csv file of sixth-form student subject choice data and use that to compute the subjects into blocks and students into classes, ensuring no clashes. At the end, it would output a .csv file with required subject block data and class compositions. My client was the head of timetabling at my school.
Needless to say, this was not an easy task. Any kind of brute force approach would take forever. So to solve this problem, I had to research some optimisation algorithms. I looked at approaches such as Simulated Annealing, the Honey Bee algorithm etc. reading research papers and web articles to get a clue as to how they work to fill the research section of my NEA. In the end, I decided to go with a Genetic Algorithm approach.
The genetic algorithm works by essentially mimicking evolutionary biology: a population of random solutions are generated as our "chromosomes", their "fitness" (in my case how few clashes they would make) is evaluated and then the fittest solutions are essentially kept and bred together, splicing the solutions from each parent together. Additionally, an element of randomness is introduced - a mutation factor occasionally "corrupts" a part of a solution chromosome. Over time, the population evolves to become fitter, converging on an optimal solution.
First, I practised implementing the genetic algorithm on the knapsack problem to get used to use implementing the algorithm. Once I was confident, I designed then programmed my solution. Admittedly, the interface to the solution was lacklustre, I used Tkinter for a basic menu but then opted for a console-based approach so I could see the genetic algorithm in action during my numerous tests to try to attain convergance on an optimal solution. In the end, I was able to solve the problem and after completing my own white-box testing, I handed my solution over to my client to black-box test and give general feedback for my evaluation.
To date this has probably been the most complex project I have completed from a problem-solving angle. To download the completed project PDF, click here.
GCSE 'GameZsoc' Games Forum
As part of my GCSEs, I had to develop solutions to two tasks, coding to specification against a number of requirements. The latter of the two tasks was to develop the back-end to a games forum website in PHP, using MySQL database queries. The exam board provided the basic website and I had to develop a sign-in page with sed functionality, a page to view forum threads, add a thread and add comments to a thread. There was also an additional extension task to delete threads that could be completed for further marks.
This was probably the task I enjoyed the most out of the two, and in addition to completing all the tasks and the extension, I worked on my own unique design for the various pages and used include statements to make editing the provided header easier. Additionally, I used some basic JavaScript for one particular live element component.
Unlike my other projects, I no longer have the code or project files for this second GCSE project, so I couldn't include a picture, although I did really well on the task, achieving the top grade in it. Our school hosted our websites online whilst we worked on them, mine used to be located at 'hasamihi.georgeabbotdev.com'. We used notepad++ as the editor for our webpages, using NppFTP to connect to them, much in the same way I did when I developed this website.
GCSE Greenfly Population Model
The first major project I completed was for the first task I had in my GCSE Computer Science Coursework. We had to develop a simple greenfly population model to specification. First we had to ensure we had a way of inputting the data such as initial populations, survival and birth rates. Next we had to output this information. Finally, we had to have the model run to calculate subsequent generations of greenflies, showing population growth/decline over time, as well as allowing the user to export the calculated data. There was also an extension task to add a disease factor to the population.
Whilst it was a simple enough task to complete, I feel this task helped me develop my ability to work on large, multi-file projects. Additionally, I gained valuable experience learning the basics of the .NET framework and using the Visual Studio designer to easily develop advanced graphical user interfaces.