![]() |
Computer Science Focus Areas for BComp(CS)
CS modules are organised into Focus Areas of coherent modules according to technical areas of study. A CS Focus Area is satisfied by completing 3 modules from the Area Primaries, with at least one module at level-4000 or above. CS Foundation Modules (CFM) that appear in the Area Primaries can be counted as one of the 3 modules towards satisfying a Focus Area. In this case, a student has to read just two other modules in the Area Primaries to satisfy the Focus Area. Elective modules are grouped into the Focus Areas as a guide for indicating their related areas of study:
Algorithms and Theory provide foundations for computer science. A theoretical study of machines allows us to determine what in principle can be done by computers and how much resources (for example, time or space) are needed to do a particular task. Algorithm building underlies all computational tasks, and without a proper study and analysis of algorithms, programming efficiently would be next to impossible. This area also provides students knowledge about different models of computation, and how they relate to each other. For example, does availability of random bits help in completing a task faster? There are also various famous open problems, which have received a lot of public attention. For example Clay foundation has announced a million dollar prize for solving the question whether P=NP (see http://www.claymath.org/millennium/).
Quote
"He who loves practice without theory is like the sailor who boards ship without a rudder and compass and never knows where he may cast.-- Leonardo da Vinci
Modules
Primaries*
CS3230 Design and Analysis of Algorithms (CFM)
CS3231 Theory of Computation
CS4231 Parallel and Distributed Algorithms
CS4235 Computational Geometry
* : Students who have taken CS5206 Foundation in Algorithms before AY2011-2012 may count it towards Algorithms & Theory area.
Electives
CS5230 Computational Complexity
CS5237 Computational Geometry and Applications
CS5238 Advanced Combinatorial Methods in Bioinformatics
Artificial Intelligence (AI) is the branch of computer science that aims to create intelligent machines. It is important because it affects us in many aspects of our lives: smart appliances (refrigerators, washing machines, ovens, etc), smart web search and commerce like Amazon.com, smart stock trading using AI, cool games and toys (remember the chess-playing program Deep Blue that beat the world champion Garry Kasparov in 1997), help desks, friendly avatars, etc. Bill Gates once said this:
"If you invent a breakthrough in artificial intelligence, so machines can learn, that is worth 10 Microsofts."
Sean's Avatar that is based on a classical AI programme known as Eliza that mimics human intelligence.
Modules
Primaries
CS3243 Introduction to Artificial Intelligence
CS3244 Machine Learning
CS4246 AI Planning and Decision Making
CS4244 Knowledge-Based Systems
Electives
CS4216 Constraint Logic Programming
CS4220 Knowledge Discovery Methods in Bioinformatics
CS4248 Natural Language Processing
CS5209 Foundation in Logic & AI
CS5215 Constrained Programming
CS5228 Knowledge Discovery and Data Mining
CS5247 Motion Planning and Applications
CS5340 Uncertainty Modelling in AI
We live in a networked world today. Smart as well as "dumb" devices are interconnected, both by wires and over the air, so that there can be flawless interchange of information and the extension of one's reach. Haven't you come across talking soap box, active contact lens and intellignent refrigrator all connected to the Internet, ready to serve you whether you are at home or office? Computer network modules focus on how connectivity can be achieved. They span the range of knowledge from the underlying engineering principles of signaling to advanced network protocols used in high speed communication. Such knowledge will empower the students with the skills to design and operate the networked solutions as required by the users. As computation, communication, and control demands grow, new kinds of network infrastructures (such as sensor networks, 4G, terabit Ethernet, power and mobility aware network infrastructure etc.) will be needed. The sound fundamentals that students will learn in this focus will prepare them to work with these future connection medium.

Advances in computer networks have surpassed the imagination of the well known guru's in the computer industry, and the future is just too bright!
"32 bits should be enough address space for Internet" -- Vint Cerf (considered Father of the Internet), 1977 " There is no reason anyone would want a computer in their home." -- Ken Olson, president, chairman and founder of Digital Equipment Corp., 1977. "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway" -- Andrew S. Tanenbaum Modules Primaries Electives 1 CS3103 must be read together with CS3103L Computer Networks Laboratory. CS3103 and CS3103L together count as one Area Primary.Quotes
CS2105 Introduction to Computer Networks (CFM)
CS3103 Computer Networks and Protocols1
CS4222 Wireless Computing & Sensor Networks
CS4274 Mobile and Multimedia Networking
CS4344 Networked and Mobile Gaming
CS5229 Advanced Computer Networks
CS5248 Systems Support for Continuous MediaDatabase Systems
Database programming, design, management and administration are among the most promising specialties in an uncertain job market in times of challenges for the economy. The demand for computer scientists and engineers specialised in the database field is high and growing.
"Employment of database administrators is expected to grow by 20 percent from 2008 to 2018, much faster than the average. Demand for these workers is expected to increase as organizations need to store, organise, and analyze increasing amounts of data. In addition, as more databases are connected to the Internet, and as data security becomes increasingly important, a growing number of these workers will be needed to protect databases from attack." United States Department of Labor, Bureau of Labor Statistics: http://www.bls.gov/oco/ocos305.htm
The job may not look glamour at first but the advent of a global information infrastructure has transformed the image of the beardy nerd in the third back office into one of an entrepreneurial dynamic professional ready to work in a variety of sectors and tackle the challenging and pervasive issues of the management of critical enterprise data. Sergey Brin and Larry Page, the co-founders of Google, studied data mining and information retrieval at Stanford University Infolab, the former Stanford University Database Group.
"Obviously the boundaries of databases -- what's a database person, and what's a database problem -- I think that's evolving. I think this has been said many times in the community: we have to think broadly about what a database problem is, and what the core of database technology is." Professor Jeffrey Ullman in "Jeffrey D. Ullman Speaks Out on the Future of Higher Education, Startups, Database Theory, and More." SIGMOD Record (Volume 30, Number 3)
The structure of the database track at NUS SoC exactly provides the opportunity to build up a flexible variety of skills and competences around a robust trunk of core database knowledge and expertise. The database track leads to a core competence as a database programmer, designer and administrator. It covers the fundamentals of relational databases (CS2102), database management systems architecture and algorithms (CS3223), advanced database design (CS4221) and database tuning (CS5226). Yet advanced topics and options allow the young professionals to choose to specialize into domains such as business intelligence or even to aim at graduate studies in database research.
NUS SoC is at the spearhead of database research with world famous researchers actively involved in the scientific steering of top international conferences and journals such as Professor Ooi Beng Chin (IEEE Fellow and recipient of the 2009 SIGMOD Contributions Award) and Professor Ling Tok Wang (ACM Distinguished Scientist for 2009 and recipient of the 2010 DASFAA Outstanding Contributions Award.) These distinguished faculties lead a team of academics that can share their knowledge, expertise and experience with the students of this track and train outstanding professionals.
Modules
Primaries
CS2102 Database Systems
CS3223 Database Systems Implementation
CS4221 Database Design
CS5226 Database Tuning
Electives
CS4220 Knowledge Discovery Methods in Bioinformatics
CS5225 Parallel & Distributed Database Systems
CS5228 Knowledge Discovery and Data Mining
CS5322 Database Security
With the proliferation of text and multimedia information, users are now able to find answers to almost any questions on the Web. However, they are often bewildered by the huge amount of information available to them. Information retrieval (IR) involves the processing and analysis of such unstructured information in order to return the most relevant set of information in answer to user's queries. In the early days, IR deals only with text and the associated metadata, and successful text-based search engines have been developed and routinely used, such as Google, Yahoo and Bing. Recently more media contents are being shared on the Web such as the images in Flickr and video in Youtube. For effective retrieval of such contents, IR needs to be extended to deal with audio visual contents. As the size of information grows, users are also looking for systems that can provide concise and precise answers to their information needs, and question-answering (QA) is naturally evolved to address this needs. With the widespread use of mobile devices and sensors, we are looking into a future world where huge amount of interconnected information is available, often in real time. As the needs for information evolves, more advanced techniques are needed to analyse text, images and videos. Thus the field cover text processing, natural language processing, multimedia content analysis and retrieval, question-answering, as well as location and live search. SOC faculty members are among world leaders in multimedia information retrieval, and we are researching into next generation of live media search.
Quote
"To organize the world's information and make it universally accessible and universally accessible and useful" -- Mission Statement of Google
Interesting Websites on this area
Please refer to the Web sites of Google, Bing and Yahoo and many others at: Youtube, Flickr, Panoramio, Powerset, and so on.
Modules
PrimariesElectives
CS4347 Sound and Music Computing
CS5246 Text Processing on the Web
CS5241 Speech Processing
CS5244/CS6242 Digital Libraries
Microprocessors have enjoyed a period of tremendous advance in terms of speed and design. The famous Moore's Law: "Transistor density doubles in 18 months" results in a similar improvement in computing speed. The exponential growth of computing speed is almost unmatched by any other techonology in human history. Consider this: "Computing power increase by an order of magnitude (10x) every _five_ years"! and the strange fact that "Today's microprocessors sitting in everyone's desktops are far more powerful than the most powerful computing 10 years ago."
Please click here to access more pictures.
However, all good things come to an end eventually. Computer architect found that pushing the speed of a single microprocessor is now less feasible due to several reasons (the power wall, parallelism wall and memory wall). Instead, utilizing several microprocessors in a single computer system is the new trend.
Parallel computing was utilized only in high end applications in the past. Supercomputer that utilizes hundres or even thounsands of CPUs can achieve tremendous speed by performing massively parallel calcuation.
Now, this parallel computing power has started to migrate to low end user through the advancement like multicore chip. When you have a laptop with "Core 2 DUO" or "Core 2 Quad" CPU, you are infact using a computer capable of parallel computing.
Parallel computing is the use of parallelism to solve computational problems. Human beings cannot multitask well. Hence, it is a challenge to design software systems that are inherently massively parallel. Yet, it is very clear that this is the only way to go for software. This focus 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.
"Software has to double the amount of parallelism that it can support every two years." -- Shekhar Borkar, Intel Fellow
Modules
Primaries
CS3210 Parallel Computing
CS3211 Parallel and Concurrent Programming
CS4231 Parallel and Distributed Algorithms
CS4223 Parallel Computer Architecture
Electives
CS3220 Computer Architecture
CS3221 Operating Systems Design and Pragmatics
CS4237 Systems Modelling and Simulation
CS4271 Critical Systems and Their Verification
CS5207 Foundation in Operating Systems
CS5222 Advanced Computer Architectures
CS5223 Distributed Systems
CS5239 Computer System Performance Analysis
Programming languages are artificial languages designed to make it easy to create "programs" which are the concrete algorithms which the computer executes. Programming languages have to be precise as the program needs to specify unambiguously how a computer is to perform a task. Thus, a programming language is both a set of concrete instructions for the computer as well as being an appropriate abstraction to think about and to express algorithms. All software is simply a program written in a particular programming language. There are many programming languages which cater for different needs to make it easier to write different kinds of algorithms.
Programming languages are about the correct abstraction for using a computer to solve problems. An example is the programming framework which Google – this abstraction harnesses the power of thousands to hundreds of thousands of machines to process data at the scale of the Internet. In order to write such a program, it needs to handle communication and coordination between all those machines which are distributed possibly across the world, deal with the possibility of failure in the communication and underlying computers, store and access huge amounts of data scattered across many machines while at the same time being efficient. Google solves this problem by using a simple programming abstraction which simplifies writing of programs so that most of the details of using all these machines can be hidden while yet allowing the large number of computers to be used at the same time. Google does this to increase their programmer productivity, to makes it easier for programmers to write programs which process the web, e.g. the actual program which Google uses to index the Web only takes several pages when written this way.
"A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits.... A programming language is a tool that has profound influence on our thinking habits." -- Edgar Dijkstra
''Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques to solve it." -- A. Aho and J. Ullman
"Programs must be written for people to read, and only incidentally for machines to execute." -- Abelson and Sussman
Demonstration
Kodu is a new visual programming language made specifically for creating games. It is designed to be accessible for children and enjoyable for anyone. A demonstration of how programming can be fun in the following video.
Modules
Primaries
CS2104 Programming Language Concepts
CS3211 Parallel and Concurrent Programming
CS4215 Programming Language Implementation
CS4212 Compiler Design
Electives
CS3234 Logic and Formal Systems
CS4216 Constraint Logic Programming
CS5205 Foundation in Programming Languages
CS5232 Formal Specification & Design Techniques
CS5214 Design of Optimising Compilers
CS5215 Constrained Programming
CS5218 Principles of Program Analysis
While programming languages is about how one instructs the computer, software engineering is about methods of designing programs. It is about the craft and science of programming so that the resulting software is correct and reliable. Software engineering is concerned about developing and maintaining software in a systematic, disciplined, and economic way, in short, an engineering approach to the building and maintenance of software. If we consider the complexity of all human created artifacts, for example, one of the greatest technological achievements of the 20th century is considered to be the Apollo 11 Mission to the moon, the complexity of modern day software such as Microsoft Windows dwarfs that of Apollo 11. The more complex a system is, the greater its potential to fail. Software engineering plays a key role to ensure that such software systems are designed to be robust against failure. Given the prevalence of software in all aspects of modern life, from mobile phones to flight control systems to electricity grid control, the practice of software engineering practices have an important impact on our daily life.
"Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to to, let us concentrate rather on explaining to human beings what we want a computer to do." -- Donald Knuth
"The software is where the magic is. If you're going to have all this power be simple enough, appealing enough and cool enough, it's going to be because the software is right." -- Bill Gates
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." -- C.A.R. Hoare
"I love software, because if you can imagine something, you can build it." -- Ray Ozzie
"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures." -- Fred Brooks
Modules
Primaries
CS2103 Software Engineering (CFM)
CS3213 Software Systems Design
CS4217 Software Development Technologies
CS4211 Formal Methods for Software Engineering
Electives
CS3216 Software Development on Evolving Platforms
CS3217 Software Engineering on Modern Application Platforms
CS3234 Logic and Formal Systems
CS4271 Critical Systems and Their Verification
CS5219 Automatic Software Validation
CS5232 Formal Specification & Design Techniques
IS2102 Requirements Analysis and Design
IS2104 Software Team Dynamics
In our Internet age, as more and more personal information goes online and more and more computing devices (computers, smart phone, and even home appliances) are interconnected, our daily computing experience is subjected to the high risk of malicious attacks, as well as information theft. Security breaches result in countless financial losses and misery. As the computing systems evolve rapidly, the job of securing computer systems becomes really challenging. System security is becoming the cornerstone of almost every industry, which heavily relies on networked computing systems for communication and management. The modules in this area therefore aim to equip students with the skills to look for security issues in complex IT infrastructures. More importantly, training in system security will deepen students' understanding of every aspect of a computing system.
"Security is, I would say, our top priority because for all the exciting things you will be able to do with computers- organising your lives, staying in touch with people, being creative - if we don't solve these security problems, then people will hold back." -- Bill Gates
Modules
Primaries
CS2107 Introduction to Information and System Security^
CS3235 Introduction to Computer Security
CS4236 Cryptography Theory and Practice
CS4238 Computer Security Practices^
Electives
CS3221 Operating Systems Design and Pragmatics
CS5321 Network Security and Management
CS5322 Database Security
IS3230 Principles of Information Security
IS4231 Information Security Management
IS4232 Topics in Information Security
^: Students may use CS2106 Introduction to Operating Systems and CS5231 Systems Security as CFM and primary elective respectively for this focus area if these modules are taken before AY2011-2012.Visual Computing
Visual Computing encompasses many aspects of images, videos and graphics, including their creation, manipulation, storage, distribution, analysis, and search. Humans are visual creatures; a large part of our brains is devoted to processing images that our eyes (sensors) pick up. Visual Computing is thus important because it amplifies and aids our natural human ability to understand images and to communicate with them. When you use a digital camera, or watch a YouTube video, or edit your picture with Photoshop, you are reaping the fruits of Visual Computing. When you are immersed in a computer game, or mesmerized by a movie special effect, you are being entertained by Visual Computing. In fact, this field will continue to gain prominence in our daily lives, not only because we produce a tremendous amount of images, videos and graphics everyday, but also because the visual medium is a natural way for humans to interact with other humans, and with computers. SoC offers more than ten modules in Visual Computing. SoC faculty members are among the world leaders in Visual Computing, and their research has generated commercial spin-offs and patents.
"A vivid image compels the whole body to follow." -- Aristotle
"Vision is the art of seeing the invisible." -- Jonathan Swift
Modules
Primaries
CS3241 Computer Graphics
CS4342 3D Modeling and Animation
CS4247 Graphics Rendering Techniques
CS4243 Computer Vision and Pattern Recognition
Electives
CS3343 Digital Media Production
CS4340 Digital Special Effects
CS4345 General-Purpose Computation on GPU
CS5237 Computational Geometry and Applications
CS5240 Theoretical Foundation of Multimedia
CS5341 Computational Photography