I am a lecturer. I have been teaching software development since 2007. During my teaching career, I have been teaching the following courses:
- Object-Oriented Programming
- .NET Application Development
- Web Application Development
- Introduction to Software Engineering
- Software Construction
- Software Configuration Management
- Software Architecture
- Software Project Management
- Software Engineering Capstone
- Cloud Computing (Graduate Course)
- Distributed Systems (Graduate Course)
I’m interested in philosophy, psychology, history, economics, movies, literature, music, and software engineering research.
I hold a PhD degree in Computer Science. My main research areas are
- Software design, software architecture, software design patterns, multi-tenant architecture for enterprise systems;
- Software process, software project management for managing enterprise software development projects;
- Data structures, algorithms, programming languages and frameworks for engineering desktop, web, mobile, cloud-based enterprise software and games;
- Machine learning algorithms and deep learning architectures for building natural language processing and computer vision systems.
I am a practical person. I advocate learning and researching by doing. I have been developing software since 2000, working in various industry projects as a Software Engineer, a Team Leader, a Project Manager, a Technical Architect, and a Solution Architect. I designed several successful commercial multi-tenancy enterprise systems.
My experience includes
- Eliciting project ideas, identifying project scope, estimating and controlling project size, cost, duration and risks, developing prototypes and proof of concepts, managing software development and improving software development processes;
- Evaluating and proposing architectures and technologies for enterprise software systems and multi-tenancy software systems;
- Developing enterprise software systems and their ecosystem (i.e. services, desktop clients, mobile clients, web applications, specific add-ons, 3rd party and legacy systems integration) using
– C, C++, Windows API, C++ Builder, Cocos2d-x;
– Objective C, Swift, iOS SDK;
– Java, Android SDK, AndEngine;
– PHP, MySQL, Drupal, WordPress;
– Node.js, Express, PostgreSQL;
– R and R packages; and
– Apex, Salesforce, and Lightning Component Framework.
- Applying natural language processing and computer vision to enhance existing software systems using
– Python, TensorFlow, Keras, scikit-learn,
– OpenCV, Deep Speech, and Tacotron.
I welcome and appreciate any feedback and suggestions for this website. My short term strategy is to document some of my experiences for reference and to create a full, concrete and easy process for high school students and absolute beginners to learn to develop software.
My long term strategy is to make a place for a small group of people to discuss about software engineering, software engineering education and training, software engineering research, and share their experiences.