DM6121 : Human Computer Interaction (Current : Lectures)

The course focuses on both theoretical issues and practical techniques in Human Computer Interaction. The emphasis is to develop good systems designs systems with interfaces the typical user can understand, predict, and control. The coverage includes development methodologies, evaluation techniques, and user-interface building styles.

The teaching materials of Human Computer Interaction (DM6121) course were prepared based on recent HCI researches. This is very important because HCI is an emerging research area hence we need to provide up-to-date teaching and research materials for the students. Apart from the researches, the materials are further nurtured by recent HCI Books and Scientific papers. Also, the recently published research works from top HCI conferences (SIGCHI, UIST, CSCW, and DIS) were discussed at the end of each lecture and students were encouraged and facilitated to discuss about these recent research topics during the lecture.



CZ2004 : Human Computer Interaction (Current: Lecures, Tutorials, and Labs)

This course aims to provide an introduction to human-computer interaction, with an overarching goal of inculcating into you the habit of adopting a user-centric perspective on usability when designing, evaluating and innovating new user interfaces. More specifically, the objectives are to get you to: (a) appreciate and understand the significance of considering usability issues in interface development, including user requirements, measurements and various usability tests; (b) acquire vocabulary to frame and articulate HCI issues and considerations for different computing applications; (c) learn first principles in user interface design and develop basic ability to apply design considerations to both current and future interface modalities; (d) obtain a perspective of how HCI needs to be aligned with human thought processes and physical abilities, and (e) be aware of the large range of user interfaces in society today, and appreciate how HCI design is applied in varioussectors of the computing industry.

CZ 3003 : Software System Analysis and Design (Current : Tutorials and Labs)

System analysis and design deal with planning the development of information systems through understanding and specifying in detail what a system should do and how the components of the system should be implemented and work together. After successfully completing this course, students will have gained comprehensive theoretical knowledge as well as practical skills related to the system development process of information systems. Several topics covered in this course, including requirement engineering, software quality and design principles, design issues, software architecture design, design quality analysis and evaluation, software construction, system validation and verification, and system deployment and use.

CZ 3004 : Multidisciplinary Design Project [MDP] (Current : Labs)

The Multidisciplinary Design Project (MDP) is a group-based design project undertaken by a mixedgroup of students comprising of undergraduates from the CE, CS, BCG and BCE programmes. Theproject is practical-oriented and multi-disciplinary in nature, requiring system level integration of sub-systems developed by different team members.

MDP is to be done over one semester by students who have reached at least a year 3 standing.Eligible students will be automatically registered by the school and will be allocated to their respectiveproject group based on a composition of students from different programmes.

CE1007/CZ1007 : Data Structure (Recent past : Lectures, Tutorials, and Labs)

This core programming course aims to develop your understanding in data structures such as linked lists, stacks, queues and trees that are important for building efficient programs in C programming language, and are essential for future programming and software engineering courses.

As hands-on experience is essential for learning programming languages, we combined lab and tutorial sessions (two hours) of Data Structure (CE1007/CZ1007) course together from semester 1 (AY 2016-17) that helps students to obtain more practical experience. We refined the course to apply a student-centered approach to learning and teaching, which has been widely adopted in universities across the world. As a result, the assessment of this course is proposed to be changed to 100% coursework which includes assignments and lab tests.

CE/CZ 1007
CE2006/CZ2006 : Software Engineering (Recent past : Lectures, Tutorials, and Labs)

This course aims to equip students with foundation knowledge on issues and techniques required for the design and implementation of quality software. The students will have the necessary knowledge and skills to delve deeper into Software Systems Analysis and Design (CZ3003) and advanced topics in Advanced Software Engineering (CZ3002) courses.

Upon completion of the course, students will be able to understand the roles and purposes of various activities in software engineering process. Specifically, students will be able to participate in all stages of the software development lifecycle for a medium?size software project to deliver the required work products, elicit and specify requirements clearly, and correctly, use good software design concepts and considerations, design and carryout test activities to verify that requirements have been met, and perform simple project management of a medium?size software project.

CE/CZ 2006

Summer Programme

NTU Summer Programme 2019: Machine Intelligence and Applications (2019)

The aim of this programme is to introduce Machine Intelligence (or Artificial Intelligence) and selected applications to the participants. MI exists at the intersection of machine learning and artificial intelligence; it is the enabler for a machine to interact with its environment in an intelligent way.

At the start of the programme, the participants will learn the principles of various fundamental, basic concepts and algorithms in MI such as Bayesian Classifiers, machine learning, neural networks, and deep learning. The use of powerful computers in computational learning is to learn knowledge (or regularities) from the raw data. Participants will get to learn the state-of-the-art image synthesis techniques that greatly help to alleviate the data collection and annotation constraints in deep learning. Trainer will also introduce to the participants human-computer interaction, with an overarching goal of inculcating into the participants the habit of adopting a user-centric perspective on usability when designing, evaluating and innovating new user interfaces. Finally, the participants would be taught the essential concepts and skills in task planning, action planning, path planning, equations of the path, and equations of trajectory that will enable them to understand how to apply motion-planning techniques in robotics.

Programme Schedule


Building Low Cost VR Experiences (Current : Lectures and Labs)

Building Low Cost VR Experiences: Over the last, Virtual Reality (VR) has become very popular due to the availability of the Oculus Rift and other Virtual Reality Head Mounted Displays (HMD). Google released the lost cost Cardboard viewer, allowing almost any mobile phone to be able to be used for a VR experience. The goal of this workshop is to teach students on how to create their own VR application using the Cardboard viewer hardware and Unity3D software. The main objective is that by the end of the workshop attendees should feel confident to be able to create VR experiences. I have conducted several workshops in 2017 (November 25th, 2017 and February 10th, 2018), 2018 (April 7th, 2018), and 2019 (October 12th, 2019).

Building Low Cost VR Experiences

National University of Singapore, Singapore (2011-2012)

TE3201 : Bachelor of Technology Programme: Software Engineering (Lectures, Tutorials, and Labs)

This module aims to introduce students to the discipline of software engineering and the problem solving process. Topics covered: Software project planning, requirements analysis, data flow methods, Software development, object-oriented design, portability and re-use, Software quality assurance, testing strategies techniques and Case studies.

SIM University (UniSIM), Singapore (2010-2012)

MTD315 : Computer Interactive Graphics

This course provides a basic background on geometry and computer graphics for virtual reality systems. Topics include: Introduction to graphics systems and models, basic OpenGL programming, lighting and surface shading, texture mapping and its applications, discrete methods, graphics hardware, and rendering optimization.

MTD317 : Virtual Reality Systems

This introductory course covers the principles of virtual reality and its application in multimedia. Topics include: Introduction to Virtual Reality Systems, VR Input and Output Devices, Modeling, VR programming, Human factors in VR, and VR Applications.

University of Aizu, Japan (2001-2006)

Computer Music

This is an advanced undergraduate and graduate level course to which have contributed in teaching, grading, assessments, and conducting lab sessions. This course is designed to encourage original, creative expression, subjectively motivated by aesthetics of the music. By taking this course, students gain a basic understanding of the theory and practice of DTM (desk-top music), by having learned basic musical theory and by having personally composed a song using techniques explained in lectures.

Audio Interfaces

This is a graduate level course which I have contributed in teaching, grading, assessments, and conducting lab sessions. This course simultaneously explores issues in sound as well as tools available to manipulate audio. Students who complete this course will be empowered with basic knowledge of audio and the confidence to apply those principals to generally encountered situations in audio engineering.

Programming in C++

This is an undergraduate level course which I have contributed in teaching, grading, and lab sessions. This course provides exhaustive coverage of the standard C++ language features, with a variety of challenging practical exercises to solve real problems. The exercises are designed to encourage the use of object-orientation to develop reusable components as well as demonstrate the effective partitioning of larger systems. Upon completion of the course, students will have both the theoretical knowledge and practical experience to use C++ to design more maintainable and robust software systems.

Advanced Java Programming

This is an undergraduate students level course which I have contributed in teaching, grading, assessments, and conducting lab sessions. This course focuses on practical issues of using Java 2D and Java 3D APIs for creating 2D and 3D graphics, virtual models and animations. Using Java 2D/3D for data visualization is also discussed in the course. The course helps students to understand usage of Java 2D and Java 3D APIs and to gain practical skills in creating graphics applications in Java.

Java 2D/3D graphics

This is an undergraduate level course which I have contributedin teaching, grading, assessments, and conducting lab sessions. The objective of the course is hands-on training in developing advanced programming with Java. Students are expected to produce Java applications for educational and other purposes. This course also introduces many common situations and the discussions which leave students with a solid methodology for designing and building their own solutions using Java.

Advanced Algorithms

This is an undergraduate level course which I have contributed in teaching, grading, assessments, and conducting lab sessions. This course introduces overview of data structures, Arrays, Lists, Stacks, Queues, Recursion, Analysis of Algorithms, Trees, Sorting, and Searching. Upon completion of the course, students are able to evaluate the strengths and weaknesses of data structures and algorithms; develop efficient algorithms; use state-of-the-art of data structures and algorithms; and practice and further develop programming skills for applications.

Peoples Bank, Sri Lanka (2000-2001)

Object Oriented Programming with Java

This course is for adult leaners (IT professionals). I have developed the complete syllabus and teaching materials for the course. This course introduces objects, classes, inheritance, interfaces, and packages, etc. Each topic was presented with an emphasis on how the concepts relate to the real world, while simultaneously providing an introduction to the syntax of the Java programming language.

University of Colombo, Sri Lanka (1998-1999)

Java Programming

This is a professional level course which I have contributed in teaching, grading, and lab sessions. This course introduces programming in the Java language those who have some experience with other languages. Upon completion of the course, participants will learn how applications, applets, and servlets are similar and different, how to build a basic user interface that handles end user input, how to read data from and write data to files and databases, and how to send and receive data over the network, etc.