With the prevalence of Infocomm Technologies (ICT) across all industry sectors including finance, hospitality, manufacturing and healthcare, proper software engineering is critical to support the daily operations of many organisations. Software engineering covers the design, development, operation, analysis, maintenance and management of software in a holistic and systematic manner.
Highly-Specialised: Other than developing the foundational knowledge required by any ICT professional, this programme will also cover all learning outcomes specified by the IEEE/ACM Joint Task Force on Computing Curricula for Software Engineering. Key subjects in the areas of secured software development, mobile computing, cloud architecture solutions and big data analytics which are in high demand will also be covered.
Industry-focussed: Partnerships will be forged with key industry majors to support the curriculum through the sharing of state-of-the art technologies, expertise and resources. Students may have the opportunity to gain internationally-recognised industry certifications as part of the programme.
Practice-Oriented: Emphasis will be placed on advancing academic knowledge through the use of practical hands-on training to solve real-world problems. Students will participate in the Integrated Work Study Programme (IWSP) in their final year. Students will be on a structured year-long work placement that is integrated with flip classroom teaching and an industry focused capstone project.
Accreditation of the programme will be sought with the Engineering Accreditation Board.
This programme will provide graduates with the required academic knowledge and professional skillsets for generic ICT job opportunities and specialist software engineering jobs such as, Software and Applications Manager; Software Systems Architect; IT Service Manager; Information Technology Project Manager; Software,Web and Multimedia Developer; and Cloud Solutions Architect.
Eligibility and Exemption
Diploma holders from any of the five local polytechnics and A-level graduates are welcome to apply. Subject to approval, applicants may be granted exemptions for up to 10 modules based on the modules taken during their diploma course. Exemptions may also be considered for relevant professional or industrial certifications.
To be updated.
This module is intended to be at an introductory level to provide an overview of the different modules taught in the ICT programme. The purpose is to enable students to appreciate the relevance and interrelationships of the different modules without being lost in the details, as well as to instil an ICT mindset in them. Specifically, this module covers wide variety of topics ranging from binary systems, the building blocks of hardware, the building blocks of software, operating systems, to computer networks and security.
Programming is one of the most basic and essential skills for any professional in the field of Information and Communication Technologies (ICT). This module is intended for students with no prior computing knowledge or experience beyond a basic familiarity with operation of a personal computer, and can be taken by any student interested in acquiring basic programming skills. In the context of the ICT programmes, the module is intended to be taken by students in their first term. The foundations provided in this module are essential in most modules of the following terms in the ICT programmes. The topics covered in this module include: Introduction to the historical and social context of computing, Basic concepts in programming (Data types, Control structures, Functions, Arrays, pointers, Files), Running, Testing and Debugging scripts and programs, Overview of Programming paradigms. Programming concepts are demonstrated in a variety of languages and practiced in a scripting language (Python) as well as a standard programming language (C).
This is a foundation module whose main focus is on the characteristics and development of relatively high level ‘building’ blocks of a computer system. The highest level learning objective is to make clear how a computer program written in text is actually ‘executed’ by a computer, regardless of it being a mainframe, desktop or embedded system. A myriad of basic lower level topics include explaining how a central processor operates, the characteristics of different memory subsystems, data representations and measurements of system performance will be covered. To ensure a in-depth coverage of the topics, students will be exposed to assembly language programming and may be given the opportunity to experiment with a micro-controller based system during the course of the module. This module will also introduce some higher-level languages (such as C) that serve as a precursor for the "Embedded Systems Programming" module.
Mathematics is the foundation of any computing discipline, including Information Communications Technology (ICT). Hence, it is essential for students to acquire a level of mathematical maturity to help them better understand the ICT modules in their studies. This module will equip students with the core mathematical knowledge in two broad focus areas: discrete mathematics, and probability and statistics. For discrete mathematics, topics covered include basic logic, functions, relations and sets, graphs and trees, and sequences and series. For probability and statistics, topics include descriptive statistics, probability theory, probability distributions, sampling distributions, and inferential statistics.
This module provides an introduction to information and communications technology within the organizational and social context, and the role technology plays in managing businesses and delivering services. Technology trends towards greater complexity, networking and mobility, methods for improving business competitiveness, and creation of new value via technology in the current networked and global climate will be discussed. Other topics include processes, policy implications, ethics and social responsibility are also covered. The focus will be on the management and strategy aspects of computer systems. The content will be explored through case studies and discussions, workshops and team projects. There may be invited guest lectures provided occasionally over the semester.
Operating Systems are an essential part of any computer system. It defines an abstraction of hardware behaviour with which programmers can control the hardware. It also manages the convenient and efficient resource sharing among the computer’s users. In the context of the ICT programmes, the module is intended to be taken by students in their second trimester. The foundations provided in this module are essential in most modules of the following terms in the ICT programmes. The topics covered in this module include: Introduction to the Operating Systems, their structure, what they do and how they are designed and constructed, Process Management, Process concept, Process Scheduling, Threads, Multithreaded Programming, Synchronisation, Mutex Locks and Semaphores, Deadlocks, Memory Management, Memory Hierarchy and Memory Management Unit, Linking and Memory Allocation, Fragmentation, Paging, Segmentation, Virtual Memory Management, Demand Paging, Page Replacement, Thrashing, File System Management and Storage Management, File Attributes, Directory Structure, File System Structure, Mass Storage Structure, I/O Systems, Protection and Security, Case Study on The Linux System. Operating Systems concepts are demonstrated in an instructional operating system that is similar to a modern Unix systems but being simpler and smaller, as well as programming in C/C++ programming language.
This module introduces the fundamental concepts of data structures and the complexity analysis of algorithms that operate on them. Topics include recursion, fundamental data structures (including arrays, linked lists, stacks, queues, hash tables, trees, heaps and graphs), and efficient algorithms for manipulation and searching of data in these data structures (e.g. sorting, hashing, searching, etc.). The inner workings of the different data structures and algorithms introduced in this course are demonstrated using a programming language such as Java.
The aim of this introductory module is to enable students to learn the basic language constructs and APIs of Java and C++ and apply them to construct practical software components. The module gives coverage of fundamental algorithmic constructs in Java and C++ that realize logical, arithmetical, execution flow control and data manipulation behaviours in code. Essential APIs and code specification will be covered to encourage reusability for more efficient, scalable programming. Students will also be introduced via hands-on assignments to the application of basic object-oriented concepts that include class, inheritance and polymorphism. Basic testing using JUnit and CPPUnit will be covered. Upon completion of this course, students will be able to apply what they have learnt to implement object-oriented software applications. They will also have an understanding of the benefits of code documentation and reusability.
Computer networks and Internet are ubiquitous. Many IT applications are now web-based and are dependent on the networks. This module covers the technologies of computer networks, using the Internet as a real-world reference. The topics covered include the OSI and TCP/IP networking models, the ideas of layering, encapsulation, communication protocols, network infrastructures (LANs and WANs), interconnection of networks with switches and routers, IP addressing and routing, TCP, UDP, common application layer protocols like DHCP, DNS and HTTP, socket programming, and network management. In addition, practical lab exercises using network simulator and protocol analyser will be introduced to enhance the understandings of the students. Upon completion of this module, students should also be ready to sit for the industry CCENT/CCNA Routing and Switching certification.
The aim of this introductory module is to enable students to learn and apply the basic principles and processes of software engineering. It gives broad coverage of important terminologies, concepts and techniques in software engineering including commonly used software life-cycle process models (e.g. agile, waterfall, spiral, V-Model, etc.). Upon completion of this course, students will be able to do basic software modelling and design, particularly using UML and be able to adopt appropriate process models for software development projects. They will also have a basic understanding of user requirements, software architecture, testing, debugging, software maintenance, quality assurance and project planning.
Human-Computer Interaction (HCI) is the study of how humans use computers, and design methods and implementation of computer systems to ensure ease of learning and usage. This module introduces fundamental methods, principles and tools for designing, programming and testing human-centric systems. Topics covered include usability and affordances, metaphors and conceptual models, human cognitive psychology, evaluation techniques and user interface software tools. Recent topics in HCI are also reviewed, including mobile interfaces, new gesture-based interactions and augmented reality.
Information Management (IM) is primarily concerned with the representation, organization, and presentation of information. This includes methods for efficient access and update of data, data modelling and abstraction, and file storage techniques. Topics covered include relational database concepts, query languages, ACID properties, indexing and transaction processing. Recent developments in distributed databases, semi-structured and non-relational key-value and flexible model databases will also be explored. Practical aspects of database design and programming will be done using a combination of PHP and MySQL.
Embedded systems are devices where the computing capabilities are embedded and may not be apparent to its users. Examples of embedded systems include digital wristwatches, MP3 players or even the Electronic-Control Unit (ECU) of the modern automobile. Computing capabilities in such devices are usually provided by microcontrollers (MCU). This module will introduce the student to the architecture and subsystems of embedded systems, microcontroller interfacing, memory maps, real-time operating systems (RTOS), typical embedded peripherals such as input/output (I/O) ports, timer, serial communication, support for interrupts, programming of the microcontroller and modern tools for embedded systems development. It will also review the concepts covered in the ICT foundations courses (e.g. ICT1003) and demonstrate the relevance between generic theoretical concepts and the applied embedded systems.
This is the first of the two compulsory value-added programmes that aims to develop the “soft” skills that would allow the ICT graduates to successfully transit from a student to an ICT professional. This module will consist of a series of workshops covering various topics to develop the skills necessary for the students to successful gain employment in the ICT sector. Topics will include Career planning & management, Self-discovery, Personal branding, Job search strategies, Resume writing & cover letter, Interview skills, Business etiquette, Networking skills and Managing online image. Industry talks from companies from various ICT sectors will also be conducted to aid the student in better understanding the different ICT sectors as well as their potential career advancements in each sector.
Mobile devices such as smartphones and tablets have become the most common methods of access to computing and information services. This course will cover the fundamental programming principles, software architecture, user-interface considerations and resource constraints for a mobile environment. The course aims to enhance understanding of the multi-faceted nature of mobile programming and amalgamates knowledge from foundational courses pertaining to computer networks, databases, operating systems and object-oriented programming.
Software design is concerned with issues, techniques, strategies, representations, and patterns used to determine how to implement a component or a system. The design will conform to functional requirements as well as non-functional requirements such as resource, performance, reliability and security. This module focuses on techniques for software design in the context of large and complex software systems. Topics include software architecture, design principles (information hiding, cohesion and coupling), design notations, evaluation methods and their associated software tools. The course introduces more advanced design notations and concepts. Several design methods are presented and compared, with accompanying examples and case studies. An emphasis will be on placed on the application of design principles and evaluation of their trade-offs to the creation of successful software.
Software applications need not be executed as a singular program on a single computer, but can be executed across multiple computers across a network to accomplish a common objective. This module extends the earlier “Web Systems and Technologies” module and cover in depth advance technical concepts of distributed systems including client-server, peer-to-peer, grid and cloud computing. Student will also be exposed to the concepts of virtualisation and their deployments. During the course of this module, students may also have the opportunity to develop programs utilising cloud services provided by Microsoft Azure and Amazon Web-services to further expand their practical skills.
This module focuses on the early phases of the software lifecycle, namely Requirement specification and Analysis of software specifications. It covers fundamental concepts and techniques involved in gathering, specification and analysis of software requirements. Principles of software modelling are introduced and different types of semi-formal and formal methods of modelling and analysis are discussed and practiced in detail; covering both Classical and Object Oriented approaches to specification analysis. CASE tools are introduced and the application of validation and testing early in the software life cycle are emphasized. Fundamental software engineering economics e.g. software cost estimation are also introduced.
This module focuses on the skills required by IT professionals to work effectively and ethically in a business environment. In accordance with the professional guidelines set by Association for Computing Machinery (ACM) and IEEE Computer Society, the module exposes students to professional, ethical, legal, security and social issues and responsibilities of IT professionals.It is designed for students in their second year of Higher Education studies and assumes familiarity with various technical aspects of ICT as a profession. The module consists of a series of workshops designed to develop the necessary skills for students to better integrate into the ICT workforce and progress in their careers while advancing the integrity and reputation of the profession of Software Engineering. Topics covered include Ethical decision making, Professional codes of conduct, Ethical issues encountered by IT professionals, information security and issues in the management of information technology, Performance management and Effective teamwork. Students will also be attending career talks and interviews for their IWSP placements as part of this module.
To keep up-to-date with the advances in technology, it is common for ICT professionals to attend courses during their careers. Some of these courses may also lead to internationally recognised certifications that are highly-valued by the industry. To inculcate the student with this approach to life-long learning and career advancement, this module requires the student to pass at least one of the certification courses offered by various industry majors or certification bodies. The list of certification courses accepted will be updated regularly to cover the areas that are in demand by the industry. Such areas may include data analytics, cloud solutions architectures, open-source software development and cyber-security.
Students will be grouped into teams of 5-6 and will be working on an integrated team project utilising all the foundation knowledge and skills obtained from the modules that they have covered so far. The students will work to provide a solution for a real problem that will be solicited from industry (e.g. prototyping for a SME). This project will enable students to develop the required skills for working as a team. As this project will run through the entire duration of the semester, some students may be taking their breaks or holidays. Thus, this creates an opportunity for the teams to make use of online collaboration tools as well as practice coordination of team projects where members have heterogeneous abilities and schedules.
Software verification and validation uses both static and dynamic techniques of system checking to ensure that the resulting program satisfies its specification, and that the implemented program meets the expectations of the stakeholders. Static techniques are concerned with the analysis and checking of system representations throughout all stages of the software life cycle, while dynamic techniques involve only the implemented system.
This module will introduce the students to the various software performance testing methodologies for different software systems under varying load, stress and scales. Application profiling techniques include performance profiling and memory profiling and supporting tools will also be introduced to equip students with the ability to look for potential system bottlenecks during development which can reduce the number of problems that might show up later when the application is stressed. Students will also be able to perform benchmarking for enterprise systems and recommend improvements that will optimise the operations of the system. This module will also enable students to understand the various trade-offs (e.g. associated risk including cost, stability, etc.) during software optimisation. In-depth algorithms optimisation utilising the basic concepts covered in ICT1008 (Data Structures and Algorithms) will also be discussed to expose the students to optimisation at different levels of the system. Performance anti-patterns will be explored to familiarize students with various practices in the industry.
As more organisations are dependent upon software for their operations, insecure software can be one of the biggest threat that may cripple an entire organisation and potentially lead to massive losses. Thus, there is a need for software engineers to recognise this and build secure software at the onset. This module will cover the process of building secure software, and the techniques and tools that can be applied at each stage of the software development lifecycle, including: security requirements analysis, secure design, threat modelling, secure coding and security verification. Reference may be made to some industry methodologies, for example, Microsoft Security Development Lifecycle.
Software management is concerned with knowledge about the planning, organization, and monitoring of all software life-cycle phases. Management is critical to ensure that software development projects are appropriate to an organization, work in different organizational units is coordinated, software versions and configurations are maintained, resources are available when necessary, project work is divided appropriately, communication is facilitated, and progress is accurately charted. This module focuses on methods, techniques, processes and CASE tools needed for software management using current best practices. Topics include life cycle software models highlighting the differences between agile and traditional methods, software project management from planning, estimation, scheduling to project monitoring, team communication and process improvement through various measurements. Fundamental concepts and techniques in software engineering economics are also introduced. Students will learn about various decision analysis techniques under resource-limited situations and be able to use the relevant technique to solve the most critical decision making problem in a software project which is cost estimation. The module also covers configuration management which is an essential activity that benefits project management, development and many other areas in the software development life cycle. Students will develop a management plan for a software project.
With the availability of Massively Open Online Course (MOOC) such as Coursera, Udacity, Edx, etc., there is now a wealth of knowledge that can be tapped from the Internet. This is further supplemented by other sources of online contents such as Wikipedia as well as easily-usable search engines like Google. The purpose of this module is to expose the student to this emerging trend and train them to be independent learners. Students will be teamed into groups of 2-4 and each team will have to decide on a non-ICT subject in another industry sector (e.g. accountancy, taxation, nursing practice, hotel management, etc) of their common interest. Students will have to self-learn on the selected subject and each team will have to create their own e-Learning portal that will be scored by other teams as well as the international community.
This is a major individual project that is to be undertaken by the student that utilises the technical capabilities, professional skills and the academic knowledge obtained during the course of this degree programme. The project has to be of reasonable complexity and allows scope for the student to demonstrate the various aspects of software engineering. As the capstone project will be carried out concurrently with the student’s placements, hosting organisations may also propose capstone projects which may lead to actual industrial usage.
Students have to perform a year-long work placement to integrate the skills and knowledge obtained from the course in the real world. Students will be working all afternoons (or equivalent) in a company with an ICT-related job-scope. Integrated studies (the Flip Modules, ICT4003, ICT4004 & ICT4005) during their placements will also be carried out to promote lifelong learning.
The module highlights the importance of productivity and the different ways of measuring and managing it. It introduces productivity improvement programs such as action learning, quality circles, and inter-firm comparisons, and offers information on the most important areas in which productivity can be improved (quality maintenance, waste reduction and human resource management). The course will also cover key knowledge areas in processes, tools, techniques and best practices in productivity management. As students are taking this module during their IWSP, they could practice many of the topics covered to help analyse and optimise the productivity at their host organisation.
Instead of the traditional problem-based thinking that many engineers are accustomed to, this module introduces an alternative methodology that focuses on a solution-based approach. This module will introduce the student to the basic principles of design thinking including reframing, collaborative exploration, user understanding, ideation, prototyping and integrative thinking. A solution-based approach allows for ideas to be quickly conceptualised and improved upon. It is intended that the student will apply theses design thinking methodologies during their IWSP, thus, inculcating their host organisation with an alternative approach to innovation that can be utilised in their products as well as their business operations.
This course aims to teach the students about the concepts of change management, drawing to three levels namely societal, organizational and individual. The students will be introduced to a number of change management theories and apply the theories at different levels. As this module is going to be carried out concurrently with the student’s placement, the student would also be able to analyse and reflect how changes took place at the hosting organizational as well as at the individual level. The student should also be able to develop, after taking this module, individualised strategies when dealing with change in the future.