Searching is amongst the fundamental problems in computer science and engineering with many practical applications that we all use in our daily lives. Many algorithms on various instances appeared including, but not limited to On–line (scanning) versus off-line (indexing), exact vs. approximate, single–pattern vs. multiple–patterns, sequential versus parallel string matching. New dimensions, applications, problems and opportunities emerge due to advances in technology, e.g., social media, computational biology, multi–cores, GPUs, and etc…

New search algorithms and applications

We mainly focus on natural language searching, biological sequence scanning, financial data analysis, and intrusion/anti–virus/malware detection to solve some bottlenecks and/or improve the performance in space/time.

Algorithm Engineering

Design and implementation of the existing or new algorithms according to recent architectural advances of the processors. We particularly focus on SIMD (single instruction multiple data) parallelism that is available in most commodity processors with an increasing support such as the Intel’s SSE and AVX technologies.

Packed string matching

We have developed new algorithms, that have been reported as the best performing solutions, by benefiting from SIMD (Single-Instruction-Multiple-Data parellelism) technologies such as Intel’s SSE, AVX, AVX2.  We look forward to integrate SIMD technologies into various algorithmic challenges to improve current state-of-art in practice.