Relevant Courses
The goals of CS2220 (Introduction to Computational Biology) are: (1) development of flexible and logical problem solving skills; (2) understanding of main bioinformatics problems; and (3) appreciation of main techniques and approaches to bioinformatics. To achieve the goals above, we expose the students to a series of case studies spanning gene feature recognition, gene expression and proteomic analysis, gene finding, sequence homology interpretation, phylogeny analysis, physical mapping, and genome sequencing
After the complete sequencing of a number of genomes, we are in the stage to understand the information encoded in the genome and its relationship with RNA and protein. This aim of this module is to cover the algorithms related to this stage. In the module, we will cover the algorithms related to genome annotation, motif identification, proteomics, population genetics, microarray, etc.
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 analyze them. This course is introduced to provide students with knowledge of techniques that can be used to analyze 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.
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 advance algorithms. Through the course, students are able to understand these algorithms in detail. They are also given a chance to solve some research problems in this field, including sequence comparison, indexing of biological database, sequencing by hybridization, and more.
This course introduces the basic computational representations and algorithms for molecular biology. It also introduces and uses biological data sources available on the World Wide Web. The topics include algorithms for processing biological sequences and structures, as well as microarray data, e.g., dynamic programming algorithms for sequence alignment, algorithms for structural superposition, microarray data analysis.
This course will provide an introduction to computational approaches to systems biology. A systemic approach to biology is not new but it has recently gained significant momentum due to emerging experimental and computational methods. There is emerging consensus that it is both feasible and necessary to formulate computer models of biochemical and signaling networks. This will enable researchers to make testable quantitative predictions and validate such predictions. However, formidable barriers remain to be surmounted before this vision of systems biology can be realized. Our goal will be to display -a part of- the current state of the field from a computer science perspective. We shall focus on the dynamical aspects of biochemical and signaling networks and the means for modeling, simulating and analyzing such networks. We shall present core material in the form of lectures as well as snippets of ongoing research through invited presentations.
CS1102 aims to give a systematic introduction to data structures and algorithms for constructing efficient computer programs. Emphasis is on data abstraction issues (through Abstract Data Types) in the program development process,and on efficient implementations of chosen data structures and algorithms. Commonly used data structures covered include stacks, queues, trees (including binary search trees, heaps and AVL trees), hashing, tables, and graphs; together with their corresponding algorithms (tree and graph traversals, minimum spanning trees). Simple algorithmic paradigms,such as generate-and-test (search) algorithms, greedy algorithms and divide-and-conquer algorithms will be introduced. Elementary analyses of algorithmic complexities will also be taught. CS1102C covers the same topics, but from an imperative paradigm perspective. CS1102S covers the same topics, but from a functional programming perspective.
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), amortized analysis, NP-completeness, and some selected advanced topics.
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.
The module introduces the basic concepts in artificial intelligence. Topics covered include: intelligent agent, search, game playing, constraint satisfaction, logic, planning, reasoning, and 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 learn knowledge (or regularities) from the raw data. The ultimate objective is to build self-learning systems to relieve human from some of already-too-many 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.
This module addresses the design of relational databases and object oriented databases. Topics covered include: normalisation theory: functional, multi-valued and join dependency, normal forms, relational database schema design using decomposition method and synthesizing method; entity-relationship approach: normal form entity-relationship diagram, its derivation, and its translation to relational, network, and hierarchical database schemas; schema integration: view integration and database integration, schema conflict resolution; nested relations: normal form nested relations, nested relations design using decomposition method and entity-relationship approach; object-oriented databases: basic concepts, inadequacies in object-oriented data models, inheritance conflict resolution, translate relational database schemas and entity-relationship diagrams to object-oriented database schemas.
This course covers the methodology and techniques in systems modeling 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 includes: ways to study a system; modeling and simulation lifecycle; principles of discrete-event modeling and simulation; input data modeling, 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 and engineering.
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.
Data mining is a diverse field which draws its foundation from many research areas like databases, machine learning, AI, statistics, etc. The aim of this course is to highlight concepts from these areas which are fundamental and often used in building data mining tools. At the end of the course, students should: (1) have a good knowledge of the fundamental concepts that provide the foundation of data mining; (2) understand how these concepts are engineered to provide some of the basic data mining tools; and (3) be able to adopt these concepts to develop new data mining tools for new applications.
Decision making technologies can support decision making in the financial, operational,marketing and other areas. Efforts have been directed at finding new machine learning (ML) techniques for decision making and their possible application in solving practical problems. ML techniques such as artificial neural network methods have been proven to be powerful tools for decision making. Applications include credit rating, bankruptcy analysis, foreign exchange rate predictions and many others. The techniques covered in this course include neural networks for classification/regression/clustering, genetic algorithm for optimization, decision tree methods, support vector machine and data mining.
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.
Topics covered may include maximum likelihood parameter estimation, Bayesian parameter estimation, decision theory, non-parametric methods, regression, linear classifiers, model selection, feature selection, neural networks, kernel classifiers, nearest neighbor, EM, trees, boosting and bagging, graphical models, reinforcement learning, applications in computational biology, and applications in natural language processing.
This module will go in-depth into information collection and analysis required for quantitative IS research. It will cover sampling, regression, instrument validation in social research, model building, analysis of variance, factor analysis, structural equation modeling, and other methods. The course will be practice-oriented, whereby students are expected to design and execute quantitative studies using the data that they have collected. They will be required to summarize their analysis and finding in a report.