Courses
Bioinformatics Courses
BIF205 Biostatistics
[3–0, 3 cr.]
This course introduces the statistical design and analysis techniques needed to perform pharmaceutical research, and evaluate clinical data. It includes designing epidemiologic and clinical studies, evaluating diagnostic testing procedures, interpreting the use of statistical data in Medical Literature, and using frequently used statistical methods of data analysis. Emphasis is placed on the statistical concepts, and their application to the critical appraisal of clinical and experimental data.
BIF243 Introduction to Object-Oriented Programming
[3–0, 3 cr.]
This course introduces the fundamental concepts, and techniques, of programming and problem solving, from an object-oriented perspective. Topics include the introduction to computer systems (hardware, software, compilation, execution), fundamental programming constructs, (variables, primitive data types, expressions, assignment), program readability, simple I/O, conditional constructs, iterative control structures, structured decomposition, method call and parameter passing, basic program design using algorithms, algorithm stepwise refinement, pseudo-code, introduction to the object-oriented paradigm (abstraction, objects, classes, entity and application classes, class libraries, methods, encapsulation, class interaction, aggregation), inheritance, error types, simple testing and debugging, 1-D and 2-D arrays, basic searching, and sorting algorithms.
BIF244 Introduction to Script Programming
[3–0, 3 cr.]
This course introduces students to programming using scripting languages such as PERL or PYTHON with an emphasis on string and text processing. Topics include: basic operators, arrays and list variables, hashing, pattern and motif matching, as well as functions and subroutines. The course also covers querying online resources and parsing DNA and peptide sequences, genes and proteins annotations, PDF files and alignment reports.
BIF245 Objects and Data Abstraction
[3–0, 3 cr.]
This course presents further techniques of object oriented programming and problem solving, with emphasis on abstraction and data structures. Topics include: object oriented concepts, such as, composition, inheritance, polymorphism, information hiding, and interfaces; basic program design and correctness, such as, abstract data types, preconditions and post conditions, assertions and loop invariants, testing, basic exception handling, and the application of algorithm design techniques. The course also covers: basic algorithmic analysis, time and space tradeoffs in algorithms, big-O notation; fundamental data structures and applications, such as, collections, single- and double-linked structures, stacks, queues, and trees; performance issues for data structures; recursion, more sorting algorithms.
Prerequisite: BIF243 Introduction to Object Oriented Programming
BIF310 Algorithms and Data Structures
[3–0, 3 cr.]
This course presents fundamental computing algorithms and data structures, with emphasis on design and analysis. Topics include the asymptotic analysis of upper and average complexity bounds, the best, the average, and the worst, case behaviors. Recurrence relations, sets, hashing and hash tables, trees and binary trees (properties, tree traversal algorithms), heaps, priority queues, and graphs (representation, depth- and breadth-first traversals and applications, shortest-path algorithms, transitive closure, network flows, topological sort) are also covered. The course also covers the sorting algorithms and performance analysis which include mergesort, quicksort and heapsort as well as details fundamental algorithmic strategies (divide-and-conquer approach, greedy, dynamic programming, and backtracking). An introduction to NP-completeness theory is provided.
Prerequisites: BIF245 Objects and Data Abstraction and MTH207 Discrete Structures I
BIF345 Mathematical Modeling
[3–0, 3 cr.]
This course covers different tools used for the modeling of biological systems and cellular behavior. Such models include cardiovascular diseases, population and cell growth, neuronal models, etc. Mathematical tools used in this modeling process are Ordinary Differential Equations and simple Partial Differential Equations. The course also covers interpolation and smoothing tools as well as linear equations and matrix inversion. It also covers the algorithmic aspect of the numerical solving methods.
Prerequisite: MTH201: Calculus III.
BIF375 Database Management Systems
[3–0, 3 cr.]
This course is an introduction to the fundamental concepts and techniques of database systems. Topics include database architecture, data independence, data modeling, physical and relational database design, functional dependency, normal forms, query languages, query optimization, database security, and transactions at the SQL level.
Prerequisite: BIF245 Objects and Data Abstraction and MTH 201 Calculus III
BIF415 Introduction to Bioinformatics
[3–0, 3 cr.]
This course provides an introduction to modern computational practices in bioinformatics. Topics include computational methods for: fragment assembly; sequence alignment; modeling evolution; gene finding; gene expression; protein structure and function.
Prerequisite: BIF310 Data Structures & Algorithms
BIF425 Functional Genomics
[3–0, 3 cr.]
This is a combined course with the biology department. One part of the course will be related to the functional properties of genes while the second part will be related to how we can annotate genes and extract their functional properties from online resources. This course will also include the analysis of gene expression data (microarray, single cell, etc.).
Prerequisite: BIO202.
BIF435 Structural Bioinformatics
[3–0, 3 cr.]
This is a combined course with the biology department. The theoretical part focuses on the different protein structures and their properties while the computational part focuses on computational methods for predicting, visualizing and assessing protein structures.
Prerequisite: BIO202 and BIF310.
BIF445 Population Genetics
[3–0, 3 cr.]
This course is divided into two parts. The first part covers the four main evolutionary processes: mutation, natural selection, gene flow and genetic drift from a relatively non-mathematical perspective. The second part introduces students to important quantitative topics that will help them better understand the qualitative effects of the evolutionary processes. These topics include: genetic correlation, genetic epidemiology, haplotype reconstruction, association and linkage analysis and heritability.
Prerequisite: BIO321.
BIF498 Topics in Bioinformatics
[3–0, 3 cr.]
This course covers selected topics in Bioinformatics. This course may be repeated for credits.
BIF513 Computational Biology
[3–0, 3 cr.]
This course covers the use of computer science tools to solve the problems related to biochemistry, and/or medicine. Topics include fundamental algorithmic methods in computational molecular biology, and bioinformatics, such as protein sequence analysis, pair- wise and multiple alignment, probabilistic models, phylogenetic analysis, folding and structure prediction, biological structures (protein structures, RNA structures, etc…), and information that could be derived from them. The course is research-based. Students are required to read papers and articles, compare different techniques used to solve problems, and suggest alternatives.
Prerequisite: Senior Standing.
BIF514 Heuristic Optimization
[3–0, 3 cr.]
This course covers basic heuristic optimization techniques in computing. This course describes a variety of heuristic search methods including serial simulated annealing, Tabu search, genetic algorithms, ant algorithms, de-randomized evolution strategy, and random walk. Algorithms will be described in serial as well as in parallel fashion. Students can select application projects from a range of application areas. The advantages and disadvantages of heuristic search methods, for both serial and parallel computation, are discussed in comparison to other optimization algorithms.
Prerequisite: Senior Standing.
BIF515 Machine Learning
[3–0, 3 cr.]
This course provides an overview of popular algorithms in machine learning. Topics include supervised learning, linear and polynomial regression, classification algorithms, gradient descent, unsupervised learning, instance-based learning, neural networks, and genetic algorithms and boosting. The course requires some knowledge of artificial intelligence, and good programming skills. The theoretical aspects of the algorithms will be studied, and assignments will be given to test their applicability.
Prerequisite: Senior Standing.
BIF524 Data Mining
[3–0, 3 cr.]
This course covers the fundamental techniques and applications for mining high-throughput data. Topics include related concepts from machine learning, information retrieval and statistics, techniques and algorithms for classification, clustering, and association rules.
Prerequisite: Senior Standing