HO, Ka Him

MSc in Computer Science Graduate. This is my portfolio showcases my current achievements and works.

Please feel free to contact me.



CityU Logo
  • City Univerity of Hong Kong (Sept 2015 to June 2016)
  • Master of Science in Computer Science
Cardiff Univerity Logo
  • Cardiff Univerity (Sept 2012 to June 2015)
  • Bachelor of Science in Computer Science
  • Second Class Honours Division One


  • Computational Thinking (CM1101)
  • Web Applications (CM1102)
  • Problem Solving With Python (CM1103)
  • Professional Skills (CM1201)
  • Developing Quality Software (CM1202)
  • Fundamentals Of Computing With Java (CM1203)
  • Architecture And Operating Systems (CM1205)
  • Human Computer Interaction (CM2101)
  • Database Systems (CM2102)
  • Object Oriented Applications (CM2201)
  • Scientific Computing and Multimedia Applications (CM2202)
  • System Design And Group Project (CM2301)
  • Communication Networks And Pervasive Computing (CM2302)
  • Algorithms And Data Structures (CM2303)
  • High performance computing (CM3103)
  • Large scale databases (CM3104)
  • Security and forensics (CM3105)
  • Emerging Technologies (CM3202)
  • One Semester Project (CM3203)

GCE A-level Studies

GCE A-level
  • Applied ICT - A
  • Mathematics - A
  • Physics - D
GCE AS-level
  • Economics - d


Most of the web tech skills are self-taught and some programming like Pascal, Python and JAVA are skills that gained from courses.

  • PHP
  • MySQL
  • JavaScript
  • HTML5
  • CSS3
  • Java (Android)
  • Python
  • C++
  • VB
  • Pascal

Personal strengths

I enjoy working within a team, and I was the head of IT Prefect team in my secondary school for 3 years which gave me lots of opportunity to both lead and to work as part of a team. During the time of my undergrad study, I had the opportunity to work in a small group with 4-5 people, to develop python game and multiple choice test system. In addition, I was with a group of 8 to develop a visual aid prototype using Kinect in my second year.

Apart from working as a team, I am a independent worker that able to self-learning by using different resources, like from the internet. In many of the IT skills I have I taught myself before I began my A-level course, such as computer problem solving, PHP, MySQL and Pascal because I am a motivated person. I have always been fascinated by the way that computer programs work and this fascination has frequently driven me to work independently to understand difficult issues. I particularly enjoy learning programming languages which reinforces my strong analytical skills. I draw from examples online and analyse the programming script logically. I taught myself PHP, the web programming language, when I was 13, and I enjoy producing web pages and developing programs. I have created a website for a boat renting company in Hong Kong and I have made a booking system for my old school which helps to organise resources like digital cameras, projectors and classroom equipment.

Projects and works

BusETA (Android App) - 2015 August

An Android application to check estimated time of arrival of bus routes in Hong Kong using official data.

Using Java, Android Libraries, XML.
Link: Website, Play Store, GitHub

Chrome extensions - Since 2011

I have created a browser extension that extracts weather information from official sites to show and display weather information within the browser extension to notify user of the latest warnings, using the common web technique, HTML5, CSS and JavaScript. In addition, I created an extension for looping YouTube videos using YouTube API. Both extensions have high rates and positive feedbacks, which shows they are written in good quality. I learnt these techniques from internet resources and I regularly read online articles which have given me an insight into programming language.

Using HTML5, CSS, JavaScript, Chrome Extension API and YouTube Player API.

ftpSync (Final Year Project) - 2015 February to May

The aim of this project is to build a DIY cloud solution, based on an FTPS server controlled by the user. Overall I believe the project to be a success as I achieved most of the requirements set at the beginning of the project. I developed an application for Android devices using Java and one for Mac OS X platform using Python. The application able to synchronise selected directories with ftps server. Even though there are many uncertain in my initial plan, I ultimate decided things I need to work on. Although the project has been a challenge, it has also been entertained to learn about new aspects. As a result of this project, I learnt a lot throughout the process; I gained hand­on experiences on programming in Android platform, a wider knowledge of methods Java provided, the use of tools like Android Studio and PyCharm, and problems and solutions to remote synchronization issues. (abstract from the final report) Grade 68%.

Using Java, Android Libraries, XML, Python.
Link: Final Report, GitHub (Android version)

Java RMI Whiteboard - 2015 March

In this mini-project I wrote the client and server code for a Java RMI programme that implements a shared white‐board for drawing simple graphical objects, such as circles, triangles and squares. The programme allow multiple clients to add new graphical objects to the shared white-board, and to obtain from the server a list of the current set of graphical objects on the white-board. This list can then be used to allow a client to display the current white-board.
Grade 88%.

Using Java, Swing, Remote.
Link: GitHub

Visual Aid System - 2014 February to May

The objective of this project is to develop a prototype that uses video to sound technology which will be tested within a controlled environment. The system is written in C and using Kinect SDK. This is the first time I experience on both C and Kinect programming. My team developed an object tracking system using specific colour cards and my part of the work is to develop the depth tracking system to alert when user approaching to a large obstacle like the wall. The project did not have a great success, although we did implement basic features that works. This project let me get experienced on topics like project management, working in a group of 8 for a year and coding skills. Grade 64%.

Using C and Kinect SDK.
  1. Video shows the object tracking, guidance, voice recognition and text to speech software integrated in to a working system, allowing the user to locate a desired object.
  2. Video shows the depth tracking system, which notifies the user if they are approaching any large object such as a wall. This is achieved by the increase in pitch and frequency of sound notifying the user.

Parallel Programming - 2014 December

There are three pieces of parallel programming assignments including OpenMP, MPI and CUDA. The task for each of these assignments are similar, which is to modify a program that do blurring on an image to a parallel program that run using OpenMP, run across network computers using MPI with shift communication, and run under GeForce GPU in Linux machines using CUDA. These assignments give me a hands on experience to these three parallel programming and they show a huge improvement on performance when running for-loop in parallel compare to serial.

Using C++, OpenMP, MPI and CUDA.

MATLAB Media Browser - 2014 April

A basic but functional media browser and editor program written in MATLAB. Features both image viewer and audio player with image and auto processing using MATLAB functions, like cropping images, editing contrast, resize, flip, rotate, few filters and tone editing. In addition, I have implemented a slideshow function with the ability to set number of seconds to show next image with a timer. Grade 98%.

Link: Short Report

Runtime Analysis of Insertion Sort and Counting Sort - 2013

A study on run time performance of two simple sorting algorithms. The insertion sort and counting sort will be analysed to show how they go with different status and size of integer array set. Grade 85%.

Spending Tracker Prototype - 2013 November

The objective of this assignment is to understand HCI. It lets me experiences with Use cases, State Transition Diagrams, Interface Prototyping, and evaluate the usability of the interface with severity rating. This exercise reminds to take care of user experiences when developing software design. Grade 75%.

Using HCI Skills, HTML5, CSS3 with mobile and JavaScript.
Link: Report

Multiple Choices Testing System - 2013

This project is to produce an aptitude test by a team of 5. It is written in Python with tkinter, PIL and shelve modules. The system include login mechanism with 3 different user types, student, lecturer and administrator. Student account is to take test and time limit and test record will be saved using shelve (python database module). Lecturer to view test results with the ability to search student, sorting results and save results to a csv file. Admin account for adding and editing questions, and adding users. Grade 69%.

Using Python with tkinter, PIL and shelve modules.

Simple Blog System - 2012 November

The objective of this assignment is to create a blog system without any external library and all codes need to be written from scratch. The system written in PHP with the use of MySQL as database. This project give an insight on proper database design. The blog system feature users login with permission control, posting blog posts, leaving comments, generating RSS feed, and inserting external videos, links, images and YouTube videos. The site applied AJAX to leave comments, add or edit articles and users and some tables. Grade 98%.

Links: Short Report

Python halloween theme Game - 2012 October

This project worked as a group of 5 and the game is written in Python by using pygame module, it is a game for players to control the elevator and get all the scientist to a second floor without killed by zombies. This is the very first time that I experience with Python. Grade 89.3%.

Using Python with pygame module.

Phone book Directory - 2009 December

A basic phonebook program written in Pascal that run on Windows system. Features including displaying, adding, editing, deleting, searching and sorting contact entries. The program itself is simple, but it meets all requirement of the assignment. The assignment included a report that indicate all steps of the program, showing ideas on flowcharts, testing the program with test cases and explaining every lines of code and functions. Grade A.

Using Pascal and Report Skills.
Link: Report