Computer Science Focus Areas for BComp (CS)

CS courses are organised into Focus Areas of coherent courses according to technical areas of study. A CS Focus Area is satisfied by completing 3 courses from the Area Primaries, with at least one course at level-4000 or above. CS Foundation Courses (CFCs) that appear in the Area Primaries can be counted as one of the 3 courses towards satisfying a Focus Area. In this case, a student has to read just two other courses in the Area Primaries to satisfy the Focus Area. Elective courses are grouped into the Focus Areas as a guide for indicating their related areas of study.

The ten CS focus areas are listed below:

  1. Algorithms & Theory
  2. Artificial Intelligence
  3. Computer Graphics and Games
  4. Computer Security
  5. Database Systems
  6. Multimedia Information Retrieval
  7. Networking and Distributed Systems
  8. Parallel Computing
  9. Programming Languages
  10. Software Engineering

Algorithms & Theory

This focus area explores the fundamental theories that underpin computation and information as well as algorithmic techniques to solve computational problems. Read more …

Primaries

  • CS3230 Design and Analysis of Algorithms (CFM)
  • CS3231 Theory of Computation
  • CS3236 Introduction to Information Theory
  • CS4231 Parallel and Distributed Algorithms
  • CS4232 Theory of Computation (no longer offered in AY2021-22)
  • CS4234 Optimisation Algorithms


Electives

  • CS3233 Competitive Programming
  • CS4257 Algorithmic Foundations of Privacy
  • CS4261 Algorithmic Mechanism Design
  • CS4268 Quantum Computing
  • CS4269 Fundamentals of Logic in Computer Science
  • CS4330 Combinatorial Methods in Bioinformatics
  • CS5230 Computational Complexity
  • CS5234 Algorithms at Scale
  • CS5236 Advanced Automata Theory
  • CS5237 Computational Geometry and Applications
  • CS5238 Advanced Combinatorial Methods in Bioinformatics
  • CS5330 Randomized Algorithms

Artificial Intelligence

Artificial Intelligence (AI) is the branch of computer science that aims to create intelligent machines and includes topics on learning, reasoning, planning, perception, language understanding, knowledge representation, and robotics. Read more …

Primaries

  • CS2109S Introduction to AI and Machine Learning (CFM)
  • CS3243 Introduction to Artificial Intelligence
  • CS3244 Machine Learning
  • CS3263 Foundations of Artificial Intelligence
  • CS3264 Foundations of Machine Learning
  • CS4243 Computer Vision and Pattern Recognition
  • CS4244 Knowledge Representation and Reasoning
  • CS4246 AI Planning and Decision Making
  • CS4248 Natural Language Processing

Electives

  • CS4220 Knowledge Discovery Methods in Bioinformatics
  • CS4261 Algorithmic Mechanism Design
  • CS4269 Fundamentals of Logic in Computer Science
  • CS4277 3D Computer Vision
  • CS4278 Intelligent Robots: Algorithms and Systems
  • CS5215 Constraint Processing
  • CS5228 Knowledge Discovery and Data Mining
  • CS5242 Neural Networks and Deep Learning
  • CS5260 Neural Networks and Deep Learning II 
  • CS5340 Uncertainty Modelling in AI
  • CS5339 Theory and Algorithms for Machine Learning

Computer Graphics and Games

This focus area covers the fundamentals of computer graphics algorithms and techniques as well as its applications to developing computer games. Read more …

Primaries

  • CS3241 Computer Graphics
  • CS3242 3D Modelling and Animation
  • CS3247 Game Development
  • CS4247 Graphics Rendering Techniques
  • CS4350 Game Development Project

Electives

  • CS3218 Multimodal Processing in Mobile Platforms
  • CS3240 Interaction Design
  • CS3249 User Interface Development
  • CS4240 Interaction Design for Virtual and Augmented Reality
  • CS4243 Computer Vision and Pattern Recognition
  • CS4249 Phenomena and Theories of HCI
  • CS4351 Real-time Graphics
  • CS5237 Computational Geometry and Applications
  • CS5240 Theoretical Foundation of Multimedia
  • CS5343 Advanced Computer Animation
  • CS5346 Information Visualisation

Computer Security

This focus area covers the principles and practice of protecting computer systems from malicious attacks and information theft. Read more …

Primaries

  • CS2107 Introduction to Information Security
  • CS3235 Computer Security
  • CS4236 Cryptography Theory and Practice
  • CS4230 Foundations of Modern Cryptography
  • CS4238 Computer Security Practice
  • CS4239 Software Security

Electives

  • CS3221 Operating Systems Design and Pragmatics
  • CS4257 Algorithmic Foundations of Privacy
  • CS4276 IoT Security
  • CS5231 Systems Security
  • CS5250 Advanced Operating Systems
  • CS5321 Network Security
  • CS5322 Database Security
  • CS5331 Web Security
  • CS5332 Biometric Authentication
  • IFS4101 Legal Aspects of Information Security
  • IFS4102 Digital Forensics
  • IFS4103 Penetration Testing Practice

Database Systems

The Database Systems area delves into the design principles, implementation techniques, and applications of systems for data management and analytics. Read more …

Primaries

  • CS2102 Database Systems
  • CS3223 Database Systems Implementation
  • CS4221 Database Applications Design and Tuning
  • CS4224 Distributed Databases
  • CS4225 Big Data Systems for Data Science

Electives

  • CS4220 Knowledge Discovery Methods in Bioinformatics
  • CS5226 Database Tuning
  • CS5228 Knowledge Discovery and Data Mining
  • CS5322 Database Security 

Multimedia Information Retrieval

Through this focus area, students learn how to retrieve relevant information from a vast amount of unstructured multimedia data (text, image, audio, video). Read more ...

Primaries

  • CS2108 Introduction to Media Computing
  • CS3245 Information Retrieval
  • CS4242 Social Media Computing
  • CS4248 Natural Language Processing
  • CS4347 Sound and Music Computing 

Electives

  • CS5246 Text Mining
  • CS5241 Speech Processing 

Networking and Distributed Systems

This area focuses on how computing devices can be interconnected and how they can work together in a distributed manner to perform computations and disseminate information. Read more …

Primaries

  • CS2105 Introduction to Computer Networks (CFM)
  • CS3103 Computer Networks Practice
  • CS4222 Wireless Networking
  • CS4226 Internet Architecture
  • CS4231 Parallel and Distributed Algorithms

Electives

  • CS3237 Introduction to Internet of Things
  • CS4344 Networked and Mobile Gaming
  • CS5223 Distributed Systems
  • CS5224 Cloud Computing
  • CS5229 Advanced Computer Networks
  • CS5248 Systems Support for Continuous Media
  • CS5321 Network Security

Parallel Computing

This focus area aims to give students the skills to understand parallelism and to architect algorithms, programs, and solutions that can take full advantage of the latest hardware. Read more …

Primaries

  • CS3210 Parallel Computing
  • CS3211 Parallel and Concurrent Programming
  • CS4231 Parallel and Distributed Algorithms
  • CS4223 Multi-core Architecture

Electives

  • CS5222 Advanced Computer Architectures
  • CS5223 Distributed Systems
  • CS5224 Cloud Computing
  • CS5239 Computer System Performance Analysis
  • CS5250 Advanced Operating Systems 

Programming Languages

The abstractions and expressive power of programming languages underlie how programmers communicate their intention to machines. This focus area studies the design and implementation of programming languages and the principles behind associated tools. Read more …

Primaries

  • CS2104 Programming Language Concepts
  • CS3211 Parallel and Concurrent Programming
  • CS4212 Compiler Design
  • CS4215 Programming Language Implementation

Electives

  • CS3234 Logic for Proofs and Programs
  • CS4216 Constraint Logic Programming
  • CS5232 Formal Specification & Design Techniques
  • CS5214 Design of Optimising Compilers
  • CS5215 Constraint Processing
  • CS5218 Principles and Practice of Program Analysis

Software Engineering

Building complex software that is correct and robust requires a systematic and disciplined approach. This focus area equips students with the technical knowledge to model, design, build, verify, and test software. Read more …

Primaries

  • CS2103/T Software Engineering (CFM)
  • CS3213 Foundations of Software Engineering
  • CS3219 Software Engineering Principles and Patterns
  • CS4211 Formal Methods for Software Engineering
  • CS4218 Software Testing
  • CS4239 Software Security

Electives

  • CS3203 Software Engineering Project*
  • CS3281 Thematic Systems Project I*
  • CS3282 Thematic Systems Project II*
  • CS3216 Software Development on Evolving Platforms
  • CS3217 Software Engineering on Modern Application Platforms
  • CS3226 Web Programming and Applications
  • CS3234 Logic for Proofs and Programs
  • CS5219 Automatic Software Validation
  • CS5232 Formal Specification & Design Techniques
  • CS5272 Embedded Software Design

* If the course is stated as a core in your degree requirement, it cannot be double counted towards CS Breadth and Depth requirements.

Others

The following course(s), not fitting any focus area above, can be considered as elective(s) to make up CS Breadth and Depth Requirement.

  • CS2220 Introduction to Computational Biology
  • CS5233 Simulation and Modeling Techniques