The BSc / BSc (Hons) Computing Science degree is a three-year direct honours programme jointly offered by SIT and the University of Glasgow. Designed to support the government’s initiative to transform Singapore into a Smart Nation, this programme is the first computing science programme offered by an autonomous university in Singapore that specialises in Internet of Things (IoT).
The three-year programme encompasses a broad-based computer science curriculum which combines essential knowledge from IoT, software engineering, data analytics, cybersecurity and machine learning. Students will learn about fundamental principles in computing science including boolean logic, discrete mathematics, programming, software engineering, databases, operating systems and computer networks. With the foundation in computing science topics, students will be exposed to specialised modules in IoT, including topics on sensors, IoT network protocols, cloud and distributed computing, data analytics, cybersecurity fundamentals and machine learning. Students will learn to work independently, as well as in groups to gather requirements, design software architectures for IoT applications, and implement and test software modules to meet software engineering project objectives.
Graduates from this programme will be equipped with a strong computing science foundation, be practice-oriented, industry-ready and team players. They will be able to apply their software and hardware training to develop innovative IoT solutions in different IT-related roles.
Eligibility and Exemption
Diploma holders from any of the five local polytechnics, A level / IB Diploma graduates are welcome to apply.
Holders of BCA Academy Diploma in Construction IT are eligible to apply.
Module exemptions may be granted for the first year modules on a module-by-module basis subject to evaluation of applicant’s diploma and grade in related modules. Exemptions may also be considered for relevant professional or industrial certifications.
This module is intended to be at an introductory level to provide an overview of the different modules taught in the computing science programme. The purpose is to enable students to appreciate the relevance and interrelationships of different modules without being lost in the details, as well as to instill a computing science mindset in them.
Specifically, this module covers wide variety of topics ranging from binary number systems, the building blocks of hardware, the building blocks of software, operating systems, to computer networks and security.
Mathematics is the foundation of any computing discipline, including computing science. Hence, it is essential for students to acquire a level of mathematical maturity to help them better understand the computing science modules in their studies. This first mathematic module will equip students with the core mathematical knowledge in discrete mathematics. Topics covered include basic logic, functions, relations and sets, graphs and trees, and sequences and series.
Programming is one of the most basic and essential skills for any professional in the field of Computing Science. 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.
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 standard programming language (C).
The module will also introduce students the best practices in secure coding such as input validation and data sanitization, and issues such as integer exploits and buffer overflows.
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 includes explaining how a central processor operates, the characteristics of different memory subsystems, data representations and measurements of system performance will be covered. There will be a special emphasis on IoT and embedded system architecture, in particular the computational and resource constraints in IoT platforms such as ARM MBed, Raspberry Pi, Arduino and Intel Galileo.
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. This module provides a thorough presentation of the contents of a traditional OS, including the key abstractions.
It allows the students to learn about the range of algorithms and techniques available for specific OS problems, and the implications of selecting specific algorithms for application behaviour. Students will be able to practice concepts learnt in the module in lab sessions that involves experimenting with operating systems for IoT devices such as Raspbian OS, TinyOS, Mongoose OS for IoT (Google), Contiki OS, Amazon FreeRTOS.
The aim of this module is to equip students with the latest in Object Oriented Programming and Java Technologies in a systematic and fundamentals-first approach. The module gives coverage of object oriented concepts in Java that realize logical, arithmetical, execution flow control and data manipulation behaviours for the Internet-of-Things (IoT). 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 will be covered.
Students will also be taught the handling of exceptions in order to develop secured code. 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 a comprehensive 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 understanding of the students.
This module introduces students to modern software development methods and techniques for building and maintaining large systems. This course will emphasize on the Agile software development methodology, ensuring that the students are able to plan, organise and schedule a substantial team based project. It also covers capturing and specification of functional and non-functional requirements, as well as the design, implement and test a system which demonstrably meets project requirements. The students will also be taught to use appropriate Quality Assurance techniques, including test suite planning, continuous integration, as well as the use of version control and appropriate configuration management tools and techniques. It makes the students aware of the professional, social and ethical dimensions of software development and instils in the students a professional attitude towards software development.
Note that PSD is 10 credits and continues in Year 2 Trimester 2.
This module gives students the experience of working on a substantial team-based software project to develop new applications relevant to Singapore’s Smart Nation initiatives. The students will be required to fabricate or 3D-print IoT hardware components to be used for prototyping their IoT systems. The course provides the opportunity to apply the principles, practices and tools learned during the associated Professional Software Development course.
Note that Team Project is 10 credits and continues in Year 2 Trimester 2.
Worldwide, 98% of all microprocessors are used in embedded systems rather than personal computers. The prevalence of these systems globally imply that it is crucial to understand the fundamentals of embedded systems design and programming. This module aims to develop knowledge and practical expertise in embedded systems and learn about their basic architectural components, applications and corresponding design constraints, as well as understand different sensors for IoT applications.
Based on a specific microcontroller and a set of real-world applications and examples, students will learn the functionality of microcontrollers and their integration within an embedded system. This will include (but is not limited to) topics such as memory maps, GPIOs, interrupts, ADC/DAC, timers, serial/ parallel communication and power management. Students will also get an opportunity to explore a variety of different sensors and platforms, and enhance their understanding of programming in a low-level language such as C.
In lab practicals, students apply theoretical knowledge with exercises using a development platform and measurement equipment, and then progress to an industry relevant team project, giving them the opportunity to plan and organize a larger task, and make and justify their design and implementation decisions.
This module aims to explain the fundamental cryptographic primitives and core concepts of computer and network security such as symmetric-key and public-key encryption, digital signatures and secure hash functions; It emphasizes on the principles of secure protocol design, selection and practice using standard cryptographic primitives, developing student’s cyber security knowledge through the principles, practices and tools of secure system development based on standard security protocols and primitives; The module further explains how to analyse different security problems, generating security requirements that lead to the development of an appropriate secure IoT system.
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. Students will become skilled in the use of techniques and tools for modelling, implementing and evaluating IoT applications.
This module focuses on the protocols and networking for IoT and wireless sensor networks. Students will be introduced to networking, frameworks, application protocols, data representations, security and the tools used to connect devices to the internet of things. Some of the networks this module will cover include ZigBee, Sigfox, LoRA, NB-IoT, LTE-M, Bluetooth Low Energy, DSRC and Wifi. The students will also be exposed to the underlying routing protocol for IoT and wireless networks -- RPL, the IoT network stack i.e., Thread, application level protocol i.e., CoAP (HTTP equivalent) and IoT network architectures. The students will be required to build an IoT network application based on the topics learnt in this module.
Mobile devices such as smartphones and tablets have become the most common methods of access to computing and information services. This module 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 programming on mobile and IoT networked devices and amalgamates knowledge from foundational courses pertaining to computer networks, databases, operating systems and object-oriented programming.
This module aims to develop the software engineering and database administration skills required for designing, creating, running and developing a relational database application and its associated application software suite. The module will cover the understanding of the fundamental concepts, theories and methods of the relational data model, physical file systems, optimization and indexing will also be covered in depth. In addition to the basic concepts in relational databases, this module will introduce time-series and spatially organised databases as IoT data is all about spatio-temporal relationships and join operations.
Cloud and distributed computing is the fundamental for IoT and Pervasive Systems. This module builds on the introduction to operating systems and computer networks, specifically focusing on the software engineering issues raised by distributed systems and algorithms for use in IoT and pervasive systems. It aims to enable students to develop mechanisms, methodologies and applications for distributed IoT systems, distributed data processing algorithms, distributed algorithms for information dissemination along with theoretical/mathematical modelling of distributed computing, which allow such applications to be developed and deployed for the Smart Nation initiatives.
This module also covers cloud computing that includes the concept of software defined architectures, virtualisations and containers, such as Docker, Kubernates in cloud infrastructure as well as how cloud service providers organise their offerings including platform as a service (PaaS), mobile backend as a service and even serverless architectures.
Big Data is nowadays manifested in a very large number of environments and application fields pertaining to our education, entertainment, health, public governance, enterprising, etc. This module will endow students with the understanding of the new challenges big data introduces, in particular in the area of IoT and the currently available solutions. These include (i) challenges pertaining to the modelling, accessing, and storing of big data, (ii) an understanding of the fundamentals of systems designed to store and access big data, (iii) programming paradigms for efficient scalable access to big data, and (iv) data processing methodology to facilitate big data analytics.
The module will have a particular emphasis on the impact of the desiderata of scalability and efficiency in big data infrastructures, and expose students with a number of different cloud-based NoSQL systems and their design and implementation details, showing how they can achieve efficiency and scalability. Topics to be covered include Google FS, HDFS, Map-Reduce/Spark Programming paradigm (including an overview of computational statistics and machine learning in the Hadoop/Spark universe), Distributed NoSQL data store (BigTable/HBase), Cassandra and Hive.
This module encourages students to apply engineering techniques to support the development of safety-critical systems and cyber-physical systems (CPS) --- computational systems that are integrated with physical processes. Applications of such systems include medical devices and systems, consumer electronics, assisted living, traffic control and safety, automotive systems, process control, energy management and conservation, environmental control, aircraft control system, critical infrastructure control (electric power, and water resources), and defence systems.
It also encourages students to consider the particular methodological and professional issues that surround the development of both cyber-physical and Safety-critical systems. The students will be taught a number of risk analysis techniques such as Failure Modes, Effects and Criticality Analysis and Fault Tree Analysis as well as the application of safety critical design techniques such as redundancy and safety critical evaluation techniques such as Black Box testing.
This module aims to train students to independently write and present scientific/technical posters and reports to communicate effectively scientific/technical findings to a broad community of readers. Through this module, students will be taught the skills required to communicate complex scientific or technical information into content that a specific audience can easily understand.
The main topics covered are business email writing, requirements gathering, poster presentation, and software evaluation report writing.
Communication skills constitute a key component in the education of computing science and engineering students, not just to facilitate their education but to prepare them for the workplace. It is well-established that companies want graduates with strong communication skills. Technical skills aside, employers see the benefit of bringing on board engineers who can communicate complex ideas in a clear and productive manner, who make positive role models, and who can interact, cooperate and collaborate effectively with others in today’s work environment. This module aims to help you develop useful career and professional skills to meet the demands of today’s workplace.
The module comprises two main components: career search skills and professional communication skills. The career search component covers the entire job search process, from planning your career to drafting a cover letter and resume and finally, to attending the job interview. The second component focuses on written and oral communication at the workplace, to help you communicate competently and ethically. Communication tasks in this component are wide-ranging, including email correspondence and writing of technical minutes, as well as meeting and oral presentation skills.
Throughout the module, you will be directed to reflect on key concepts of professional identity, professional ethics and interpersonal effectiveness. Individual assignments and team projects in the module provide opportunities for you to apply these concepts and work towards the goal of cultivating personal and interpersonal effectiveness.
The Integrated Work Study Programme (IWSP) is uninterrupted 8-month duration (2 trimesters) work placement programme that will provide students with unique learning opportunities to achieve the following objectives: (1) applied learning – integration of theory and practice, acquisition of specialist knowledge and development of professional skills, (2) exposure to real-world conditions - appreciation of real-world constraints in respective industry contexts to develop skills of adaptability, creativity and innovation, and (3) smooth transition to jobs - practical experience which shortens work induction period.
The extended period of IWSP, coupled with real work being performed, allow placement organizations to evaluate the suitability of a student as potential employee, in effect making the IWSP equivalent to a job probation period. Students will also have many opportunities to immerse themselves in their placement organization’s business and culture, and decide if this is a good organization to work in.
Information visualization is the study of interactive visual representations of abstract data that exploits the capabilities of the human perceptual system. This abstract data could be numeric or non-numeric data, such as text, symbolic or geographic data. The main challenge in this area is to enable humans to intuitively explore a given data set to gain new insights, via the design of a cognitively useful visual and spatial mapping, with accompanying interaction techniques.
Information visualization is multidisciplinary, merging the areas of computer graphics, human-computer interaction, cognitive psychology, visual design and data science, and has become increasingly relevant in the age of big data and analytics in the understanding of large amounts of unstructured multivariate data, obtained from multiple sensors in IoT devices in real-time.
This module introduces the main principles and methods to design effective information visualizations, human perceptual and cognitive capabilities, and the different variety of information visualization techniques available. At the end of the course, students should be able to determine which methods are appropriate for visualizing certain data types, and to design and implement effective and compelling visualizations to explore and understand a data set.
A smart city is an urban area that employs multiple different sensors for electronic data collection and to supply information that is used to manage resources and assets in an efficient manner. Such technology can be used to both enhance the quality and performance of urban services, and also to reduce costs. This course is focused on the history, adoption and technology design of Internet of Things (IoT) systems in the context of city management and solutions development for urban challenges.
The course first begins with an introduction to the history of migration, city development and the urban issues of overcrowding, pollution and waste, the role of the public sector and the importance of the different ecosystems. The focus then shifts to the study of technology advancement of mobile and embedded computing, sensor networking and the historical development of several example smart city concepts, solutions and strategies in the timeline of global development, discussing important questions, benefits and potential drawbacks of such technology implementation. Finally the course engages students with the design thinking process to explore and create potential multidisciplinary solutions that solve urban challenges, yet also empathize with the urban city dweller at the heart. This course will be conducted in an interactive seminar style with discussion of assigned readings, viewing of videos and interactive hands-on exercises, before exploring the topics through a final report and project.