An Opportunity to Design

As I mentioned in a blog post a few weeks ago, I have been given the privilege to create a course at the University that teaches Programming Design Patterns using Java. In Software Engineering, a Design Pattern is a general repeatable solution to a commonly occurring problem in software design. It is a description or template for how to solve a problem that can be used in many different situations. One of the first things I did in designing this course, was decide on the appropriate Course Structure. Design Patterns are categorised according to the groups below and the patterns listed are covered in the course.

  • Creations Patterns – These patterns are all about class instantiation.
    • Singleton
    • Factory
    • Abstract Factory
  • Structural Patterns – These patterns are all about Class and Object composition.
    • Model-View-Controller
    • Composite
    • Adapter
    • Bridge
    • Facade
    • Decorator
  • Behavioural Patterns – These patterns are all about objects communication among classes.
    • Observer
    • Strategy
    • Iterator
    • Interpreter
    • Chain of Responsibility
    • Command
    • Template
    • Mediator

Secondly, I acquired soft copies of reference texts for the students to be used throughout the course. So far, I’ve been using Design Patterns Explained Simply by http://sourcemaking.com/ as well as the Design Patterns in Java Tutorial from http://www.tutorialspoint.com/.

Thirdly, I focused on assessment preparation. I’ve completed Creational and Structural Design Patterns with the students at one campus and I should complete those Patterns with the students at another campus by next week. Finally, we would complete the Behavioural Design Patterns and prepare for the final exam. While I do wish I had more time to prepare all the material for the course, things are going great. For each pattern taught, I will give multiple examples in class for the students to grasp the practical side of it with the hope that they’ll read the notes from the books to solidify the concept with the theoretical side of things. This course has three assignments, one for each Design Pattern Category, a Mid-Term Exam as well as a Final Exam.

This morning, I submitted the final draft for the Final Exam and I hope it’s approved. There are some changes to be made to the Mid-Term Exam, which will be given in two weeks and the assignments for the Structural and Behavioural Design Patterns will be issued within this coming week. I hope the University is pleased with the work I’ve done and will be interested in delivering this course again at the Bachelor’s level next year. Since I’ve been back at the University part-time, I’ve seen opportunities to deliver more courses at the the Diploma and Bachelor level and I hope I’ll be given to opportunity to do so in the near future. Currently, the University teaches Android Mobile Application Development, so it would be indeed an honour to develop a course teaching iOS Mobile Application Development at the Bachelor level. Until then, I will make suggestions for the courses I would like to deliver, that I think would be of value to the students, with the hope of it being approved.

Advertisements

Back to Lecturing

The new semester at the University began last week. For this second semester, I’ll be lecturing three courses, one on Design Patterns using Java, another on Databases with MySQL and lastly the programming language C. This will take four classes with a total of 16 hours per week, with four 4-hour classes, for a period of 12 weeks, with an additional week if needed. I’m most excited to lecture the Design Patterns course as this is the first time it will be delivered by the University. I know that my ability to successfully deliver the content will affect the likelihood of  the course will be delivered again. Thankfully to sourcemaking.com‘s book on Design Pattern and James W. Cooper’s book on Design Patterns in Java, there will be no need for me to prepare course notes. I’ve also been fortunate to find a C Programming Tutorial from tutorialspoint.com which also eases me up from preparing notes for the C Programming course. I’m yet to find the perfect handout for the Databases course. The students in the class have no database experience and very little database knowledge, so finding notes with very simple explanations is proving to be a challenge. For the next 11 weeks, I will be managing my full time 8-4 job and my lecturing. This will be an exciting challenge as this schedule is a 6 hour increase from the lecturing I did last semester, so it will definitely test me and take me out of my comfort zone. Seeing that my classes end at 9PM, Monday to Thursday and I usually go to bed after 11PM, I’ve decided that it would be best that my morning wake up time be moved from 4AM/4:30AM to 5AM to allow some additional time for sleep. On weekdays, I aim for 5-6 hours sleep but that never really happens, so hopefully this can be attained with my 5AM wake up call. The next 11 weeks will be quite busy but it all contributes to a greater plan and purpose.

Remote working

When I attend the Microsoft M4 event about a month ago, one of the things I loved most was how Microsoft in Trinidad has embraced remote working. At NIBTT, this is yet to happen. Yesterday I had a quick chat with one of my co-workers who is also a mother of two beautiful little girls and she expressed her feelings about the commute to work, the management of her time and her productivity with regards to work and her personal life. Remote work is not extremely common here in Trinidad and Tobago, especially in the government sector. Every day so many persons, including myself leave home at 5AM to get to work in the Capital City for 8AM to avoid the horror and stress of dealing with the traffic. Most of the employees in my department have given up on arriving at work by 8AM and some actually arrive at 10AM or later. Another co-worker mentioned the effect the commute had on his health in the past, so he can no longer get to work for 8AM, he gets to the office whenever he can. This is really sad. Remote working is not something everyone will want as some folks are unable to be productive at home, which was a point expressed by a third co-worker in my department. A software development team is one of the easiest groups that remote working can be tested on to see how it can be implemented in other departments. My co-worker with the two daughters asked if it was something I can bring up again that can be considered, even if it’s for one day. I hope one day management at NIBTT can realise the benefit of remote work for some departments and some employees.

Going after what you want

I’ve been at the National Insurance Board of Trinidad and Tobago (NIBTT) since May of this year and the project I’m currently working on, is not one I’m passionate about but I come to work and do what I can. Yesterday I made a phone call to June Marcano, Project Analyst who works directly with the Executive Manager for Information Technology at NIBTT. I enquired about the possibility of NIBTT producing mobile applications as my passion is mobile application development. Sometimes in life we’re placed in situations that may not suit us perfectly and it may be easy to walk away but I know I’m here at this organisation for a purpose and I need to figure that out. I know the current position I hold is not for me, so I need to exhaust all my options and see how best I can add value to the organisation before I make the final decision to leave. I should have a conversation with the Executive Manager before the end of the week to discuss the possibility of such a project and I hope it’s a venture the company is ready and willing to embark upon and one that I can contribute significantly towards.

Java Threads

Yesterday in the Java class, I revisited the concept of Threads with the students and I am so glad I did. I prepared a class exercise that initially focused on the theory aspect of threads then we moved gradually into the coding, increasing difficulty with each question. For all the exercises in the past, the students used Eclipse to compile and run the code but yesterday I asked them to do everything on paper. The final examination set by the University is written and this approach while practicing will best prepare them for what to expect for the exam. The theory was pretty easy and straightforward but when we got down to the practical exercises some students struggled. Only one student remembered to define the run( ) method in the Thread subclass and she executed one of the questions so perfectly, that I asked the other students to take a look at her solution. I later thanked her for doing such a great job and to keep up the good work. The next class will be the quiz and for the rest of the semester I will be focusing on the topic of files then exercises to prepare for the final exam.

The things that make it worth it

Yesterday I received an email from one of the students from my Java class expressing gratitude for some work done in the previous class which greatly contributed to helping him understand the concept of the Observable Class and the Observer Interface. I try as much as possible to get the students to understand the concepts before the class ends, even if it means not completing the entire planned lecture. When I receive emails or messages from students commenting on how they enjoyed the class and how they have grasped the concepts taught, it really makes me happy and makes all the work done before class worth it. In the Java class yesterday, we started looking at Threads. We looked at processes, then the main reasons for threads and the two main ways to create a Thread in Java…using the Thread class and using the Runnable Interface. Throughout the class I reiterated the fact that since Java only allows single inheritance, the Thread class cannot be used to create a Thread if you would like to inherit from another class and in such an instance the Runnable Interface should be used. I gave the class a few examples on creating threads but for some reason they were having some problems grasping the concept. So I started the topic again from the top and ended the class with them creating two basic classes for the two ways to create a thread as shown below.

Screen Shot 2014-10-31 at 9.23.18 AM

Screen Shot 2014-10-31 at 9.26.18 AM

For the next class, we will look at the life cycle of a thread, thread synchronisation and multithreaded programs.

Sometimes you just have to ignore

At the National Insurance Board of Trinidad and Tobago (NIBTT), I’m currently working on a web application. For the past month, I’ve been having numerous errors with the DOJO Framework that has caused me frustration beyond belief. I couldn’t understand why this code would be released with so many errors. Yesterday, my co-worker Darindra eased all my woes with respect to this framework and it was simply a matter of ignoring the errors in the Eclipse preferences. He too encountered the same problem and it took him some time to figure out the issue. This approach may not work for all code in all programming languages. For example, some deprecated code in Objective-C needs to either removed completely or edited. This has given me a more positive perspective towards the project and has me really excited about moving forward.