utils/modulePopulator.sql
INSERT INTO module VALUES('BT5110', 'Data Management and Warehousing', 'This module aims to provide students with practical knowledge and understanding of basic issues and techniques in data management and warehousing with relational database management systems. The module covers data management concepts, conceptual (entity relationship model) and logical design (relational model) and database management (data definition, data manipulation, SQL) with relational database management systems.The module covers data warehousing concepts, data warehousing design and data warehousing with relational database management systems and tools.', 4);
INSERT INTO module VALUES('CG1001', 'Introduction to Computer Engineering', 'This module aims to provide an overview of Computer Engineering to the freshmen students. The module introduces the sub-areas, the issues, the impacts, and the challenges of Computer Engineering in transforming the world. The module demonstrates Computer Engineering as a multi-disciplinary field that transcends the traditional boundary of Computer Science and Electrical Engineering. It also gives the students an idea of the possible areas of specializations in their senior years of study.', 2);
INSERT INTO module VALUES('CG2271', 'Real-Time Operating Systems', 'Real-time systems must respond quickly to inputs from the environment in order to work effectively and safely, and realtime operating systems (RTOS) are a critical part of such systems. In this course the student is exposed to basic RTOS concepts like tasks, scheduling algorithms, RTOS customisation and concurrent real-time programming. By the end of this course a student will not only understand how an RTOS is built, but will also gain practical hands-on experience in customising RTOSs and in writing real-time programs.', 4);
INSERT INTO module VALUES('CG3002', 'Embedded Systems Design Project', 'This module introduces students to the development of a large system from conceptualisation to its final implementation. It is structured to contain substantial design and development of hardware and software components. This module is the culminating point of a series of modules integrating the theories which students have already learnt in CG1101, CG1102/CG1103, CG2007, CG2271 and CS2103. With this capstone project, students would be able to better appreciate the relevance of the various components in the Computer Engineering curriculum to large scale computer engineering projects.', 6);
INSERT INTO module VALUES('CG3204L', 'Computer Networks Laboratory', 'The main objective of this module is to equip students with upper layer networking concepts and hands-on network programming skills. It provides an in-depth treatment of the following topics: VLAN, Wireless LAN (802.11b/g/n), Fundamentals of Cryptography and Network Security Protocols (SSL, PGP, etc), DNS, VoIP with SIP and H.323 Protocol Suites, Multicast Routing and Network Protocols and Application (Client/Server, P2P) development using Socket Programming. Students perform hands-on experiments through interconnecting local area networks in the laboratory using switches and routers, and conduct experiments relating to the various topics learnt above.', 4);
INSERT INTO module VALUES('CP2201', 'Journey of the Innovator', 'Innovators practice the art of persuading people to accept changes in how they live and work, leisure and social interaction. This module's object is to introduce students to digital innovation, and to encourage them to embark on a personal journey of creativity and challenge. Inspirational innovators will be invited to present topics related to digital innovation, such as successful innovative projects of start-up teams and advanced development teams, innovative approaches such as Design Thinking, and opportunities for innovation, the vibrant intersection of energising technology trends and new markets. This module will be graded as Completed Satisfactory or Completed Unsatisfactory (CS/CU). ', 2);
INSERT INTO module VALUES('CP3101', 'Topics in Computing', 'The aim of this module is to provide a platform for innovative topics in computing that are not part of the regular curriculum to be presented to the students. This may include topics that are taught due to the availability of a visiting expert, new developments in an area, or a particular event such as a competition that can be used to impart appropriate education to the students. The module may be offered as graded or Completed Satisfactory or Completed Unsatisfactory (CS/CU) as appropriate to the topic. ', 4);
INSERT INTO module VALUES('CP3101A', 'Global Open Source Project', 'This module is a part of an experimental global software engineering education initiative spearheaded by Stanford/Facebook. It is offered as part of the CP3101 Topics in Computing series. Student teams will be associated with a select group of open source software projects. These projects are characterized by being active in both development and utilization as well as being open to new and relatively inexperienced committers. They are also projects that are deemed to be relevant in today's software ecosystem. We also believe there is value in seeding awareness of how to contribute to open source projects like these among future technology leaders. Ideally there will also be some value from the development work student teams contribute back to the project as well. ', 4);
INSERT INTO module VALUES('CP3101C', 'Research in Supercomputing', 'This module teaches students the basics of supercomputing and supervises them in participating in the world's three most popular supercomputing competitions, i.e., the US SC Student Competition affiliated with the IEEE Computer Society, the European ISC Student Cluster Competition affiliated with the International Supercomputing Conference, and the ASC Competition organized by the Asia Supercomputer Community. The module covers the latest advances in architectures, algorithms, and applications with focus on porting and optimizing legacy application packages for computational and energy efficiencies. The module supervises proposal writing and implementation as part of the requirements of the competitions. ', 4);
INSERT INTO module VALUES('CP3106', 'Independent Project', 'The objective of this project module enables students to undertake a substantial project work over a period of six months. Students may work individually or in groups on projects proposed by staff. They will have good opportunity to apply what they have learnt on practical problems, be it research', 4);
INSERT INTO module VALUES('CP3108A', 'Independent Work', 'This module allows students to explore their interest areas within the computing field and at the same time learn how to take initiatives, plan and think critically, through the process of independent work. Students have to find a faculty mentor for the independent work and submit for approval a proposal outlining the learning objectives, schedule and evaluation criteria. The module will be graded by the faculty mentor and course coordinator as Completed Satisfactory/Completed Unsatis-factory (CS/CU). Credit will be given for CS3108A (2MC) depending on the workload proposed. ', 2);
INSERT INTO module VALUES('CP3108B', 'Independent Work', 'This module allows students to explore their interest areas within the computing field and at the same time learn how to take initiatives, plan and think critically, through the process of doing independent work. Students have to find a faculty mentor for the independent work and submit for approval a proposal outlining the learning objectives, schedule and evaluation criteria. The module will be graded by the faculty mentor and course coordinator as Completed Satisfactory/Completed Unsatis-factory (CS/CU). Credit will be given for CS3108B (4MC) depending on the workload proposed. ', 4);
INSERT INTO module VALUES('CP3109', 'Overseas Exploratory Project', 'This module enables students to explore the operations of IT companies through educational visit to various sectors of IT industry. The visit enables students develop global perspective of IT operations, and issues related to global IT services, management and engineering. The visit will be at least one week. Students are required to attend a pre-visit workshop (to attain basic technical knowledge required to appreciate the visit), organise the visit, and attend a post-visit workshop (to share and report on their findings during the visit). They are also required to submit a report to report on their accomplishment of educational objectives from the trip. The module is evaluated as Completed Satisfactory/ Completed Unsatisfactory (CS/CU) based on the continual assessment and final report. ', 2);
INSERT INTO module VALUES('CP3200', 'Internship', 'The IT industry and related businesses are developing rapidly for which students need to have an opportunity to expose themselves to the latest industry developments. This internship module requires students to work in a company for a period of three months. Their progress on projects will be monitored during attachment, and their performance will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU) at the end of the attachment, based on the final project report. During the attachment, students are not expected to take other modules offered by the university. ', 6);
INSERT INTO module VALUES('CP3201', 'Industry Seminar', 'The information technology (IT) industry is in an ever-changing state of evolvement and innovation. This module aims to acquaint students with the latest Information Technology (IT) innovation, practices, and developments. Prominent leaders and practitioners in the IT industry will be invited to impart their knowledge and insights into the latest IT trends and developments from various industry arenas such as the finance, healthcare, consulting, manufacturing, and entertainment industries. Students' performance will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU) at the end of the module based on the coursework. ', 2);
INSERT INTO module VALUES('CP3202', 'Internship II', 'The IT industry and related businesses are developing rapidly for which students need to have an opportunity to expose themselves to the latest industry developments. This internship module requires students to work in a company for a period of three months. Their progress on projects will be monitored during attachment, and their performance will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU) at the end of the attachment, based on the final project report. This is the second three month internship for the School of Computing students. With two internships, the student will be able to experience work in two distinct types of organizations, such as a start-up and a MNC, or in two different industries. ', 6);
INSERT INTO module VALUES('CP3208', 'Undergraduate Research in Computing I', 'The module (together with CS3209) is part of the UROP (Computing) project. The objective of this module and the UROP (Computing) project in general, is to provide an opportunity for talented students to undertake a substantial research project under the supervision of faculty members of the School of Computing. Through this research collaboration, the student will get to experience at first hand the challenges and exhilaration of research, discovery and invention. This module should be followed by CS3209 to complete the UROP (Computing) project. ', 4);
INSERT INTO module VALUES('CP3209', 'Undergraduate Research in Computing II', 'The module follows CS3208 and completes the requirements of the UROP (Computing) project. Please see CS3208 for description. ', 4);
INSERT INTO module VALUES('CP3880', 'Advanced Technology Attachment Programme', 'This module enables students to apply the computing knowledge they have assimilated in class to industrial projects through six', 12);
INSERT INTO module VALUES('CP3881', 'Incubation Project', 'This one-year module aims to nurture technopreneurship among students. It enables students to start up a company while studying in NUS. The start-ups will be placed in the SoC Incubation Centre, through which students receive various assistances from the Centre in managing and operating their companies. Students are required to submit an interim report after six months into their business, and a final report after one year into their business. The reports will be assessed by the Incubation Centre Review Committee for students' ability in managing and operating their companies. The module is assessed on Complete Satisfactory/Complete Unsatisfactory (CS/ CU) basis. ', 12);
INSERT INTO module VALUES('CP4101', 'BComp Dissertation', 'The objective of this module is to enable students to work on an individual research project spanning over two semesters, with approximately 400 hours of workload. Students learn how to apply skills acquired in the classroom and also think of innovative ways of solving problems, and learn to work in a research environment. The project demonstrates a student's work ethic, initiative, determination, and ability to think independently. On completion of the project, the student has to submit a dissertation describing the project work, and give an oral presentation before a panel of examiners. ', 12);
INSERT INTO module VALUES('CP5100', 'Graduate Research Paper', '', 0);
INSERT INTO module VALUES('CP6010', 'Doctoral Seminar', '', 0);
INSERT INTO module VALUES('CS1010', 'Programming Methodology', 'This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing. It is also the first part of a three-part series on introductory programming and problem solving by computing, which also includes CS1020 and CS2010. Topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion. This module is appropriate for SoC students. ', 4);
INSERT INTO module VALUES('CS1010E', 'Programming Methodology', 'This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing. It is also the first part of a three-part series on introductory programming and problem solving by computing, which also includes CS1020E and CS2010. Topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion.This module is appropriate for FoE students. ', 4);
INSERT INTO module VALUES('CS1010J', 'Programming Methodology', 'This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing. It is also the first part of a three-part series on introductory programming and problem solving by computing, which also includes CS1020E and CS2010. Topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion. This module is appropriate for B.Comp.(IS) and B.Comp.(EC) students. ', 4);
INSERT INTO module VALUES('CS1010S', 'Programming Methodology', 'This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing and is equivalent to CS1010 and CS1010E Programming Methodology. Topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion. This module is appropriate for FoS students. ', 4);
INSERT INTO module VALUES('CS1010X', 'Programming Methodology', 'This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing and is equivalent to CS1010, CS1010S and CS1010E Programming Methodology. The module will be taught using the Python programming language and topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion. ', 4);
INSERT INTO module VALUES('CS1020', 'Data Structures and Algorithms I', 'This module is the second part of a three-part series on introductory programming and problem solving by computing. It continues the introduction that begins in CS1010, and emphasises object-oriented programming with application to simple data structures. Topics covered include object-oriented problem modeling with concepts of objects, classes and methods, object-oriented problem formulation and problem solving, data structure implementation strageties, abstraction and encapsulation of data structures, object-oriented programming constructs, use of APIs and class libraries, exception handling, lists, linked lists, stacks, queues, hash tables and their algorithmic design, various forms of sorting and searching methods, recursive algorithms, and Big-O notation.This module is appropriate for SoC and FoS students. ', 4);
INSERT INTO module VALUES('CS1020E', 'Data Structures and Algorithms I', 'This module is the second part of a three-part series on introductory programming and problem solving by computing. It continues the introduction that begins in CS1010E, and emphasises object-oriented programming with application to simple data structures. Topics covered include object-oriented problem modeling with concepts of objects, classes and methods, object-oriented problem formulation and problem solving, data structure implementation strategies, abstraction and encapsulation of data structures, object-oriented programming constructs, use of APIs and class libraries, exception handling, lists, linked lists, stacks, queues, hash tables and their algorithmic design, various forms of sorting and searching methods, recursive algorithms, and Big-O notation.This module is appropriate for FoE students. ', 4);
INSERT INTO module VALUES('CS1101S', 'Programming Methodology', 'This module introduces the concepts of programming from a functional perspective, and is perceived as the first and foremost introductory course to computing. It is the first of a two-part series on introductory programming, which also includes CS1102S. This series is characterised by the use of a minimalist syntax of functional languages that enables an emphasis on fundamental programming issues. Topics covered include: overview of programming languages and compilation process, procedural abstraction, recursion, data abstraction, algorithmic strategies, higher-order functions, state mutation, evaluation strategies, debugging and testing. Module activities include lectures, recitation, tutorial and laboratory exercises. ', 5);
INSERT INTO module VALUES('CS1102', 'Data Structures and Algorithms', 'This module is the second part of a two-part series on introductory programming from an object-oriented perspective. It continues the introduction to object-oriented programming begun in CS1101, with an emphasis on data structures and algorithms. Topics covered include: abstraction and encapsulation for data structures, basic data structures such as lists, stacks, queues, and their algorithmic designs, various forms of sorting methods, trees, binary search tree, hash tables, order property, heap and priority queues, graphs representation and basic graph search algorithms (breadth-first search, depth-first search), and basic algorithmic analysis. ', 5);
INSERT INTO module VALUES('CS1102C', 'Data Structures and Algorithms', 'This module is the second part of a two-part series on introductory programming from an imperative paradigm perspective. It continues the introduction to programming begun in CS1101C, with an emphasis on data structures and algorithms. Topics covered include: abstraction and encapsulation for data structures, basic data structures such as lists, stacks, queues, and their algorithmic designs, various forms of sorting methods, trees, binary search tree, hash tables, order property, heap and priority queues, graphs representation and basic graph search algorithms (breadth-first search, depth-first search), and basic algorithmic analysis. ', 5);
INSERT INTO module VALUES('CS1231', 'Discrete Structures', 'This module introduces mathematical tools required in the study of computer science. Topics include: (i) Logic and proof techniques: propositions, conditionals, quantifications. (ii) Relations and Functions: Equivalence relations and partitions. Partially ordered sets. Well-Ordering Principle. Function equality. Boolean/identity/inverse functions. Bijection. (iii) Mathematical formulation of data models (linear model, trees and graphs). (iv) Counting and Combinatoric: Pigeonhole Principle. Inclusion-Exclusion Principle. Number of relations on a set, number of injections from one finite set to another, Diagonalisation proof: An infinite countable set has an uncountable power set; Algorithmic proof: An infinite set has a countably infinite subset. Subsets of countable sets are countable. ', 4);
INSERT INTO module VALUES('CS1280', 'Java to C++', 'This module aims to train students who have learned data structures and algorithms in Java to programme in C++. Basic constructs common in the two languages will not be covered (e.g. if-else, loops etc). Topics covered include: Objects and classes in C++, fundamental data structures: arrays, strings, vectors, I/O, exception handling, sub-classing, inheritance, template function, template class, use of STL, and defining operator. Assessment of students in this module will be on either Satisfactory/Unsatisfactory (S/U) or Com-pleted Satisfactory/Completed Unsatisfactory (CS/CU) basis depending on students' matriculation year. Students matriculated in AY2007/08 and after will be assessed on CS/CU basis. The duration of the course is six weeks, opening at beginning of semesters. ', 2);
INSERT INTO module VALUES('CS1281', 'C++ to Java', 'The module aims to train students who have learned data structures and algorithms in C++ to programme in Java. Basic constructs common in the two languages will not be covered (e.g. if-else, loops etc). Topics covered include: Objects and classes in Java, fundamental data structures: arrays, strings, I/O, exception handling, use of APIs and class libraries, sub-classing, inheritance, abstract and interface class, new design concept using generic Java approach. Assessment of students in this module will be on either Satisfactory/Unsatisfactory (S/U) or Com-pleted Satisfactory/Completed Unsatisfactory (CS/CU) basis depending on students' matriculation year. Students matriculated in AY2007/08 and after will be assessed on CS/CU basis. The duration of the course is six weeks, opening at beginning of semesters. ', 2);
INSERT INTO module VALUES('CS2010', 'Data Structures and Algorithms II', 'This module is the third part of a three-part series on introductory programming and problem solving by computing. It continues the introduction in CS1010 and CS1020, and emphasises object-oriented programming with application to complex data structures. Topics covered include trees, binary search trees, order property, prefix/infix/postfix expressions, heaps, priority queues, graphs and their algorithmic design, recursive algorithms, problem formulation and problem solving with applications of complex data structures, data structure design principles and implementation strategies, and algorithm analysis. Advanced data structures such as B-trees and AVL trees are also covered. ', 4);
INSERT INTO module VALUES('CS2020', 'Data Structures and Algorithms Accelerated', 'This module is an accelerated version that combines CS1020 and CS2010. It continues the introduction in CS1010, and emphasises object-oriented programming with application to data structures. Topics covered include object-oriented problem modeling with concepts of objects, classes and methods, object-oriented problem formulation and problem solving, data structure design principles and implementation strageties, abstraction and encapsulation of data structures, object-oriented programming constructs, use of APIs and class libraries, exception handling, lists, linked lists, stacks, queues, hash tables, trees, graphs, and their algorithmic design, various forms of sorting and searching methods, recursive algorithms, and algorithm analysis. ', 6);
INSERT INTO module VALUES('CS2100', 'Computer Organisation', 'The objective of this module is to familiarise students with the fundamentals of computing devices. Through this module students will understand the basics of data representation, and how the various parts of a computer work, separately and with each other. This allows students to understand the issues in computing devices, and how these issues affect the implementation of solutions. Topics covered include data representation systems, combinational and sequential circuit design techniques, assembly language, processor execution cycles, pipelining, memory hierarchy and input/output systems. ', 4);
INSERT INTO module VALUES('CS2101', 'Effective Communication for Computing Professionals', 'This module aims to equip students with the skills needed to communicate technical information to technical and non-technical audiences, and to create comprehensible software documentation. A student-centric approach will be adopted to encourage independent and collaborative learning while engaging students in team-based projects. Students will learn interpersonal and intercultural communication skills as well as hone their oral and written communication skills. Assessment modes include a variety of oral and written communication tasks such as reports, software guides, oral presentations, software demonstrations and project blogs. ', 4);
INSERT INTO module VALUES('CS2102', 'Database Systems', 'The aim of this module is to introduce the fundamental concepts and techniques necessary for the understanding and practice of design and implementation of database applications and of the management of data with relational database management systems. The module covers practical and theoretical aspects of design with entity-relationship model, theory of functional dependencies and normalisation by decomposition in second, third and Boyce-Codd normal forms. The module covers practical and theoretical aspects of programming with SQL data definition and manipulation sublanguages, relational tuple calculus, relational domain calculus and relational algebra. ', 4);
INSERT INTO module VALUES('CS2103', 'Software Engineering', 'This module introduces the necessary conceptual and analytical tools for systematic and rigorous development of software systems. It covers four main areas of software development, namely object-oriented system analysis, object-oriented system modelling and design, implementation, and testing, with emphasis on system modelling and design and implementation of software modules that work cooperatively to fulfill the requirements of the system. Tools and techniques for software development, such as Universal Modelling Language (UML), program specification, and testing methods, will be taught. Major software engineering issues such as modularisation criteria, program correctness, and software quality will also be covered. ', 4);
INSERT INTO module VALUES('CS2103T', 'Software Engineering', 'This module introduces the necessary conceptual and analytical tools for systematic and rigorous development of software systems. It covers four main areas of software development, namely object-oriented system analysis, object-oriented system modelling and design, implementation, and testing, with emphasis on system modelling, design and implementation of software modules that work cooperatively to fulfill the system's requirements. Tools for software development, such as Universal Modelling Language, program specification, and testing methods will be taught. Software engineering issues such as modularisation criteria, program correctness, and software quality will be covered. This module must be taken together with CS2101 Effective Communication for Technologists. ', 4);
INSERT INTO module VALUES('CS2104', 'Programming Language Concepts', 'This module introduces the concepts that serve as a basis for hundreds of programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming-languages constructs, programming paradigms, evaluation criteria and language implementation issues. The module covers concepts from imperative, object-oriented, functional, logic, constraints, and concurrent programming. These concepts are illustrated by examples from varieties of languages such as Pascal, C, Java, Smalltalk, Scheme, Haskell, Prolog. The module also introduces various implementation issues, such as pseudo-code interpretation, static and dynamic semantics, abstract machine, type inferencing, etc. ', 4);
INSERT INTO module VALUES('CS2105', 'Introduction to Computer Networks', 'This course aims to provide a broad introduction to computer networks and some appreciations of network application programming. It covers a range of topics including basic data communication and computer network concepts, protocols, network computing concepts and principles, network applications development and network security. The emphasis of teaching is on the working principles and application of computer networks. As an integral part of the course, tutorials and practical assignments enforcing learning will also be given. These assignments provide an early exposure in network application programming and they should be able to complete by using personal computers and school's network facilities. ', 4);
INSERT INTO module VALUES('CS2106', 'Introduction to Operating Systems', 'This module introduces the basic concepts in operating systems and links it with contemporary operating systems (eg. Unix/Linux and Windows). It focuses on OS structuring and architecture, processes, memory management, concurrency and file systems. Topics include kernel architecture, system calls, interrupts, models of processes, process abstraction and services, scheduling, review of physical memory and memory management hardware, kernel memory management, virtual memory and paging, caches, working set, deadlock, mutual exclusion, synchronisation mechanisms, data and metadata in file systems, directories and structure, file system abstraction and operations, OS protection mechanisms, and user authentication.', 4);
INSERT INTO module VALUES('CS2107', 'Introduction to Information Security', 'This module serves as an introductory module on information and computer system security. It illustrates the fundamentals of how systems fail due to malicious activities and how they can be protected. The module also places emphasis on the practices of secure programming and implementation. Topics covered include classical/historical ciphers, introduction to modern ciphers and cryptosystems, ethical, legal and organisational aspects, classic examples of direct attacks on computer systems such as input validation vulnerability, examples of other forms of attack such as social engineering/phishing attacks, and the practice of secure programming. ', 4);
INSERT INTO module VALUES('CS2108', 'Introduction to Media Computing', 'This module introduces students to (i) the fundamental principles, theory, algorithms, and data structures behind digital representation, compression, synchronization, and processing of image, audio, and video data types, and (ii) challenges and issues in developing media-rich applications, such as media streaming and media retrieval. Students will be exposed to the workings of common media file format and common manipulation techniques on media data. After taking the module, students should be confident enough in developing media applications and make appropriate trade-off and design decisions when dealing in media data in their software.', 4);
INSERT INTO module VALUES('CS2220', 'Introduction to Computational Biology', 'There are three aims in this course. First, the course provides, from programmers' viewpoint, an overview of common computational techniques used in the field of bioinformatics, including similarity operations, clustering and classification techniques, and techniques in gene recognition. Second, the basic theory behind these techniques will be covered. Last, but not least, the course demonstrates the role of bioinformaticians as a bridge between the field of computer science and biology, and prepares students for advanced computer-science topics relevant to bioinformatics. ', 4);
INSERT INTO module VALUES('CS2271', 'Embedded Systems', 'The explosive growth of transistor density has moved the centre of gravity of computing from personal computers to numerous embedded computers hidden away inside our everyday electronic products. Designing embedded computing systems is unique in the sense that the traditional borderline between hardware and software vanishes here. This module aims to provide a broad overview of the techniques and challenges involved in designing embedded systems. Topics include: FPGAs, high-level programming of FPGAs, DSP, and embedded microprocessor, embedded software development, real-time operating systems, and hardware/software codesign. ', 4);
INSERT INTO module VALUES('CS2281', 'Programming in UNIX', 'This module aims to train students to be proficient in dealing with UNIX systems. Topics include: C programming: Variables, types, operators, expressions, control flow, functions, function arguments, recursion, pointers, address arithmetic, arrays, structures, standard input/output. Unix system interface: file/directory manipulation, system data files, Unix processes, process control, signals, inter-process communication (pipe, FIFO), terminal I/O. Unix tools: shell programming (Bourne shell), programming tools (Xemacs, gcc, make, ddd debugger), regular expressions and text utilities (grep, awk, sed). ', 4);
INSERT INTO module VALUES('CS2309', 'CS Research Methodology', 'In this module, students will learn thinking and problem-solving skills, read and present research papers, write research reports, and do a substantial project within the computing area. Topics include logical and deductive reasoning, doing proofs, inductive reasoning and statistical analysis, fallacies and psychological traps, survey skills, abstraction and modelling, problem-solving heuristics, creative thinking, decision making and reading of research papers from various computing sub-areas. In addition, students will also do an in-depth study of a computing area through independent study and project work. ', 4);
INSERT INTO module VALUES('CS3103', 'Computer Networks Practice', 'This module aims to provide an opportunity for the students to learn commonly-used network protocols in greater technical depth with their implementation details than a basic networking course. Students will perform hands-on experiments in configuring and interconnecting LANs using networking devices/technologies (e.g., routers, switches, SDN switches, and hubs), networking protocols (e.g., DHCP, DNS, RIP, OSPF, ICMP, TCP, UDP, wireless LAN, VLAN protocols, SIP, SSL, IPSec-VPN) and networking tools (e.g, tcpdump, netstat, ping, traceroute). Students will learn higher-layer network protocols and develop network applications (client/server, P2P) via socket programming.', 4);
INSERT INTO module VALUES('CS3103L', 'Computer Networks Laboratory', 'The objective of the module is to augment the concepts learnt in the area of networking through hands on experiments, and thus maximising the educational experience of students. It provides an opportunity for students to interconnect LANs in the laboratory using switches, routers, terminal servers etc., and conduct various experiments relating to TCP/IP protocol stack. Students perform hands-on experiments in subnetting, dial-up service, DHCP, DNS, Multicast, RIP, OSPF, router based firewall, TCP handshaking and congestion mechanism. ', 2);
INSERT INTO module VALUES('CS3201', 'Software Engineering Project I', 'This module is the first part of a two-part series on the practice of software engineering in Software Development Life Cycle (SDLC). These two modules together provide the students with hands-on experience in working in project groups through a complete SDLC to develop a well-designed, well-tested, large-scaled software system. This first part focuses on applying best software engineering practices on the analysis and design of software system. The students will practice analysis of user's needs, formulation of computing requirements to meet the user's needs, modeling and design of the computer systems according to the requirements, and evaluation of the design. ', 4);
INSERT INTO module VALUES('CS3202', 'Software Engineering Project II', 'This module is the second part of a two-part series on the practice of software engineering in Software Development Life Cycle (SDLC). These two modules together provide the students with hands-on experience in working in project groups through a complete SDLC to develop a well-tested, large-scaled software system. This second part focuses on applying best software engineering practices on the implementation and testing of the software system. The students will practice efficient implementation of software components, system integration, software version control, and rigorous testing. ', 4);
INSERT INTO module VALUES('CS3205', 'Information Security Capstone Project', 'This module provides students an active learning opportunity to work independently in a group on significant information security-related projects. Project activities can include analyzing the security requirements, designing and implementing security systems, and attacking and defending a system. Students get to apply what they learn in the classroom and gain hands-on experience on solving significant information security problems.', 8);
INSERT INTO module VALUES('CS3210', 'Parallel Computing', 'The aim of this module is to provide an introduction to the field of parallel computing with hands-on parallel programming experience on real parallel machines. The module is divided into four parts: parallel computation models and parallelism, parallel architectures, parallel algorithm design and programming, and new parallel computing models. Topics includes: theory of parallelism and models; shared-memory architectures; distributed-memory architectures; data parallel architectures; interconnection networks, topologies and basic of communication operations; principles of parallel algorithm design; performance and scalability of parallel programs, overview of new parallel computing models such as grid, cloud, GPGPU ', 4);
INSERT INTO module VALUES('CS3211', 'Parallel and Concurrent Programming', 'A concurrent system consists of a set of processes that executes simultaneously and that may collaborate by communicating and synchronising with one another. Examples of concurrent systems are parallel programmes that describe sets of collaborating processes. This module introduces the design, development and debugging of parallel programmes. It will build on the concurrency concepts gained from the Operating Systems module. It covers concepts and modelling tools for specifying and reasoning (about the properties of) concurrent systems and parallel programmes. It also covers principles of performance analysis, asynchronous and asynchronous parallel programming, and engineering concurrent systems and parallel programmes. ', 4);
INSERT INTO module VALUES('CS3212', 'Programming Languages', 'This module provides the students with theoretical knowledge and practical skill in design and implementation of programming languages. It discusses the theory behind the fundamental programming paradigms (imperative, functional, logic, and object-oriented) and behind basic programming language concepts such as binding, scope, parameter-passing mechanisms and types. It introduces the language processing techniques of interpretation and compilation. A discussion of virtual machines highlights that programme execution almost always uses both, often in a multi-level hierarchical architecture. The course covers automatic memory management as a feature of programming systems and its implementation. ', 4);
INSERT INTO module VALUES('CS3213', 'Software Systems Design', 'Software design is a life cycle activity in which software requirements are analyzed to produce a description of the software's internal structure that serves as the basis for its construction. Software design consists of two activities that fit between software requirements analysis and software construction: software architectural design and software detailed design. Typical outcomes are the software architecture and the interfaces between components, specified in a design document. This module covers both levels of design and aims to equip students with the knowledge and skills for generating design documents and evaluating design alternatives in an iterative software development process.
', 4);
INSERT INTO module VALUES('CS3215', 'Software Engineering Project', 'The module requires students to work through, in groups, a complete Systems Development Life Cycle to develop a well-tested, production-quality large-scale software system. Students will apply best software engineering practices taught in CS2103 and CS3215. They will also sharpen their communication skills through close team interactions, consultations, and formal presentations. The module emphasises engineered design, efficient implementation and rigorous testing of software, as well as effective communications among students. Students will be assessed based on their understanding and ability to apply and communicate what they have learned in CS2103 and CS3215 on a real-life application system.
', 8);
INSERT INTO module VALUES('CS3216', 'Software Product Engineering for Digital Markets', 'This module is a follow-up of CS3217 on the practice of software engineering on modern application platforms such as mobile devices, the Web and cloud systems. Students will work in small project teams to develop well-tested, production-quality software. This module focuses on the design and rapid iterative development of real-world applications. Students will analyse user needs, design and develop applications that meet user needs, and address user feedback of the applications. Students will also learn rapid development using APIs, Open Source tools and other modern tools, and deployment of the applications in the Web or cloud system.
', 5);
INSERT INTO module VALUES('CS3217', 'Software Engineering on Modern Application Platforms', 'This module introduces students to the practice of software engineering on modern application platforms such as mobile devices, the Web and cloud systems. Students will work in small project teams to develop well-tested, production-quality software. This module focuses on building core software engineering skills and competencies in programming modern application platforms. It also trains students to work well in project teams. Students will be assessed on both their individual programming competencies and their software engineering skills in final team project.
', 5);
INSERT INTO module VALUES('CS3218', 'Multimodal Processing in Mobile Platforms', 'Modern mobile platforms such as smart phones and tablets are equipped with an increasing number of sensing modalities. In addition to traditional components such as keyboards and touch screens, they are also equipped with cameras, microphones, inertial sensor, and GPS receivers. With these modalities all packed into a single platform, it is important to empower application developers with basic knowledge and practical skills in dealing with these modalities. This module introduces the students to basic theories, concept and practical skills needed in input, processing and output of multimodal data on mobile platforms.
', 4);
INSERT INTO module VALUES('CS3219', 'Software Engineering Principles and Patterns', 'This module provides an in-depth, hands-on experience in key aspects of software engineering that accompany the development of software. Based on proven principles and best practices, this module focuses on software architectural design from the perspective of the software process. It covers techniques for requirement elicitation and specification that provide sound base for architectural design. The module covers design decision exploration as well as patterns that explicate principles and best practices in replicable form.', 4);
INSERT INTO module VALUES('CS3220', 'Computer Architecture', 'The objective of this module is concerned with design techniques involving the use of parallelism to improve the performance of computer systems. The module is divided into three parts. Part I considers the fundamental methods to improve the performance of single processor systems. Topics include the design principle of instruction set, memory hierarchy, pipeline design techniques, RISC and vector computer. In Part II, multi-processor systems using shared memory are examined in detail, and Part III, multi-processor systems that do not use shared memory are examined.
', 4);
INSERT INTO module VALUES('CS3221', 'Operating Systems Design and Pragmatics', 'This module builds upon the conceptual foundation formed in CS2106 and extends it to the study of real-life operating systems. The focus is to understand how actual operating systems work including the pragmatics, system architecture and design and implementation. Details will be drawn from contemporary operating systems such as Unix/Linux and Windows. Topics include kernel architecture and interfaces, computer architecture issues, process APIs and implementation, threads, scheduling, physical and kernel memory management, virtual memory, synchronisation and interprocess communication mechanisms, multi-processor issues, device characteristics and management, file system implementation, memory mapped files, special purpose file systems.
', 4);
INSERT INTO module VALUES('CS3223', 'Database Systems Implementation', 'This module provides an in-depth study of the concepts and implementation issues related to database management systems. It first covers the physical implementation of relational data model, which includes storage management, access methods, query processing, and optimisation. Then it covers issues and techniques dealing with multi-user application environments, namely, transactions, con-currency control and recovery. The third part covers object-database systems that are useful extension of relational databases to deal with complex data types. The last part covers database technologies required for modern decision support systems, including data warehousing, data mining and knowledge discovery and online analytical processing.
', 4);
INSERT INTO module VALUES('CS3225', 'Combinatorial Methods in Bioinformatics', 'After the complete sequencing of a number of genomes, we are in the stage to understand the mystery of our body, that is, we need to understand the information encoded in the genome and its relationship with RNA and protein. This aim of this module is to cover algorithms related to this stage. In the module, we will cover the algorithms related to genome annotation, motif identification, proteomics, population genetics, microarray, etc.
', 4);
INSERT INTO module VALUES('CS3226', 'Web Programming and Applications', 'This module introduces students to software development on the Web platforms. Students will be exposed to important computer science concepts, including networking, databases, computer security, user interface design, programming languages, and software engineering. These concepts will be tied together through hands-on practice in building a Web-based application using the current Web development technology. At the end of the module, students are expected to be able to design and develop a Web application, to appreciate the underlying technology needed to build a Web application, and to develop a fundamental understanding of related computer science concepts.', 4);
INSERT INTO module VALUES('CS3230', 'Design and Analysis of Algorithms', 'This module introduces different techniques of designing and analysing algorithms. Students will learn about the framework for algorithm analysis, for example, lower bound arguments, average case analysis, and the theory of NP-completeness. In addition, students are exposed to various algorithm design paradigms. The module serves two purposes: to improve the students' ability to design algorithms in different areas, and to prepare students for the study of more advanced algorithms. The module covers lower and upper bounds, recurrences, basic algorithm paradigms (such as prune-and-search, dynamic programming, branch-and-bound, graph traversal, and randomised approaches), amortised analysis, NP-completeness, and some selected advanced topics.
', 4);
INSERT INTO module VALUES('CS3233', 'Competitive Programming', 'This module aims to prepare students in competitive problem solving. It covers techniques for attacking and solving challenging computational problems. Fundamental algorithmic solving techniques covered include divide and conquer, greedy, dynamic programming, backtracking and branch and bound. Domain specific techniques like number theory, computational geometry, string processing and graph theoretic will also be covered. Advanced AI search techniques like iterative deepening, A* and heuristic search will be included. The module also covers algorithmic and programming language toolkits used in problem solving supported by the solution of representative or well-known problems in the various algorithmic paradigms.
', 4);
INSERT INTO module VALUES('CS3234', 'Logic and Formal Systems', 'This module focuses on the deductive and algorithmic aspects of both classical and non-classical logics. It introduces logic as a means for specifying, verifying and reasoning about computer programmes. It emphasizes, in contrast to other similar logic courses, on how logic can be used to represent computational problems, how these representations can be proven correct and how they can be executed on a computer. Topics covered include classical logic theories, logic programming, modal logic, and an introduction to non-standard logics. Treatments of predicate calculus and temporal logic are fully covered with emphasis on their specification, verification, deductive and algorithmic aspects.
', 4);
INSERT INTO module VALUES('CS3235', 'Computer Security', 'The objective of this module is to provide a broad understanding of computer security with some in-depth discussions on selected topics in system and network security. This module covers the following topics: intrusion detection, DNS security, electronic mail security, authentication, access control, buffer overflow, memory and stack protection, selected topics in application security, for instance, web security, and well-known attacks.
', 4);
INSERT INTO module VALUES('CS3236', 'Introduction to Information Theory', 'This module introduces the basics of modern information theory. It covers how information can be quantified, and what this quantification tells us about how well we can compress and transmit information without error. It discusses basic error correcting techniques, and information-theoretic cryptography. Topics covered include: mathematical techniques, entropy measures, fundamental limits to data compression and noisy-channel coding, examples of error-correcting codes, examples of information theoretic cryptography (commitments, secure computation, key distribution, randomness extraction).
', 4);
INSERT INTO module VALUES('CS3240', 'Interaction Design', 'This course is intended for students in computing and related disciplines whose work focuses on human-computer interaction issues in the design of computer systems. The course stresses the importance of user-centred design and usability in the development of computer applications and systems. Students will be taken through the analysis, design, development, and evaluation of human-computer interaction methods for computer systems. They will acquire hands-on design skills through laboratory exercises and assignments. The course also covers HCI design principles and emphasizes the importance of contextual, organisational, and social factors in system design.
', 4);
INSERT INTO module VALUES('CS3241', 'Computer Graphics', 'This module teaches some graphics hardware devices, reviews the mathematics related to the understanding, and discusses the fundamental areas of computer graphics. After completing the course, students are expected to understand the basic computer graphics terminology and concepts, and to be able to design and implement simple 2D and 3D interactive computer graphics related programmes. As an enrichment part of the course, students are introduced the state-of-the-art development in computer graphics by viewing interesting video clips and experimenting with demo programme made available in the course web.
', 4);
INSERT INTO module VALUES('CS3242', '3D Modelling and Animation', 'This module aims to provide fundamental concepts in 3D modelling and animation. It also serves as a bridge to advanced media modules. After taking this module, students should be able to use these concepts to easily build or work with digital models, manipulate the models by means of computer deformation and animation, and use lighting and rendering techniques to create appealing scenes. Topics include coordinate spaces, transforms, 3D model representations, hierarchical structures, deformation, procedural modelling, particle systems, character animation, shading networks, lighting, and scripting concepts.
', 4);
INSERT INTO module VALUES('CS3243', 'Introduction to Artificial Intelligence', 'The module introduces the basic concepts in search and knowledge representation as well as to a number of sub-areas of artificial intelligence. It focuses on covering the essential concepts in AI. The module covers Turing test, blind search, iterative deepening, production systems, heuristic search, A* algorithm, minimax and alpha-beta procedures, predicate and first-order logic, resolution refutation, non-monotonic reasoning, assumption-based truth maintenance systems, inheritance hierarchies, the frame problem, certainly factors, Bayes' rule, frames and semantic nets, planning, learning, natural language, vision, and expert systems and LISP.
', 4);
INSERT INTO module VALUES('CS3244', 'Machine Learning', 'This module introduces basic concepts and algorithms in machine learning and neural networks. The main reason for studying computational learning is to make better use of powerful computers to extract knowledge (or regularities) from the raw data. The ultimate objective is to build self-learning systems to relieve humans from some programming tasks. At the end of the course, students are expected to be familiar with the theories and paradigms of computational learning, and capable of implementing basic learning systems.
', 4);
INSERT INTO module VALUES('CS3245', 'Information Retrieval', 'This module discusses the basic concepts and methods of information retrieval including capturing, representing, storing, organizing, and retrieving unstructured or loosely structured information. The most well-known aspect of information retrieval is document retrieval: the process of indexing and retrieving text documents. However, the field of information retrieval includes almost any type of unstructured or semi-structured data, including newswire stories, transcribed speech, email, blogs, images, or video. Therefore, information retrieval is a critical aspect of Web search engines. This module also serves as the foundation for subsequent modules on the understanding, processing and retrieval of particular web media.
', 4);
INSERT INTO module VALUES('CS3246', 'Multimedia Content Analysis and Search', 'This module presents techniques for the representation, compression, storage, analysis and retrieval of Web-scale digital multimedia information, and their implementation as media search engines. The module is divided into 2 parts. The first part discusses the characteristics, mathematical foundation, compression, processing and applications of digital multimedia data including: text, image and video. It also covers standards in digital multimedia data such as JPEG, MPEG & H261, etc. The second part covers the analysis and retrieval of multimedia contents, including text, image and video. The course will also introduce modern architecture for text and image search engines.
', 4);
INSERT INTO module VALUES('CS3247', 'Game Development', 'The objective of this module is to introduce techniques for electronic game design and programming. This module covers a range of important topics including 3D maths, game physics, game AI, sound, as well as user interface for computer games. Furthermore, it will give an overview of computer game design to the students. Through laboratory programming exercises, the students will have hands-on programming experience with popular game engines and will develop basic games using those engines.', 4);
INSERT INTO module VALUES('CS3249', 'User Interface Development', 'This module aims at providing students with technical skills and hands-on experience of user interface development. It focuses on the design and implementation of user interfaces in general, including graphical user interface. It covers essential topics including user interface models, psychology of humans and computers, user interface style, layout guidelines, GUI programming with widget toolkits, interaction models, event handling, multithreading, interacting with multimedia hardware, usability testing. Selected advanced topics such as geometric transformation, and 3D user interfaces, multiple-user interaction and real-time interaction are also covered.
', 4);
INSERT INTO module VALUES('CS3271', 'Software Engineering for Reactive Systems', 'Reactive systems are real-time systems that continuously interact with the environment. This module introduces students to the software engineering principles for designing systems such as controllers and signal processors that are used in a wide variety of settings, including industrial plants, chemical reactors, flight and automotive controllers and robots. Topics to be covered will include fundamentals of control software, programming languages for real-time controllers, and verification and optimisation of software for digital control systems. Apart from a variety of programming assignments, this course will also introduce students to some relevant research topics in this area.
', 4);
INSERT INTO module VALUES('CS3281', 'Thematic Systems Project I', 'This module is the first part of a two-part series on the development of large-scaled computer systems to solve real-world problems under specific themes such as healthcare, security and surveillance, tourism, etc. Students with complementary technical expertise will form project teams to work on real-world projects under the supervision of CS professors and industrial partners. This first part focuses on the analysis of the real-world problems, formulation of the computing requirements of the desired solution that meets the user's needs, design of the computer systems according to the requirements, and evaluation of the design.
', 4);
INSERT INTO module VALUES('CS3282', 'Thematic Systems Project II', 'This module is the second part of a two-part series on the development of large-scaled computer systems to solve real-world problems under specific themes such as healthcare, security and surveillance, tourism, etc. Students with complementary technical expertise will form project teams to work on real-world projects under the supervision of CS professors and industrial partners. This second part focuses on the development of algorithms required for the systems, implementation and testing of the algorithms and the systems, and evaluation of the systems according to the users' requirements.
', 4);
INSERT INTO module VALUES('CS3283', 'Media Technology Project I', 'This module is the first part of a two-part series on the development of media technology systems such as interactive systems, games, retrieval systems, multimedia computing applications, etc. Students will form project teams to work on media technology projects. This first part focuses on the analysis of the user's needs, formulation of the computing requirements of the desired solution that meets the user's needs, design of the systems according to the requirements, implementation of first-cut prototype for evaluation purpose, and evaluation of the design.
', 4);
INSERT INTO module VALUES('CS3284', 'Media Technology Project II', 'This module is the second part of a two-part series on the development of media technology systems such as interactive systems, games, retrieval systems, multimedia computing applications, etc. Students will form project teams to work on media technology projects. This second part focuses on the development of algorithms required for the systems, implementation and testing of the algorithms and the systems, and evaluation of the systems according to the users' requirements.
', 4);
INSERT INTO module VALUES('CS3343', 'Digital Media Production', 'Development of digital media products such as videos, games, animations and digital special effects require both technical skills and artistic creativity. Common to these different media is the process of digital media production. This module aims at introducing the process of digital media production, in particular, video production. It covers pre-production, production and post-production processes, focusing on main activities such as storyboarding, camera, lighting, audio/sound, directing, recording and digital editing. The students will learn both artistic expression and the technical skills of using digital equipment and software tools. They will also engage in hands-on practice of digital video production.
', 4);
INSERT INTO module VALUES('CS3882', 'Breakthrough Ideas for Digital Markets', 'This module provides students the opportunity to explore and conceptualise new digital products or services that will impact people and enterprises. Students will cultivate the importance of thinking 'design' for the purpose of developing valuable, captivating and usable digital products or services. The module will provide students with insights into the innovation process and case studies of successful innovation. Exposure to ideas from leading companies and serial entrepreneurs will motivate ideation. Students will be required to benchmark their ideas for competitive positioning.
', 4);
INSERT INTO module VALUES('CS4211', 'Formal Methods for Software Engineering', 'Before software can be designed, its requirements must be well understood. Before requirements can be expressed the application domain must be similarly well understood. This course will cover some of the advanced and sound formal techniques of the three major phases of Software Engineering: Domain Engineering (e.g. ontology), Requirements Engineering (e.g. precise specifications), and Software Design (e.g. analyzable models and reasoning tools).
', 4);
INSERT INTO module VALUES('CS4212', 'Compiler Design', 'The objective of this module is to introduce the principal ideas behind programme compilation, and discusses various techniques for programme parsing, programme analysis, programme optimisation, and run-time organisation required for programme execution. Topics covered include regular expressions, context-free grammars, lexical analysis, syntax analysis; different algorithms for parsing codes, such as top-down parsing, bottom-up parsing; translation to abstract syntax using modern parser generator technology, intermediate representation, semantics analysis, type system, un-optimised code generation, code optimisation, data-flow analysis, instruction scheduling.
', 4);
INSERT INTO module VALUES('CS4214', 'Formal Semantics', 'The objective of this course is to provide the basic mathematical techniques to study the semantics and logical reasoning of programmes and programming languages. This enables the students the ability to understand semantics specifications and to develop new ones for new languages. The course also describes and compares various advanced programming language features. The course combines theory and practice. Topics covered include axiomatic, denotational and operational semantics, type systems, template meta-programming, staged/generic programming, XML and XML processing.
', 4);
INSERT INTO module VALUES('CS4215', 'Programming Language Implementation', 'This module provides the students with theoretical knowledge and practical skill in the implementation of programming languages. It discusses implementation aspects of fundamental programming paradigms (imperative, functional and object-oriented), and of basic programming language concepts such as binding, scope, parameter-passing mechanisms and types. It introduces the language processing techniques of interpretation and compilation and virtual machines. The lectures are accompanied by lab sessions which will focus on language processing tools, and take the student through a sequence of programming language implementations. This module also covers automatic memory management, dynamic linking and just-in-time compilation, as features of modern execution systems.
', 4);
INSERT INTO module VALUES('CS4216', 'Constraint Logic Programming', 'This course introduces the programming methodology of Constraint Logic Programming (CLP). It first covers programming in PROLOG, the basic CLP programming language. The main part of the course covers modelling of complex problems using constraints and rules, and the use of advanced algorithms that are supported by the constraint solvers in modern CLP systems. Also covered are the mathematical foundations of CLP. Throughout the course, practical exercises are performed using a modern CLP system such as CLP(R) or Eclipse.
', 4);
INSERT INTO module VALUES('CS4217', 'Software Development Technologies', 'This module aims to provide students with an appreciation of the technologies and tools available in support of the software development life cycle. Through assignments and projects, students will learn various technologies and tools that dramatically improve the productivity of the development process and the quality of product. They will also gain an appreciation of how choosing the wrong technologies and tools can be disastrous to the project, and the pitfalls and opportunities for automation of software development. Topics include cost benefit analysis of using automation tools, tool selection, implementation success criteria, tool evaluations, piloting tools and tool demos.
', 4);
INSERT INTO module VALUES('CS4218', 'Software Testing', 'This module covers the concepts and practice of software testing and debugging including unit testing, integration testing, and regression testing. Various testing coverage criteria will be discussed. Debugging methods for finding the root-cause of errors in failing test cases will also be investigated. The use of testing and analysis for performance prediction, performance clustering and performance debugging will be studied. Students will acquire crucial skills on testing and debugging through hands-on assignments.
', 4);
INSERT INTO module VALUES('CS4220', 'Knowledge Discovery Methods in Bioinformatics', 'The advent of high throughput technologies (e.g. DNA chips, microarray, etc), biologists are being overloaded with lots of information (e.g., gene expression data). To be able to make sense out of these data, there is a need to have a systematic way to analyse them. This course is introduced to provide students with knowledge of techniques that can be used to analyse biological data to enable them to discover new knowledge. At the end of the course, students will be able to identify the relevant techniques for different biological data to uncover new information. Topics include: Clustering analysis, classification, association rule mining; support vector machines; Hidden Markov Models.
', 4);
INSERT INTO module VALUES('CS4221', 'Database Applications Design and Tuning', 'This module addresses the design and performance tuning of database applications. The syllabus focusses on relational database applications implemented with relational database management systems. Topics covered include normalisation theory (functional, multi-valued and join dependency, normal forms, decomposition and synthesis methods), entityrelationship approach and SQL tuning (performance evaluation, execution plan verification, indexing, de-normalization, code level and transactions tuning). The syllabus optionally includes selected topics in the technologies, design and performance tuning of non-relational database applications (for instance, network and hierarchical models and nested relational model for an historical perspective, as well as XML and NoSQL systems for a modern perspective).
', 4);
INSERT INTO module VALUES('CS4222', 'Wireless Networking', 'This module aims to provide solid foundation for students in the area of wireless networks and introduces students to the emerging area of cyber-physical-system/Internet-of-Things. The module will cover wireless networking across all layers of the networking stack including physical, link, MAC, routing and application layers. Different network technologies with different characteristic will also be covered, including cellular networks, Wi-Fi, Bluetooth and ZigBee. Some key concepts that cut across all layers and network types are mobility management, energy efficiency, and integration of sensing and communications. The module emphasizes on exposing students to practical network system issues through building software prototypes.', 4);
INSERT INTO module VALUES('CS4223', 'Multi-core Architecture', 'The world of parallel computer architecture has gone through a significant transformation in the recent years from high-end supercomputers used only for scientific applications to the multi-cores (multiple processing cores on a single chip) that are ubiquitous in mainstream computing systems including desktops, servers, and embedded systems. In the context of this exciting development, the aim of this module is to examine the design issues that are critical to modern parallel architectures. Topics include instruction-level parallelism through static and dynamic scheduling, shared memory, message-passing, and data parallel computer architectures, cache coherence protocols, hardware synchronization primitives, and memory consistency models.
', 4);
INSERT INTO module VALUES('CS4224', 'Distributed Databases', 'This module studies the management of data in a distributed environment. It covers the fundamental principles of distributed data management and includes distribution design, data integration, distributed query processing and optimization, distributed transaction management, and replication. It will also look at how these techniques can be adapted to support database management in emerging technologies (e.g., parallel systems, peer-to-peer systems, cloud computing).
', 4);
INSERT INTO module VALUES('CS4225', 'Massive Data Processing Techniques in Data Science', 'Data science incorporates varying elements and builds on techniques and theories from many fields, including statistics, data engineering, data mining, visualization, data warehousing, and high performance computing with the goal of extracting meaning from data and creating data products. Data science seeks to use all available and relevant data to effectively tell a story that can be easily understood by non-practitioners. In this module, students will learn various massive data processing techniques that are used in data science with emphasis on the algorithmic and mathematical properties of these techniques.
', 4);
INSERT INTO module VALUES('CS4226', 'Internet Architecture', 'This module aims to focus on advanced networking concepts pertaining to the modern Internet architecture and applications. It covers a range of topics including network performance (throughput, delay, Little?s Law and M/M/1 queuing formula), and resource allocation and buffer management (max-min fair, round-robin and RED), intra- and inter-domain routing (RIP, OSPF and BGP), congestion control and modern variations of TCP (AIMD and Cubic TCP), peer-to-peer applications and content delivery networks (BitTorrent, Skype, Akamai), and data center networking and management (SDN and OpenFlow).', 4);
INSERT INTO module VALUES('CS4231', 'Parallel and Distributed Algorithms', 'This course will examine some fundamental issues in parallel programming and distributed computing, and the relationships between the two. Parallel programming: mutual exclusion, semaphores, consistency, wait-free synchronisation. Distributed computing: time, global state, snapshots, message ordering. Relationships: consensus, fault-tolerance, transactions, self-stabilisation.
', 4);
INSERT INTO module VALUES('CS4232', 'Theory of Computation', 'The objective of this module is to provide students with a theoretical understanding of what can be computed, and an introduction to the theory of complexity. It aims to introduce (i) some standard formal models of computation so as to develop an understanding of what can or cannot be computed by various computing devices; (ii) some reasoning techniques commonly used in computer science; these include model equivalence, non-determinism, digitalisation, simulation and reduction; and (iii) the mathematical formulation of objects in computer science so as to study their properties.
', 4);
INSERT INTO module VALUES('CS4234', 'Optimisation Algorithms', 'This module covers common algorithmic techniques for solving optimisation problems, and introduces students to approaches for finding good-enough solutions to NP-hard problems. Topics covered include linear and integer programming, network flow algorithms, local search heuristics, approximation algorithms, and randomized algorithms. Through analysis and application of the techniques to a variety of canonical problems, students develop confidence to (i) appropriately model a given optimisation problem, (ii) apply appropriate algorithmic techniques to solve the problem, (iii) analyse the properties of the problem and candidate algorithms, such as time and space complexity, convergence, approximability, and optimality bound.', 4);
INSERT INTO module VALUES('CS4235', 'Computational Geometry', 'Computational geometry is the study of algorithms for solving geometric problems. This course introduces the main topics and techniques in this field. They will be presented in connection with applications in CAD, databases, geographic information systems, graphics and robotics. Students will learn the main algorithmic techniques for solving geometric problems and the related discrete geometric structures. At the end of this module, students will be able to design and analyse geometric algorithms and data structures, and to apply these techniques to solve problems arising in applications.
', 4);
INSERT INTO module VALUES('CS4236', 'Cryptography Theory and Practice', 'This module aims to introduce the foundation, principles and concepts behind cryptology and the design of secure communication systems. The emphasis is on the formulation and techniques of various cryptographic primitives, and on the secure usage of such primitives to achieve the goals of confidentially, integrity, and authenticity in both theoretical settings and practical scenarios. Basic topics include pseudorandom functions, symmetric key encryption, public key encryption, message authentication codes, hash functions, digital signatures, key exchange and PKI. Selected topics may include: secret sharing, TCP/IP security, Kerberos, SSL, trusted computing, side-channel attacks.
', 4);
INSERT INTO module VALUES('CS4237', 'Systems Modelling and Simulation', 'This course covers the methodology and techniques in systems modelling and the design of computer simulation models. At the end of the course, the students should be able to carry out a study of a system using computer simulation. Topics include: ways to study a system; modelling and simulation lifecycle; principles of discrete-event modelling and simulation; input data modelling, model development and programming; model verification and validation; model output analysis, design of simulation experiments; comparison and evaluation of system design alternatives; applications of simulation in computer science.
', 4);
INSERT INTO module VALUES('CS4238', 'Computer Security Practice', 'This is a lab-based module with emphasis on hands-on experiences of computer security. The objective of this module is to familiarize the students with common attacks and protection mechanisms, as well as general system administration and development of secured software. Topics covered include network security, operating system security, and application security such as DNS attacks, memory-error exploits, and web application attacks. Students will learn through project assignments and defense competitions.
', 4);
INSERT INTO module VALUES('CS4239', 'Software Security', 'Software engineering processes need to include security considerations in the modern world. This module familiarizes students to security issues in different stages of the software life-cycle. At the end of the module, the students are expected to understand secure programming practices, be able to analyse and check for impact of malicious inputs in programs, and employ specific testing techniques which can help detect software vulnerabilities.', 4);
INSERT INTO module VALUES('CS4240', 'Virtual Reality and 3-D Interaction', 'The objective of this module is to expose students to advanced 3D interactive techniques by focusing on a set of selective subjects: fundamentals of virtual reality, immersing devices (HMD, Gloves, magnetic trackers, stereo glasses and other forces) and multi-user systems, techniques for real time or fix frame rate simulation such as scene/object culling, representations of level of details (LOD), and various image based rendering methods based on the dimensionality of the Plenoptic function and related sampling and re-sampling issues.
', 4);
INSERT INTO module VALUES('CS4241', 'Multimedia Information Retrieval', 'With the proliferation digital media, more and more information is available in non-textual forms. The ability to index, manage and retrieve media contents is of paramount importance. This module introduces the theory, design and technologies of media search. It covers the design of media search engine, the extraction of media features and their indexing, media concept annotation, media search paradigms, and interactive search. It also covers the applications of media search in social media, enterprise and personal media.
', 4);
INSERT INTO module VALUES('CS4242', 'Social Media Computing', 'The emergence of WWW, smart mobile devices and social networks has revolutionised the way we communicate, create, disseminate, and consume information. This has ushered in a new era of communications that involves complex information exchanges and user relationships. This module aims to provide students with a good understanding of the social network phenomena and computational skills for analysing the complex social relation networks between users, the contents they shared, and the ways contents and events are perceived and propagated through the social networks. The analysis will provide better understanding of the concerns and interests of users, and uncover live and emerging events that will affect the community.
', 4);
INSERT INTO module VALUES('CS4243', 'Computer Vision and Pattern Recognition', 'In this module, various methods for computers to understand and interpret the contents of images are investigated. The objective is to expose the students to the basic concepts underlying various computer vision techniques and the application of current techniques for problem solving. Topics covered include morphological operations, convolution and cross correlation, edge and corner detection, colour, texture, motion, image registration and mosaicking, 3D vision, camera calibration and 3D reconstruction, eigenface and pattern recognition. Laboratory exercises and projects are included for the students to solve practical problems using computer vision and image processing software packages.
', 4);
INSERT INTO module VALUES('CS4244', 'Knowledge-Based Systems', 'This is a module that contains both the theory and practice of building knowledge-based systems. The aim of this module is to prepare students so that they can design and build knowledge-based systems to solve real-world problems. The module starts with motivations, background and history of knowledge-based system development. The main content has five parts: rule-based programming language, uncertainty management, knowledge-based systems design, development and life cycle, efficiency in rule-based language and knowledge-based systems design examples.
', 4);
INSERT INTO module VALUES('CS4246', 'AI Planning and Decision Making', 'This module introduces the major concepts and paradigms in planning and decision making in complex environments. It examines issues, challenges, and techniques in problem representation, goal or objective specification, response selection, and action consequence for a wide range of strategic and tactical planning and decision making situations. Topics covered include deterministic and non-deterministic planning, practical planning and acting under resource constraints and uncertainty, expected utility and rational decision making, decision networks, Markov decision processes, elementary game theory, and multi-agent planning and decision making.
', 4);
INSERT INTO module VALUES('CS4247', 'Graphics Rendering Techniques', 'This module provides a general treatment of real-time and offline rendering techniques in 3D computer graphics. Specific topics include the raster graphics pipeline, viewing and transformation, real-time mapping techniques, real-time shadow algorithms, local reflection models, global illumination, distributed ray tracing, photon mapping, radiosity, volume rendering, image-based rendering and modelling, and strategies for anti-aliasing and photo-realism.
', 4);
INSERT INTO module VALUES('CS4248', 'Natural Language Processing', 'This module deals with computer processing of human languages, emphasising a corpus-based empirical approach. The topics covered include: (i) Linguistic essentials. (ii) Basic techniques and algorithms: Hidden Markov model, Viterbi algorithm, supervised learning algorithms. (iii) Words: part-of-speech tagging. (iv) Syntax: noun phrase chunking, named entity tagging, parsing (top down, bottom up, probabilistic). (v) Semantics: word sense disambiguation. (vi) Pragmatics: discourse, co-reference resolution. (vii) Applications: text categorisation, text summarisation, language identification, information extraction, question answering, machine translation.
', 4);
INSERT INTO module VALUES('CS4249', 'Phenomena and Theories of Human-Computer Interaction', 'This module teaches the underlying science of Human-Computer Interaction (HCI) and its application to user interface design. It surveys a wide range of psychological theories beginning with organizational behaviour approaches, understanding of work and workflow within organizations, and moving on to understanding human psychological architecture and processing constraints. It demonstrates via a combination of scientific theory understanding and engineering modelling the solutions of design problems facing a user interface designer. It also covers new design methods and techniques available and the new conceptual mechanisms used in HCI such as the metaphors for describing user interaction.
', 4);
INSERT INTO module VALUES('CS4271', 'Critical Systems and Their Verification', 'The objective of this module is to introduce formal verification techniques for validating safety critical reactive systems with specific focus on embedded systems. It covers an automated formal verification technique called Model Checking, which is based on state space search. The different parts of the course will touch upon: i. formal modelling ii. verification via Model Checking iii. state space reduction techniques to make model checking space/time efficient and iv. specific issues in validation of reactive embedded systems.
', 4);
INSERT INTO module VALUES('CS4275', 'Programming Real-time Systems', 'Developing applications for real-time embedded systems require programming languages and abstractions which are substantially different from those used for developing desktop applications. This module will introduce different real-time programming models, programming languages corresponding to these models and techniques for programming with real-time operating systems. The topics to be covered will include principles of synchronous programming using Lustre, the time-triggered programming model and the recently developed Giotto language, and programming languages based on the model of scheduled computation such as Real-Time Java. This module will be suitable for senior undergraduates and graduate students interested in embedded systems and programming languages.
', 4);
INSERT INTO module VALUES('CS4340', 'Digital Special Effects', 'This module aims at teaching multimedia techniques for creating digital specia effects video. It allows the students to explore their creativity while extending their skills in multimedia technologies. Topics covered include elements of special effects, camera work, storyline and storyboard, digital compositing, matchmoving, video effects, CG effects, 2D/3D morphing, realistic rendering, sound effects, case studies. The students are required to analyse and critique special effects in movies. The module culminates in a short video project that demonstrates the students' creativity and innovation in using various techniques to create a captivating and stunning digital special effects video.
', 4);
INSERT INTO module VALUES('CS4344', 'Networked and Mobile Gaming', 'This module aims at providing students a deep understanding of various technical issues pertaining to the development of networked games and mobile games. Students will be exposed to concepts from distributed systems, operating systems, security and cryptography, networking and embedded systems. In particular, issues such as game server architectures (mirrored, centralised, peer-to-peer etc.), consistency management (bucket synchronisation, dead reckoning etc.), interest management, scalability to large number of clients (C10K problem), cheat prevention and detection, power management, will be discussed.
', 4);
INSERT INTO module VALUES('CS4345', 'General-Purpose Computation on GPU', 'With the advancements in the technology of graphics processing units (GPUs), many computations can be performed faster on the GPUs than the CPUs. They are also programmable, making them useful for not just computer graphics processing but also general-purpose computations. Therefore, they are a natural choice as high-speed coprocessors to the CPUs in various applications. This module introduces the architecture of GPU, programme-writing on GPU using high-level language such as Cg, and the use of GPU in applications including computer graphics, games, scientific computation, and image processing.
', 4);
INSERT INTO module VALUES('CS4347', 'Sound and Music Computing', 'This module introduces the fundamental technologies employed in sound and music computing which are grouped into three major areas: Sound, Music, and Interaction. It begins with an introduction to sound production, propagation and perception, followed by digital sound recording, editing, post-processing and compression. Its core components consist of the analytic and synthetic approaches of sound and music. The analytic approach pertains to analysis and understanding, whereas the synthetic approach pertains to generation and processing. Interaction aspects include multimodal mobile music interface and sound interaction design. Finally, music information retrieval will be introduced as an application of analytic techniques.
', 4);
INSERT INTO module VALUES('CS4350', 'Game Development Project', 'The objective of this project-based module is to provide an opportunity for the students to work in a group to design and develop a game following the main stages of game development process. The module will focus on the design of core dynamic, game mechanics, strategy, progression, balancing, game levels, interface and technical features including 3D graphics, animation, AI, physics, and networking. In addition, software engineering principles will be practised in developing the game software.
', 4);
INSERT INTO module VALUES('CS4880', 'Digital Entrepreneurship', 'The course will cover trends in the digital marketplace and emerging high-growth opportunities for digital businesses. The course will highlight issues facing companies with new products and services in an ever-changing digital marketplace. While the course will provide an overview on structuring of new ventures, the primary focus will be on opportunity identification and sources of competitive differentiation, particularly as they relate to digital innovation. To hone these skills the students will communicate by crafting a business plan.
', 4);
INSERT INTO module VALUES('CS5214', 'Design of Optimising Compilers', 'The performance gap between optimised and unoptimised code continues to widen as modern processors evolve. Notably, the emerging explicitly parallel instruction computing (EPIC) processors are significantly dependent on a range of aggressive programme optimisations to yield performance. This module provides an in-depth study of code optimisation techniques used in compilers for state-of-the-art processors. Topics covered include structure of an optimising compiler, the programme dependence graph, front end optimisations, instruction scheduling, register allocation, compiling for EPIC processors including predicated execution and software pipelining with hardware support, loop optimisations, dataflow analysis and optimisation, optimisations for the memory hierarchy, and automatic parallelisation.
', 4);
INSERT INTO module VALUES('CS5215', 'Constraint Programming', 'Constraint programming is an alternative approach to computing in which the programming process is limited to a generation of requirements (constraints) and to solving of them by general methods and domain dependent methods. The aim of this course is to discuss the basic aspects of constraint programming. Students will learn problem modelling by means of constraints and the main techniques used to solve such systems of constraints. The course will focus on the fundamental notions of constraint satisfaction problems, local consistency, constraint propagation, complete and incomplete constraint solvers, and various search methods.
', 4);
INSERT INTO module VALUES('CS5218', 'Principles of Programme Analysis', 'Programme analysis are static (compile-time) techniques for computing approximate and yet reliable information about the dynamic behaviour of programmes. This module lays the foundation for study of programme analysis. It covers the essential mathematics upon which programme analyses are built, and provides an overview of different approaches to programme analysis. Topics include: Partially ordered sets, induction and co-induction, data flow analysis, constraint based analysis, abstract interpretation, and type and effect systems. Students with interest in programming language design and compiler design will find this module beneficial.
', 4);
INSERT INTO module VALUES('CS5219', 'Automated Software Validation', 'The immense growth in the complexity of software has increased the scope of errors, which are often critical. The nature of these errors is diverse, resulting from the diversity of the various classes of software: sequential, multithreaded, reactive and real-time. In this course, we will study techniques for verification, run-time monitoring and debugging of software which help us to give certain guarantees against such errors. The focus will be on automated validation techniques. This is a research-oriented course in programme validation and verification, but parts of it are useful for graduate students working in other areas.
', 4);
INSERT INTO module VALUES('CS5222', 'Processor Architecture', 'The aim of this module is to introduce the state-of-the-art architectural advances underlying the current generation of computing systems. A review of pipelined processor design and hierarchical memory design is followed by advanced topics including exploitation of instruction-level parallelism through dynamic instruction scheduling and speculation, exploiting thread-level parallelism through multiprocessors, and optimizations for memory and storage subsystems. Throughout the module, particular emphasis will be placed on cost-performance-power-reliability trade-offs in designing the different architectural components.
', 4);
INSERT INTO module VALUES('CS5223', 'Distributed Systems', 'The topic of Distributed Systems is now garnering increasing importance, especially with the advancement in technology of the Internet and WWW. The aim of this module is to provide students with basic concepts and principles of distributed operating systems, interprocess communications, distributed file systems, shared data, and the middleware approach. The module is taught in seminar style, and several case studies are included, e.g. CORBA. Topics: Introduction; Characteristics of Distributed Systems; Process Management Communication in Distributed Systems; Distributed Synchronisation; Distributed Real-time Systems; File Systems; Naming Security; Fault Tolerant Distributed Systems; Distributed Simulation; WWW as an application of Distributed System.
', 4);
INSERT INTO module VALUES('CS5224', 'Cloud Computing', 'This module aims to provide an overview of the design, management and application of cloud computing. The topics include managing virtualization, cloud computing environments, cloud design patterns and use cases, data centre architectures and technologies, cloud services fulfillment and assurance, orchestration and automation of cloud resources, cloud capacity management, cloud economics, case studies.', 4);
INSERT INTO module VALUES('CS5226', 'Database Tuning', 'This module is concerned with the performance-related database administration issues. The topics include: an overview of query optimisation techniques, physical data base design, system configuration, buffer management, performance analysis and tuning techniques.
', 4);
INSERT INTO module VALUES('CS5228', 'Knowledge Discovery and Data Mining', 'This course introduces fundamental principles behind data mining and efficient techniques for mining large databases. It provides an overview of the algorithmic aspect of data mining: its efficiency (high-dimensional database indexing, OLAP, data reduction, compression techniques) and effectiveness (machine learning involving greedy search, branch and bound, stochastic search, parameter optimisation). Efficient techniques covered include association rules mining (Apriori algorithm, correlation search, constrained association rule discovery), classifier induction (decision trees, RainForest, SLIQ; Support vector machine; Naive Bayesian; classification based on association / visualisation), cluster analysis (kmeans, k-mediods, DBSCAN, OPTICS, DENCLUE, STING, CLUSEQ, ROCK etc), and outliers/deviants detection (LOF, Distance-based outlier etc).
', 4);
INSERT INTO module VALUES('CS5229', 'Advanced Computer Networks', 'This course covers advanced fundamental principles of computer networks and techniques for networking. The goal of this course is to teach these fundamentals/ techniques that will remain important and relevant regardless of the hot topics in networks and networking. Briefly, the topics include advanced network architecture and design principles, protocol mechanisms, implementation principles and software engineering practices, network algorithmic, network simulation techniques and tools, performance analysis and measurement, and protocol specification/verification techniques.
', 4);
INSERT INTO module VALUES('CS5230', 'Computational Complexity', 'The aim of this module is to study the various measures of difficulty of problem-solving in computing, and to introduce some techniques in theoretical computer science such as nondeterminism, digitalisation, simulation, padding, reduction, randomisation and interaction. Topics covered include: space and time complexity - the classes P, NP, co-NP, PSPACE, EXP, etc.; tape compression; linear speedup; polynomial reduction; Cook's theorem; Savitch's theorem; translation lemma; Gap theorem; NP-completeness and NP-hard problems; probabilistic complexity classes; approximation algorithms; and interactive protocols.
', 4);
INSERT INTO module VALUES('CS5231', 'Systems Security', 'This module introduces fundamental notions and requirements in computer security, such as the concepts of confidentiality, integrity and availability, and the mechanisms that provide security in various systems and applications. To illustrate relevant concepts, selected topics in information security, including symmetric key cipher and PKI, operating system security, network security, web security, and database security will be covered. Case studies of existing systems, international standards such as IPSec, and well-known attacks like phishing and buffer overflow will also be covered
', 4);
INSERT INTO module VALUES('CS5232', 'Formal Specification & Design Techniques', 'The primary role of the formal specification is to provide a precise and unambiguous description of a computer system. A formal specification allows the system designer to verify important properties and detect design error before system development begins. The objective of this course is to study various formal specification and design techniques for modelling (1) object-oriented systems, (2) realtime distributed systems, and (3) concurrent reactive systems. The course will focus on the state-based notations Z/Object-Z, event-based notation CSP/Timed-CSP. Graphical modelling notations, such as StateChart and UML (Unified Modelling Language) will also be addressed.
', 4);
INSERT INTO module VALUES('CS5233', 'Simulation and Modelling Techniques', 'This course aims to provide students with a working knowledge of applying simulation techniques to model, simulate and study complex systems. It covers techniques in simulation model design, model execution and model analysis. Model design techniques include conceptual models, declarative models, functional models, constraint models, and multi-models. Model execution techniques include serial and parallel discrete-event simulation algorithms. Topics in model analysis include input-output analysis and experiment design. Students will have hands-on experience using a simulation package that we have developed.
', 4);
INSERT INTO module VALUES('CS5234', 'Combinatorial and Graph Algorithms', 'This course presents advanced material on the design and analysis of combinatorial algorithms with emphasis on efficient algorithms and data structures. This course is meant for students who intend to (i) do research in computer science in general and algorithm design in particular or (ii) do advanced application/ software development in other areas of computer science. (It assumes that the student has already done one course on design and analysis of algorithms equivalent to CS3230.)
', 4);
INSERT INTO module VALUES('CS5236', 'Advanced Automata Theory', 'In computer science, automata are an important tool for many theoretical investigations. Various types of automata have been used to characterise complexity classes. This module covers automata theory in depth, describes the Chomsky hierarchy, and introduces various advanced topics including automata structures, automata on infinite words, automata on trees and the learnability of classes of regular languages from queries and positive data.
', 4);
INSERT INTO module VALUES('CS5237', 'Computational Geometry and Applications', 'The course aims to provide students with a geometric viewpoint in problem-solving. It lays a foundation for solving problems with computational geometric methods, and bridges the gap between theoretical computer science and the real applications by introducing application areas, such as bio-geometric modelling, computer graphics and mesh generation, as well as other engineering problems such as reverse engineering. Topics include: convex-hull algorithms, simplicial complexes, union of balls, Voronoi diagram, Delaunay triangulation, lifting and projecting, alpha shape, surface reconstruction, sphere algebra, orthogonality and complementarity, molecular skin surfaces, curvatures and surface meshing, deformation and morphing, etc.
', 4);
INSERT INTO module VALUES('CS5238', 'Advanced Combinatorial Methods in Bioinformatics', 'Biology data are too enormous. Handling them using brute-force approaches becomes impossible and efficient algorithms are required. This module is an in-depth study of some of these advanced algorithms. Through the course, students are not only taught to understand these algorithms in detail, but are also given chances to solve some research problems in this field. Topics include sequence comparison, structure comparison and prediction, phylogenetic tree reconstruction and comparison, sequencing by hybridisation, Genome rearrangements, gene network, microarray.
', 4);
INSERT INTO module VALUES('CS5239', 'Computer System Performance Analysis', 'The objective of this module is to provide students a working knowledge of computer performance evaluation and capacity planning. They will be able to identify performance bottlenecks, to predict when performance limits of a system will be exceeded, and to characterise present and future workload to perform capacity planning activities. Topics include: performance analysis overview; measurement techniques and tools including workload characterisation, instrumentation, benchmarking, analytical modelling techniques including operational analysis, stochastic queuing network analysis; performance of client-server architectures; capacity planning; case studies.
', 4);
INSERT INTO module VALUES('CS5240', 'Theoretical Foundation of Multimedia', 'The module lays the theoretical foundation for graduate students to do research in multimedia: images, videos, audio, speech, graphics and text documents. The module covers the main theoretical issues common to various multimedia research. These issues provide a general framework within which specific techniques in particular research areas can be understood. Topics include: vector and signal representations of multimedia, spatial and frequency analyses, models and parameter estimation methods. Examples will be drawn from different types of media. Upon completion, students will be well-grounded to pursue further research in computer vision, graphics, natural language processing, audio analysis and multimedia applications.
', 4);
INSERT INTO module VALUES('CS5241', 'Speech Processing', 'This module exposes the graduate students to the fundamental theory of speech processing, focusing primarily on automatic speech recognition. Upon completion of this module, students should be able to perform research on speech recognition topics and commercial speech technology development. Topics covered by this module include: speech signal processing, automatic speech recognition (ASR), continuous speech recognition, acoustic modelling using the Hidden Markov Model (HMM), language modelling for ASR and advanced speech recognition techniques for state-of-the-art large vocabulary continuous speech recognition (adaptation and robustness, discriminative training and decoding strategies).
', 4);
INSERT INTO module VALUES('CS5242', 'Advanced Neural Networks', 'The objective of this module is to examine advanced research topics in two major aspects of neural networks' functionality: problem solving and modelling. It emphasizes the application of neural network techniques to interesting and important problems that may be difficult to handle using traditional methods. Topics covered under problem-solving include classification, clustering, content-addressable memory, reinforcement-learning, control, time series. Topics covered under modelling include Grossberg networks (instarts, outstars, cooperative-competitive networks) data encoding, knowledge representation, modeling behaviour and cognitive functions.
', 4);
INSERT INTO module VALUES('CS5246', 'Text Processing on the Web', 'Most information on the web is in the form of encoded free-text formats. Current trends are towards high-level and semantic encoding of text information, and towards the integration of wired and wireless web environments. There is a need to classify and abstract information for display on wide variety of devices with wide ranging processing power and display capabilities. This module introduces the concepts and techniques for the analysis, representation, retrieval, classification and summarisation of unstructured textual information. Upon completion, the students should have the competence to design and implement text processing and mining systems and search engines on the web.
', 4);
INSERT INTO module VALUES('CS5248', 'Systems Support for Continuous Media', 'This module is targeted at computer science graduate students and covers the major aspects of building streaming media applications -- from coding to transmission to playback. Issues such as transport protocols, control protocols, caching, buffering, synchronization and adaptations will be examined.
', 4);
INSERT INTO module VALUES('CS5249', 'Audio in Multimedia Systems', 'This module aims at providing students with an in-depth understanding of modern audio technologies, ranging from low-level audio representation to high-level content analysis; and from basic waveform to advanced audio compression and compressed domain processing. Upon completion of this module, students should be able to perform research such as narrowing the semantic gap between low-level features and high-level concepts. Topics include: discretisation, sampling, audio formats, audio synthesis, spatial audio, feature extraction, speech recognition, audio segmentation and summarisation, source separation, and audio compression.
', 4);
INSERT INTO module VALUES('CS5250', 'Advanced Operating Systems', 'The module covers a broad range of issues in the design and implementation of modern advanced operating systems. The topics covered in this module includes OS design strategies (including microkernels, mobile, embedded and real-time operating systems and the component?s interfaces), priority and resource allocation strategies; scheduling algorithms (including for multi-core, multi-processors); naming, protection and security; UI and windowing systems; file system implementations (including network and distributed file systems); failure and recovery; and virtualization and the Internet-ready OS. They extend and provide in-depth coverage of material in earlier prerequisite OS modules.
', 4);
INSERT INTO module VALUES('CS5271', 'Performance Analysis of Embedded Systems', 'Modern embedded systems are heterogeneous collections of multiple hardware and software components, which might be designed by different vendors and have different interfaces. This heterogeneity, coupled with the complexity of embedded software and the complex features of modern processors make performance analysis of such systems a difficult problem. In recent years, there has been a lot of work in this area, especially because of its practical importance. In this course, we will discuss some of this work with the aim of getting a broad overview of this area. These will include formal models, algorithms, various simulation techniques, tools and case studies in the specific context of embedded systems, which significantly differ from techniques used for the performance analysis of general computer systems. Our focus will be on system-level design techniques, with the aim of critically accessing known models and methods in terms of their generality and ability at different stages of an embedded system design process. This course will be suitable for both graduate students and honours-year undergraduate students, who are interested in the general area of Computer Engineering. The projects/assignments will consist of a mix of theory and implementation and there will be enough flexibility to incline more towards one or the other direction.
', 4);
INSERT INTO module VALUES('CS5272', 'Embedded Software Design', 'This course focuses on the design and implementation of software for programmable embedded systems. Embedded computing systems hidden inside everyday electronic devices such as handphones, digital cameras etc. are becoming more and more prevalent. However, the heterogeneous nature of the underlying hardware as well as tight constraints on size, cost, power, and timing pose significant challenges to embedded software development. This course presents techniques that address these distinctive characteristics of embedded software implementation. Topics include embedded software development for programmable processors and reconfigurable hardware, component-based design, optimasations for performance, power, code size, operating system issues, and case studies of available systems.
', 4);
INSERT INTO module VALUES('CS5321', 'Network Security', 'The objective of this module is to introduce students to the various issues that arise in securing and managing the networks, and study the state-of-the-art techniques for addressing these challenges. A number of most damaging attacks on computer systems involve the exploitation of network infrastructure. This course provides an in-depth study of network attack techniques and methods to defend against them. Topics include basic concepts in network security and management; firewalls and virtual private networks; network intrusion detection; denial of service (DoS); traffic analysis; secure routing protocols; protocol scrubbing; and advanced topics such as wireless network security.
', 4);
INSERT INTO module VALUES('CS5322', 'Database Security', 'Database security has a great impact on the design of today's information systems. This course will provide an overview of database security concepts and techniques and discuss new directions of database security in the context of Internet information management. Topics covered include: Access control models for DBMSs, Inference controls, XML database security, Encrypted databases, Digital credentials and PKIs, Trust in open systems, and Peer-to-peer system security.
', 4);
INSERT INTO module VALUES('CS5330', 'Randomized Algorithms', 'The module will cover basic concepts in the design and analysis of randomized algorithms. It will cover both basic techniques, such as Chernoff bounds, random walks, and the probabilistic method, and a variety of practical algorithmic applications, such as load balancing, hash functions, and graph/network algorithms. The focus will be on utilizing randomization to develop algorithms that are more efficient and/or simpler than their deterministic counterparts.
', 4);
INSERT INTO module VALUES('CS5331', 'Web Security', 'This module aims to prepare graduate students for understanding the security of the latest web platform and its interplay with operating systems and the cloud infrastructure. The topics covered include the design of web browsers and web applications, vulnerabilities in web applications and web browsers, design of web scanners, authentication in web-based platforms, security policies and enforcement mechanisms. This module also coverssecurity topics on the interface between the web platform and the backend systems, such as the underlying database systems and cloud infrastructure.
', 4);
INSERT INTO module VALUES('CS5339', 'Theory and Algorithms for Machine Learning', 'The module aims to provide a broad theoretical understanding of machine learning and how the theory guides the development of algorithms and applications. Topics covered include the approximation capabilities of common function classes used for machine learning, such as decision trees, neural networks, and support vector machines, the sample complexity of learning different function classes and methods of reducing the estimation error such as regularization and model selection, and computational methods used for learning such as convex optimization, greedy methods, and stochastic gradient descent.
', 4);
INSERT INTO module VALUES('CS5340', 'Uncertainty Modelling in AI', 'The module covers modelling methods that are suitable for reasoning with uncertainty. The main focus will be on probabilistic models including Bayesian networks and Markov networks. Topics include representing conditional independence, building graphical models, inference using graphical models and learning from data. Selected applications in various domains such as speech, vision, natural language processing, medical informatics, bioinformatics, data mining and others will be discussed.
', 4);
INSERT INTO module VALUES('CS5342', 'Multimedia Computing and Applications', 'This course lays the foundation for graduate students to do research in multimedia systems comprising images, videos, speech, and audio. The module covers the main topics common to multimedia computing applications, i.e., multimedia representation, processing, analysis, and synthesis. By teaching the topics together with the computational tools commonly used in multimedia research, it aims to strike a balance between theoretical considerations and practical applications. Upon completion, the students should be able to understand the foundations of multimedia computing, and apply computational tools to the processing of multimedia data in order to create specific applications.
', 4);
INSERT INTO module VALUES('CS5343', 'Advanced Computer Animation', 'From the covert digital water in Titanic to the mixed real and virtual actors in Avatar, from the arm-controllable Wii games to the completely full-body-play Xbox Kinect games, computer animation technologies have advanced significantly during the past decades, both in the movie and the game industries. This module reveals all the exciting behind-the-scene techniques that make these movies and games possible, including but not limited to motion capture, fluid animation, facial animation, and full-body character animation. This is a project-based course that aims to provide strong foundation on advanced computer animation methods and prepare students for research in animation.
', 4);
INSERT INTO module VALUES('CS5344', 'Big-Data Analytics Technology', 'This module analysis of data which can not fit in main memory and application of such analysis to web applications. The topics covered include: map-reduce as a tool for creating parallel algorithms that operate on very large amount of data, similarity search, data-streaming processing, search engine technology, clustering of very large, high-dimensional datasets.
', 4);
INSERT INTO module VALUES('CS5345', 'Social and Digital Media Analytics', 'There is a proliferation of social and digital media content data today generated by both consumers and firms. This module aims to introduce concepts, methods and tools for social and digital media analytics, and in the application and management of such analytics efforts in industry sectors such as telecommunications and consumer retail. Topics covered include network data in social and digital media, formal methods for social network analysis, analytics and visualization tools, population and structural models for network dynamics, and various industry case studies on social and digital media analytics. Instructional methods will include lectures, case analyses, assignments and projects.
', 4);
INSERT INTO module VALUES('CS5351', 'The Business of Software', 'The software business well exceeds a trillion dollars, covering companies that sell software products as well as corporations that depend primarily on software technology for their business. The course will cover the evolution of software business, and the continuous reshaping of industry. Students will be exposed to market dynamics affecting the birth, growth and transition of these businesses. The course will investigate business strategies followed by these companies. Students will be encouraged to reflect on trends emerging from the integration of innovative technologies and evolving consumer and enterprise needs. There will be special emphasis on Asia-Pacific markets and businesses.', 4);
INSERT INTO module VALUES('CS6101', 'Exploration of Computer Science Research', 'This module introduces CS graduate students to various research areas in Computer Science. Study groups are organised for major research areas. Each study group provides a forum for students to read, present and discuss research papers, and acquire the basic research skills for literature review and critical comparison of existing work. Students will also gain a first experience in technical presentation and writing.
', 4);
INSERT INTO module VALUES('CS6202', 'Advanced Topics in Programming Languages', 'This module discusses the contemporary concepts in the design and implementation of major programming languages and systems. It aims to provide students with advanced technical knowledge in evaluating, designing, and implementing an efficient and expressive programming language/system. Topics are selected from a group of contemporary issues that has substantial impact in the development of programming languages/systems, either in terms of performance efficiency or programming expressivity. These include, but not restricted to, computational models, programme semantics, concurrency theory, garbage collection techniques, programme analysis, type inference, programme calculation and transformation, run-time profiling, implementation models, meta-programming.
', 4);
INSERT INTO module VALUES('CS6203', 'Advanced Topics in Database Systems', 'This module covers the topics in database management systems with current research and industrial interests and importance. Examples of topics include multimedia data management, object-oriented database technology, data warehousing and data mining, integration of heterogeneous and legacy systems.
', 4);
INSERT INTO module VALUES('CS6204', 'Advanced Topics in Networking', 'This graduate level course covers a broad range of the latest developments in computer networking and telecommunications in terms of new techniques and technologies, trends, open research issues and some related new principles and approaches in networking. Selected topics covered via class lectures and assigned readings include developments in the past three years. Upon completion of this course, the student will be able to understand the latest issues and proposed solutions in networking, and acquire the skills and methodology for identifying research problems. This course will help prepare students towards a research career in networking.
', 4);
INSERT INTO module VALUES('CS6205', 'Advanced Modelling & Simulation', 'The aim of this course is to provide students with the ability to model, simulate and analyse complex systems in a reasonable time. This course is divided into three parts and covers advanced techniques in simulation model design, model execution and model analysis. A selection of model design techniques such as conceptual models, declarative models, functional models, constraint models, and multi-models will be discussed. Model execution techniques include discussion of serial and parallel discrete-event simulation algorithms. For model analysis, topics include input-output analysis, variance reduction techniques and experimental design.
', 4);
INSERT INTO module VALUES('CS6206', 'Advanced Topics in HCI', 'This module covers advanced topics in human computer interaction that are of current research or application interests. Its aim is to examine both the theoretical bases that underlie the design of interfaces and advanced technologies for human computer interactions. A wide range of topics may be covered including psychological theories, organizational behaviour, virtual reality, augmented reality, and computer-supported cooperative work. The module illustrates where and when the theories are applicable, demonstrates the solutions using a combination of scientific theory understanding and engineering modelling. It also illustrates advanced technologies that form part of the solutions.
', 4);
INSERT INTO module VALUES('CS6207', 'Advanced Natural Language Processing', 'The module aims to prepare students to embark on research in natural language processing (NLP). At the end of the course, the students will have experience in reading and critiquing research papers, and will have undertaken a substantial project on some aspects of NLP research. Topics covered include: Statistical parsing, Word sense disambiguation, SENSEVAL, co-reference resolution, machine translation, question answering.
', 4);
INSERT INTO module VALUES('CS6208', 'Advanced Topics in AI', 'This module covers advanced topics in artificial intelligence that are of current research or application interests. A wide range of topics may be covered including soft computing (fuzzy logic, genetic algorithms, etc.), data mining, machine learning, image and video processing, artificial life, robotics, etc. The exact topics to be taught will depend on the lecturers teaching the module.
', 4);
INSERT INTO module VALUES('CS6209', 'Topics in Cryptography', 'The objective of this module is to provide a systematic treatment to cryptography techniques. Topics covered include: mathematical foundations; information theory; classical cryptographic systems: substitution cipher, shift cipher, affine cipher, hill ciphers, permutation cipher, etc.; design and analysis of block ciphers; pseudorandom numbers and sequences; design and analysis of stream cipher cryptosystems; identification and entity authentication; key management techniques; Rabin public-key encryption; McEliece publickey encryption; signature schemes: RSA, EIGamal, and digital signature standard; design and analysis of hash functions; cryptographic protocols; and efficient implementations.
', 4);
INSERT INTO module VALUES('CS6210', 'The Art of Computer Science Research', 'This module aims to provide the meta-skills for research in computer sceience. How does one discover great research problems? What are the good strategies for solving research problems? How does one write papers or give presentations with great impact? Students will seek answers to these questions by critically examining and assessing successful and less successful examples of research.
', 4);
INSERT INTO module VALUES('CS6211', 'Analytical Performance Modelling for Computer Systems', 'Constructing simple mathematical models to describe a computer system can help in analysis and understanding of the characteristics, behavior, and performance of the system. This module introduces students to the modelling techniques, commonly used models, applications of the models to performance modelling of computer systems, and experimental validation of the models. After completing the module, students are expected to have the confidence to construct, analyze, and validate a performance model for a computer system that they are interested in.
', 4);
INSERT INTO module VALUES('CS6212', 'Topics in Media', 'There is a surge in both the industrial interest and the advancement of media technology. This course aims to bring in the latest advanced development in media technology to the postgraduates.
', 4);
INSERT INTO module VALUES('CS6213', 'Topics in Distributed Computing', 'Since computer networks and clusters are becoming more and more ubiquitous, the use of parallelism is no longer restricted to privilege access to powerful supercomputers. The main aim of this module is to provide an in-depth study of some of the recent advances in distributed computing. Topics covered include HLA (High Level Architecture) distributed simulation, performance issues in distributed systems, scalable web servers and some issues in peer-to-peer distributed computing. This is a project-based module and students will have extensive hands-on experience using the software tools we have developed in our research.
', 4);
INSERT INTO module VALUES('CS6220', 'Advanced Topics in Data Mining', 'With the rapid advances of computer and internet technologies, a large amount of data accumulates. Discovering knowledge from the data will give us a competitive advantage. The process of knowledge discovery involves preprocessing the data, mining or discovering patterns from the data, and post-processing the discovered patterns. In this course, we will review and examine the present techniques and the theories behind them and explore new and improved techniques for real world knowledge discovery applications. The course is designed to encourage active discussion, creative thinking, and hands-on project development.
', 4);
INSERT INTO module VALUES('CS6222', 'Special Topics in Computational Biology', 'This lecture/seminar-based module introduces some biological investigations enabled by the latest experimental technologies in biology. We focus on the role of computing in helping biologists with these investigations. Students are expected to attend lectures, give seminars, and do projects. The seminars require the students to read papers related to the selected biological investigations, the enabling experimental technologies, and associated computational solutions. For the projects, students need to develop some methods/algorithms, integrate existing tools, or enhance existing tools with new functions.
', 4);
INSERT INTO module VALUES('CS6230', 'Topics in Information Security', 'This module aims to prepare graduate students for research and development in information security, by investigating selected topics in cryptography and information theoretic security. Selected topics may include classical issues such as provable security, design of symmetric key ciphers, and public key cryptography, as well as emerging topics, such as pairing-based cryptography, homomorphic encryption, privacy-preserving methods, information hiding, and data forensic. Other topics of current research interests may also be included.
', 4);
INSERT INTO module VALUES('CS6231', 'Topics in System Security', 'This module aims to prepare PhD students for research and development in system security by investigating security issues in various computer science areas such as computer architecture, cloud, networks, machine learning, etc. It addresses security concepts and design principles from an adversarial perspective. Selected topics in system security are covered, such as web security, language-based analysis, privacy-preserving cloud computation, and design of mobile OS. Emerging topics of current research interests may be included as well.
', 4);
INSERT INTO module VALUES('CS6234', 'Advanced Algorithms', 'This module is aimed at graduate students who are doing or intend to do advanced research in algorithms design and analysis in all areas of computer science. The module covers advanced material on combinatorial and graph algorithms with emphasis on efficient algorithms, and explores their use in a variety of application areas. Topics covered include, but are not restricted to, linear programming, graph matching and network flows, approximation algorithms, randomised algorithms, online algorithms, local search algorithms, algorithms for large datasets. The module will be a seminar-based module that will expose students to current research in these areas.
', 4);
INSERT INTO module VALUES('CS6240', 'Multimedia Analysis', 'This module aims to provide a comprehensive and rigorous treatment of the main approaches in multimedia (document, image, video, and graphics) analysis. Three main themes are covered: (i) representation and modelling of multimedia entities using various modeling approaches, (ii) matching of a model with an input entity, and (iii) derivation of a model from sample entities. It focuses on the nonvector- space approach, which complements the vector-space approach to multimedia analysis.
', 4);
INSERT INTO module VALUES('CS6241', 'Advanced Topics in Computer Graphics', 'This course aims to familiarise graduate students with the ongoing research works in interactive 3D graphics. Topics covered may include: interactive technologies, graphics data structures (shape representation), image-based modelling and rendering, creation of artistic artefacts, viewing large models, and interactive modelling.
', 4);
INSERT INTO module VALUES('CS6242', 'Digital Libraries', 'This module is targeted to graduate students of computer science and information systems wishing to understand the issues in building, using and maintaining large volumes of knowledge in digital libraries. Fundamentals of modern information retrieval is assumed. The course will focus on how such information retrieval technology operationalises traditional information finding skills of the librarian/cataloger/ archivist, organised around 5S framework for digital library education. Areas within digital libraries that will be covered include collection development, knowledge organisation, DL architecture, user behavior, services, preservation, management and evaluation and DL education and research. Students will round out their knowledge with case studies of how different disciplines (e.g. music, arts, medicine and law) impose different search, usability and maintenance requirements on the digital library.
', 4);
INSERT INTO module VALUES('CS6243', 'Computational Photography', 'This course covers the exciting new area of Computational photography, which refers to a broad group of imaging and processing techniques that enhances or extends the capabilities of digital photography to produce new photographs that could not have been taken by a traditional camera. Computational photography promises to change the way we think about photography.
', 4);
INSERT INTO module VALUES('CS6244', 'Robot Motion Planning & Control', 'An array of new robots with amazing capabilities appeared in the last decade, e.g., self-driving cars, humanoids, and robot vacuum cleaners. They will gradually, but surely, transform our ways of life in the near future. This course presents the key algorithmic ideas and implementation techniques that enable autonomous robot planning and control. It covers the geometric, probabilistic, and dynamic models and the associated methods commonly used in robotics. Application to related fields, such as computer animation and computation biology, will also be discussed.
', 4);
INSERT INTO module VALUES('CS6270', 'Virtual Machines', 'Virtual machines (VMs) are increasingly being seen as a convenient vehicle for managing heterogeneous resources (e.g. server consolidation) and for solving problems related to mobile code and security. Commercial VMs from VMware and language-level VMs such as the Java Virtual Machine and Microsoft's .NET framework have become highly popular. This module will summarise the state-of-the-art in virtualisation technology and discuss techniques for designing and implementing modern VMs, hardware-level, operating system-level and language-level VMs, CPU virtualisation concepts, paravirtualisation and binary translation techniques, techniques for memory and input/output virtualisation, and applications of VMs in solving problems related to security and software distribution.
', 4);
INSERT INTO module VALUES('CS6280', 'Topics in Computer Science I: Datacentre Software Dynamics', 'Datacenter computing favors response time over throughput. Controlling slow response times results in more efficient server use, which is worth literally millions of dollars within the datacenter industry. This module focuses on understanding and controlling the sources of latency in a datacentre, especially the long-tail delays that ruin a user experience. The module offers a hands on component where students will perform measurement studies on the latency of various software and hardware subsystems, and investigate the unexpected ways that these layers interact.', 4);
INSERT INTO module VALUES('CS6281', 'Topics in Computer Science II', 'Topics will be of an advanced computer science nature and will be selected by the Department.
', 4);
INSERT INTO module VALUES('CS6282', 'Topics in Computer Science III', 'Topics will be of an advanced computer science nature and will be selected by the Department. Refer to the course website or details.
', 4);
INSERT INTO module VALUES('CS6283', 'Topics in Computer Science IV', 'Topics will be of an advanced computer science nature and will be selected by the Department. Refer to the course website for details.
', 4);
INSERT INTO module VALUES('CS6284', 'Topics in Computer Science V', 'Topics will be of an advanced computer science nature and will be selected by the Department. Refer to the course website for details.
', 4);
INSERT INTO module VALUES('CS6285', 'Topics in Computer Science VI', 'Topics will be of an advanced computer science nature and will be selected by the Department. Refer to the course website for details.
', 4);
INSERT INTO module VALUES('CS6880', 'Advanced Topics in Software Engineering', 'This module discusses contemporary concepts in software engineering, ranging from domain analysis, requirement analysis and software architectures; formal methods, analysis, design and implementation. It aims to provide students with advanced technical and managerial knowledge in evaluating, designing, and implementing big-scale software. These include: Specialised methods for specific application domains (such as embedded systems or Web systems), in-depth study of software engineering sub-disciplines (such as testing or maintenance), as well as the issues of programming language support for software engineering. The module also provides students the opportunity to understand the methodology involved in software-engineering research.
', 4);
INSERT INTO module VALUES('CSxxxxR', '(e.g. CS3230R)', 'This 1-MC module adds a research component to the host module, enabling students to acquire more in-depth understanding of the research issues pertaining to the subject matter.
', 1);
INSERT INTO module VALUES('FMC1201', 'Freshman Seminar: Is Computer Science Science?', 'The objective of this seminar is for the freshmen to gain a fundamental understanding of Computer Science and a broader perspective of how it relates to other sciences. The major topics include the similarity and differences between Computer Science and the traditional sciences (Physics, Biology, Mathematics, etc.), the objective and methodology in Science and the scientific aspects of computation (hardware, software, systems, etc.). This module will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/ CU).
', 4);
INSERT INTO module VALUES('FMC1202', 'Freshman Seminar: The Wonderfully Weird World of Software', 'In this course, students will examine a number of interesting real-world software phenomena drawn from diverse domains such as viruses, embedded applications, search engines, web applications, mobile applications, operating systems, virtual reality applications and security applications. The mode of delivery is instructor-led discussions flanked with preparatory and follow-up assignments. The discussion offers an outside-in look at the respective software, leading to an increased awareness and interest in the related computer science subject areas. Small group teaching with emphasis on inquiry, discovery and exchange of ideas will be used. This module will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU).
', 4);
INSERT INTO module VALUES('FMC1203', 'Freshman Seminar: Computational Thinking', 'The reach and applicability of computing is vast and essentially all of human endeavours. To deal with the complexity, computer scientists have developed thinking methods that are suited for scaling to large and difficult problems. In this course, students will be exposed to computational thinking methods such as the use of abstraction, compositionality, divide and conquer, caching, reduction, invariants, randomness, and parallelism. Students will do case studies to compare and contrast computational thinking with thinking methods used to organise non-computing domains. Small group teaching with emphasis on discovery and insights as well as communication skills will be used. This module will be assessed on a grade basis.
', 4);
INSERT INTO module VALUES('FMC1204', 'Freshman Seminar: Innovating Radically with IT', 'This module provides freshmen with insights into how IT has radically transformed industries in the past few decades. A few key industries that are strategic to Singapore (as documented in the iN2015 national IT strategic plan) will be covered. Freshmen will develop insights through readings, field research, and interviews with IT pioneers in these industries. They will share their insights with the class through seminars. Freshmen will then undertake a forward looking project to interpret how emerging forms of IT may be exploited to radically transform these key industries in the future. This module will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU)
', 4);
INSERT INTO module VALUES('FMC1205', 'Freshman Seminar: Practical Information Security', 'In order to appreciate the science of information security, one needs to understand how computer systems can be compromised by insecured design and implementation. In this course, students will be exposed to common security vulnerabilities of modern computing systems, the standard tools that can be deployed to guard against such vulnerabilities, and the best practices to design systems that can minimise not only known security issues, but also future risk arising from currently unknown security attacks. Students will do case studies to investigate how they could potentially compromise some standard computing systems, and propose solutions to mitigate against the risks.
', 4);
INSERT INTO module VALUES('FMC1206', 'Freshman Seminar: Computing for a Better World', 'Poverty, energy, disease, and environment are a few of the grand challenges that humanity faces today. Computing, being a field that underlies modern sciences, plays an important role in addressing these challenges. This module aims to expose students to how computing is used to tackle these and other grand challenges faced by humanity. Topics depend on the latest scientific development. Example topics include the use of computing to facilitate efficient farming, monitor the environments, simulate climate change, sequence genome, detect pandemic outbreak, and search for a cure for diseases. This module will be graded as Completed Satisfactory/Completed Unsatisfactory (CS/CU).
', 4);
INSERT INTO module VALUES('GEM1501', 'Problem Solving for Computing', 'The aim of the module is to teach non-specialists the problem solving methods commonly used in the algorithms, artificial intelligence and systems areas of computer science. Students who have completed the course should be able to recognize when it is appropriate to apply these method and should be able to solve simple instances of the problems. Topics to be covered include divide and conquer, dynamic programming, search problems, and coping with complexity. Students considering this course should have some aptitude with handling abstract concepts.', 4);
INSERT INTO module VALUES('GET1031', 'Computational Thinking', 'Computational thinking is increasingly being recognised as a fundamental problem solving method for everyone. Computational thinking involves problem formulation, solution development, and solution analysis, with a focus on computation and computational tools. This module emphasises the computational thinking thought process and the communication of the process and the solutions, rather than implementation of the solution on a computer. Students learn to apply omputational thinking to solve problems and discover new questions that can be explored within and across disciplines. Students are assumed to already possess elementary critical thinking and logical thinking aptitudes, which are practised in this module.', 4);
INSERT INTO module VALUES('IT1001', 'Introduction to Computing', 'This module aims to provide basic IT understanding for students who have no or little knowledge of computing. It is structured to be the course for students who either plans to take only one course in computing in her entire undergraduate studies or wants to equip herself to do further more specialised computing studies. The module tries to be broad by touching on most aspects of computing. However, there will also be some technical depth in standard introductory computing topics. The lectures will be intensely complemented by Web exploring activities.
', 4);
INSERT INTO module VALUES('IT1002', 'Introduction to Programming', 'The aim of this module is to introduce students to programming and abstraction methods as espoused in a modern programming language such as Java. This introductory course on Java introduces object abstraction and object-oriented implementation. The concept of objects and object communication will be reinforced via the rich API library for input/output functionality and graphical user-interface components. Abstraction techniques allow non-trivial programmes to be implemented incrementally and with control on complexity. Laboratory sessions will equip students with hands-on experience in Web pages and Java applets. Projects and assignments will expose students to programming and the use of Java constructs.
', 4);
INSERT INTO module VALUES('IT1003', 'Information Systems Applications', 'This module leads non-computing students to appreciate the impact of Information System (IS) applications in various industries. It examines the current status, penetration rate, and likely future trends of IS in these industries. It highlights the challenges and potentials of implementing IS in these industries. Areas that can be covered include manufacturing, finance (banking and investment), logistics and transportation, tourism and hospitality, food and beverage, entertainment and the arts, healthcare and medicine, legal, communications, education, defence, as well as e-government. Leading IS practitioners from these industries will be invited to share their experience and insights in this module.
', 4);
INSERT INTO module VALUES('IT1004', 'Introduction to Electronic Commerce', 'The Internet is a medium that no business can afford to ignore. The objective of this introductory module is to give non-computing students exposure to electronic commerce, and how it is being applied. Students will learn the basic concepts including electronic commerce infrastructure, security, privacy, threats, social and ethical issues in electronic commerce, electronic commerce payment systems, marketing on the Internet, components of B2C and B2B business models, and various actions in electronic commerce, such as retailers, auctions, portal, E-government.
', 4);
INSERT INTO module VALUES('IT1005', 'Introduction to Programming with Matlab', 'With the widespread use of computers and computational tools in industrial practice and research, it is important for students in the chemical engineering programme to gain a firm understanding and appreciation of the fundamentals of programming, algorithmic problem-solving, coding and debugging. The final goal is to be able to apply these skills to solving realistic chemical engineering problems. MATLAB, a high-level computing language will be employed due to its capability to solve domain-specific computing problems more conveniently than with traditional programming languages. MATLAB also provides the platform to span a wide variety of application areas.
', 4);
INSERT INTO module VALUES('IT1006', 'MATLAB Programming for Mathematics', 'Computers are ubiquitous in most industries, making it important for students in mathematics to gain a firm understanding of the fundamentals of algorithmic problem solving, coding and debugging, and to be able to apply these skills to solving realistic mathematics problems. MATLAB will be employed due to its capability to solve domain-specific computing problems more conveniently than with traditional programming languages, spanning a wide variety of application areas. As this is a light programming course, students taking this course will need to take CS1010 if they intend to take other programming courses offered by the School of Computing.', 4);
INSERT INTO module VALUES('IT1801', 'Programming for Business', 'This module discusses the basic concepts of information technology and the implications of these concepts to users and business management. Students will also use the spreadsheet software as a tool to develop business solutions and use Visual Basic for Applications to enhance their spreadsheet applications.
', 4);
INSERT INTO module VALUES('IT2001', 'Network Technology and Applications', 'The objective of the module is to provide technological background in telecommu-nications, data communication and Internet technology to non-computer science students. It covers the basic concepts in communication and networking, and looks at Internet and telecommunications in detail. It also deals with some common applications in all these areas and looks at the possible convergence of various communication technologies. The impact on social and business areas as a result of the wide spread use of the fast changing communication technologies are also addressed.
', 4);
INSERT INTO module VALUES('IT2002', 'Database Technology and Management', 'The aim of this module is to provide students with practical knowledge and understanding of basic issues and techniques in data management, with sufficient theory to understand the reasons for these techniques. Topics include conceptual (entity relationship model) and logical design (relational model) of database models, relational database management (data definition, data manipulation, SQL, visual interactive query interfaces), and their use in application development (in particular, data extraction from DBMS to spreadsheets application and data extraction to Web applications). Projects in developing a database within an application form an essential component of this module.
', 4);
INSERT INTO module VALUES('XFC4101', 'Integrated Honours Thesis', 'The objective of this module is to enable students to work on an individual integrated research project spanning over two semesters, with approximately 400 hours of workload. Students learn how to apply skills acquired in the classroom and also think of innovative ways of solving problems, and learn to work in a research environment. The project demonstrates a student's work ethic, initiative, determination, and ability to think independently. On completion of the project, the student has to submit a dissertation describing the project work, and give an oral presentation before a panel of examiners.
', 12);