W3C Internationalization Checker - An API rewrite in Java
Personal details
My details are:
- Name
- Joseph J Short (Joe)
- Email
- Joseph.J.Short@gmail.com
- Personal Website
- —
- Skype ID or SIP address
- joseph.j.short on Skype
- IRC nick
jjs
- Github account
- https://github.com/JosephJShort
- Phone number
- +44 (0) 7837 668932
- School Name
- The School of Computing Sciences at the University of East Anglia (UEA)
- Years completed
- 3 (2 of my current course)
- Programming Languages
- Java (Advanced), C++ (Intermediate), SQL (Particularly MySQL and PostgreSQL) (Advanced), PHP (Advanced), CSS, XHTML and other Web markup (Advanced), TeX (Advanced), Javascript (Beginner). I should have no problems in adapting to similar languages. I'm also a 'RegExps wizard'!
Background
I'm a bright and hard-working undergraduate student at the School of Computing Sciences at the University of East Anglia (UEA). I'm excelling at the undergraduate degree course of Master of Computing in Computing Science and expecting to graduate with a first in the summer of 2015.
I've worked in part-time jobs since leaving school, and have a professional and driven attitude towards my work. Soon I'll be at the start of a new career in computer science!
Project description
In keeping with the proposal template, I've hosted my project description on an external site, formatted as an HTML5 document.
Proposal history and potential mentor
The project proposal is based on an idea from W3C's ideas page entitled "Internationalization checker overhaul". I developed my proposal with feedback from Alexandre Bertails following our discussions on the IRC (at irc://irc.w3.org/#w3c). After submitting my first draft I revised the proposal to match W3C's template 'application template'. My second draft is currently being read by you!
Alexandre Bertails is the most likely person to be my mentor.
Anticipated challenges
I am sufficiently familiar with the development environment and the technology stack; therefore the greatest challenge will be in maintaining time-management and productivity. I'd like to succeed with all the main deliverables, providing quality code. Overall I want to provide the W3C with something they can use. My requirements analysis in week 1 should minimise the risk of failing at this objective.
Schedule of deliverables
Milestones and deliverables schedule
- Week 1 - June 17th - Familiarisation
-
The First week shall be used to: download
and run the existing code; set up a development environment with the right tools and
technologies; conduct research about the purpose and domain of the i18n Checker;
and create a rough design for the new Java API.
The deliverables are:
- a short summary of my domain analysis, including a glossary of domain-specific
terminology; and
- a short design document with a proposed class diagram and/or architectural
diagram.
- Week 2 - June 17th - Design and preparation
-
After week 1 my mentor will be able to comment on my design and requirments analysis. I can start moving the design in to a working software project. Deliverables are:
- a template software project tracked using a SCM tool linked to a remote backup; and
- 'stub' classes and method deFinitions.
- Weeks 3 to 6 - July 1st - First sprint
-
As soon as the above duties are completed, work on implementation can begin. In this period I shall implement the API and begin porting the test suite in to JUnit. I shall talk to my mentors for guidance, and
update them at regular intervals.
- Week 7 - July 29th - Week of mid-term evaluation
-
Early in the week, me and my mentor shall meet to discuss the progress of the project. This is in preparation for the mid-term student and mentor evaluations (deadline on August 2nd).
- Weeks 8 to 14 - August 5th - Second sprint
-
The second period of implementation. Initially I shall act upon any suggestions and advice from the mid-term evaluation. The rest of the second implementation shall be focused on sequential completion of the major deliverables.
- Week 15 - September 16th - Last week
-
The 16th is Google's suggested 'pencils down' date". In accordance, I shall use the last week to make sure that I leave the i18n Checker in a good, robust condition. Activities for the last week are: 'scrubbing code', integration and acceptance testing, updating the documentation and preparing the project for future developers.
- Further details
-
I shall spend about 30-40 hours a week on the project, and manage my breaks in a flexible way. I shall establish a steady presence on the W3C IRC channel (irc://irc.w3.org/#w3c).
Other commitments
Summer research placement
I have applied for funding for an 8 week summer research placement in my school. If I get this funding, there would be a four-week overlap with the start of my GSoC project. I don't anticipate any problems caused by this overlap. I won't be able to keep regular office hours for this period, but I'll still be able to put about 30 hours in a week. I have experience with long hour days and weeks for my previous part-time work. That said, I will respect the wishes of W3C and my mentors. Moreover, if it comes to an ultimatum, this project is definitely my preference.
I have no other commitments this summer. I'm very enthusiastic about putting a lot of time in to this project; the alternative is working for about 35 to 60 hours a week in my catering job. Instead I'll have the opportunity to work on this fantastic project, and to garner the respect of members of the open source community!
Open source development experience
I do not have any experience in contributing to open source projects; this is very much to my detriment of my character. As I become an able and experienced software engineer (and ultimately a professional), I'm keen on creating a presence in the open source community. Indeed, the opportunity to begin contributing to open source is one of the driving factors behind this proposal.
I have a great admiration for open source projects and public, collaborative development. Having been a long time user of free software, I feel that I owe the most to members of: The Apache Software Foundation, W3C, the Software Freedom Conservancy, and the developers of GNU. I learned to program after having learned about web development and design; so I owe a particular debt of gratitude to the W3C for my use of their validators and their huge body of standards and information on best practices.
Work experience
Please consult my current résumé. Note that I do not have professional experience developing software; in lieu I have provided written references from my professors that attest to my ability in software development.
Academic Experience
Academic Performance
2010–11 Access course: Applied Computing Science with a Foundation Year.
A year of introductory theory, programming, math, writing and teamwork. Finished with an overall grade of 68%.
2011–12 Current course: Master of Computing in Computing Science.
An undergraduate master’s course with a wide coverage of topics in the Field of computer science. Finished my first year with an overall grade of 75%. Here is a list of my units of study and individual grades:
- “Computing Fundamentals 1”: 83% (exam 74%)
- “The Computing Revolution”: 74%
- “Mathematics For Computing B”: 52% (exam 63%)
- “Computing Systems 1”: 68%
- “Computing Systems 2”: 89% (exam 95%)
- “Programming 1”: 87% (exam 79%)
2012–13 Current course: Master of Computing in Computing Science.
I've the following provisional coursework marks for my current year:
-
“Architectures and Operating Systems”:
- Architectures Assignment 97.00%
- Operating Systems Assignment 94.00%
- Blackboard Tests 100.00%
-
“Data Structures and Algorithms”:
- Written Assignment 84.00%
-
“Programming 2”:
- Programming exercises 93.00%
-
“Database Systems”:
- Design Exercise 82.00%
- Programming Exercise 81.00%
-
“Software Engineering 1”:
I’m also taking a unit called Theorhetical Computing, which is assessed with tests and exams only.
In the next two years
My study shall be focused in these areas:
- Research methods
- Dissertation
- Master’s project
- Machine learning
- Information retrieval
- Further software engineering
- Networks
References
I've collected four written references from my professors at UEA.
First reference
- Referee
- Dr Joost Noppen, Lecturer in Software Engineering
- Interaction
- Dr Noppen runs a unit called 'Software Engineering 1' which I completed at the end of the spring semester this year. The unit was centered around a 14 week group project. Participants had to enact the requirements analysis, design, implementation and testing phases of a typical software life-cycle. The product specifications were set by a real business partner, Aviva plc, the UK’s largest insurance provider. My team submitted a web application that comprised over 23k lines of code, and documentation of over 60 pages. The teaching of the module was focused on: the principles of software engineering, design descriptions and theory, some of the tenants of good design, and an introduction to modern development tools.
- Reference
-
[Questions written by me, answers by Dr Noppen]
Does Joseph understand the principles of software engineering?
Joseph is an excellent student and he has grasped the concepts and
principles of software engineering very well. During the module and in
his course work you can clearly see his understanding of important
concepts such as modelling, analysing, developing and testing a software
system. He has demonstrated a solid understanding of the modelling
formalisms and technical documentation aspect and he has managed to
combine this with the practical skills to deliver a quality working
system and infrastructure.
How successful was his group project?
The group project of Joseph was very successful. The project involved
creating a software system from a requirements specification to a fully
working system including design, documentation and testing. The end
result was a high quality system that was the result from a solid
development process. During the project Joseph also demonstrated skill
in facilitating development with tooling and infrastructure and moving
beyond the brief in requested functionality and development practice.
Overall the project was completed very successfully.
Has Joseph shown capability to work in a team of developers?
Joseph has demonstrated excellent capability in working in a team of
developers. The project teams consisted of groups of four students and
Joseph performed very well in his group. There was a clear coordination
and division of tasks present and the group worked in a very effective
manner.
Second reference
- Referee
- Dr Tony Bagnall, Senior Lecturer
- Interaction
- Dr Bagnall has taught me on two units. The unit 'Data Structures and Algorithms' gave an introduction to complexity analysis, sorting algorithms and a large variety of data structures. And the unit 'Programming 2' covered advanced object oriented programming with Java and C++ and an introduction to Matlab. You might say that Dr Bagnall has taught me the 'nuts and bolts' of computer science!
- Reference
- [To be received]
Third reference
- Referee
- Dr Graeme Richards, Lecturer in Computing Sciences
- Interaction
- Graeme is my academic advisor and has taught me since the start of my academic life. He teaches on lots of introductory material; he's greatly accountable for my success at UEA.
- Reference
I have been Joseph’s academic advisor for three years and have taught on several of his modules. He has always been an extremely hard working and conscientious student and achieves excellent academic results. In addition to his academic work Joseph contributes to the school through active membership of the School Board and the Staff Student Liaison Committee.
Joseph’s academic performance to date has been outstanding; I am confident that he will continue to work at his current level and that this will ensure that he graduates with a First Class Honours Degree.
Fourth reference
[To be confirmed]
Why W3C
[Section unfinished]