Note: We will not be admitting students to the Bachelor of Science (Hons) in Computing Science after AY2018.
Computing Science is the study of information, computation and computational thinking. It is wide-ranging, from programming, programming languages and engineering large software systems, to the design and evaluation of human/computer interfaces, algorithms, computer and network systems, as well as information retrieval and storage systems.
The programme will be a broad computing science programme whose main themes are security, connectivity, mobility, and usability. It gives you the opportunity to study a broad range of core computing science topics including Cyber Security, Mobile Human Computer Interaction, Multimedia Systems & Applications.
Graduates from Computing Science will have good prospects for working in a variety of careers within the IT industry. These can range from highly technical, systems-level development such as application developers, consultants as well as many other IT-related roles. Some of our students also go on to do research degrees. This is also a suitable background for becoming a teacher of Computing or, indeed, to work in other areas where logical problem-solving and system design skills are valued.
Eligibility and Exemption
Ngee Ann Polytechnic
* Applicants holding these diplomas must either have taken a Data Structures and Algorithms option, or successfully complete a short pre-sessional course to be accepted on the programme. Other relevant diplomas not listed will be considered on a case-by-case basis.
Students studying in the University of Glasgow (UoG) degree programmes are required to complete a four-week attachment in Glasgow at the home campus of the University of Glasgow, U.K., where they will undertake a 10-credit group design/practical module, experience a different culture and interact with students there. Some industrial visits and guest lectures may be organised by the University of Glasgow. The estimated cost ranges from S$4,500* to S$5,500*.
Note: Estimated costs are dependent on the prevailing currency exchange rate and flight ticket prices.
To design and implement, in a team, a software system that solves a (more-or-less) well-understood problem; to achieve a deliverable product in the form of a piece of working software.
The aims of the course are to:
introduce students to modern software development methods and techniques for building and maintaining large systems;
provide an opportunity for the students to apply these methods and techniques presented to them in the context of an extended group-based software development exercise;
make the students aware of the professional, social and ethical dimensions of software development;
instil in the students a professional attitude towards software development.
To develop practical expertise in, and understanding of, concurrent programming in Java;
To explore a variety of different concurrency control mechanisms;
To substantially develop the knowledge of C gained during summer preparatory reading;
To develop the students' experience and understanding of programming in a low-level language;
To develop the ability to craft efficient and effective code in a pointer-rich language;
To introduce concurrent programming in C using the PThreads library;
To further develop the ability to select and re-use existing software components and libraries;
To enhance the students' skills in engineering software as interacting sub-systems, using interfaces and libraries to manage medium sized software development projects.
To develop the student's skills in the design and analysis of algorithms;
To study algorithms for a range of important standard problems;
To introduce the student to the theory of NP-completeness together with its practical implications;
To make the student aware of fundamental concepts of computability.
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. This will include extension of pre-existing systems and arrangements for extending operational systems; understanding of how conventional programming languages interact with databases; understanding of the fundamental concepts, theories and methods of the relational data model; and an introduction to Information Retrieval concepts and techniques.
The aims of the course are:
to offer students the opportunity to become familiar with one of the most important interaction paradigms;
to enable students to become skilled in the use of techniques and tools for modelling, implementing and evaluating interactive systems;
to enable students to apply the theories, techniques and tools presented in the course via challenging exercises which combine design, implementation and evaluation.
To introduce the fundamental concepts and theory of communications;
To provide a solid understanding of the technologies that support modern networked computer systems;
To introduce low-level network programming concepts;
To provide our students with the ability to evaluate and advise industry on the use and deployment of networked systems.
To introduce the students to the styles of coding required with an OS;
To give a thorough presentation of the contents of a traditional OS, including the key abstractions;
To show the range of algorithms and techniques available for specific OS problems, and the implications of selection specific algorithms for application behaviour;
To develop an integrated understanding of what the computer is doing, from a non-naive view of hardware to the behaviour of multi-threaded application processes; present the alternatives and clarify the trade-offs that drive OS and hardware design.
This course aims to:
provide a conceptual framework that will enable students to understand familiar programming languages more deeply and learn new languages more efficiently;
show how the syntax of a programming language can be formalized;
explain the functions of compilers and interpreters, how they interact, and how they work;
show how to implement a compiler using compiler-generation tools.
This course introduces the legal, professional and social issues involved in the widespread development and use of computational devices, and stimulates students to develop their own, well-argued positions on many of these issues.
The aim of the individual project is to allow students to undertake a substantial piece of individual work, involving planning, specification, design, execution, evaluation, presentation and report-writing.
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. The course will endow students with the understanding of the new challenges big data introduces 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, and (iii) programming paradigms for efficient scalable access to big data.
This course provides an introduction to the foundational aspects of computer security, such as algorithms and protocols. It also covers ways in which these systems can be attacked and techniques for thwarting these attacks.
Distributed systems are ubiquitous in commerce and industry, from the international banking network to process control in large industrial sites. This course builds on the introductions to operating systems and networked systems in level 3, specifically focussing on the software engineering issues raised by distributed systems and algorithms for use in distributed systems.
The key feature of this course will be the assumption that a distributed system is one in which: partial failure is to be expected; local and remote operations differ greatly in cost; and an element of message passing is required for communication.
The aim of this course is to give the students an overview of advanced topics in Human-Computer Interaction, covering the key areas of multimodal interaction, novel interaction techniques, interactions for users with different abilities and collaborative media. These are all key issues for designing future interactive systems. There will also be a significant piece of coursework where the students will have to design, implement and test a multimodal interactive application. This will give them valuable experience in developing using these new forms of interaction. A further aim is to enable students to assess the potential of new interaction techniques to solve interaction challenges.
Mobile Human-Computer Interaction gives students an overview of the fields of mobile HCI and ubiquitous computing, and an understanding of the practical challenges associated with embedded software development for mobile interactive systems, and associated services.
Multimedia has become an indispensable part of modern computer technology. It is part of everyday life be it broadcasting material, educational or entertainment materials and/or personal videos or images. Better solutions are needed due to the growth and proliferation of multimedia in our daily life. The course will focus on advances in the development of multimedia systems and will be delivered with an emphasis on the practical side. It will introduce the theoretical and practical skills needed in handling multimedia data.
This course encourages students to apply engineering techniques to support the development of safety-critical applications. It also encourages students to consider the particular methodological and professional issues that surround the development of safety-critical systems.
Functional programming is introduced using Haskell. The standard programming techniques, as well as some advanced topics, are covered and applied to realistic programming problems.