Information and Communications Technology (Software Engineering) Modules

Year 1

Introduction to ICT


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 a 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 Fundamentals


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 basic familiarity with the 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 practised in a scripting language (Python) as well as a standard programming language (C).

Computer Organisation and Architecture


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 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.

Web Systems and Technologies


IT applications are increasingly web-based. This module covers the essential web technologies to equip students with the useful skills to build websites for web-based IT applications.

To begin, an overview of the web architecture will be presented to clarify the myriad and rapidly evolving web technologies. Next, the popular web technologies will be covered in details.

Specifically, the topics include HTML, CSS, JavaScript for client-side scripting, PHP for server-side scripting, MySQL database system and industry best practices to secure the websites.

Mathematics and Statistics for ICT


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.

ICT in Organisations


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


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 modern Unix systems but being simpler and smaller, as well as programming in C/C++ programming language.

Data Structures and Algorithms


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.

Object-Oriented Programming


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


Computer networks and the 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), the 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.