Saturday, May 26, 2012

Selecting a research topic in Computer Science

To select a suitable topic for research is always an important and difficult task. For new researchers, I always suggest to plan for long terms, i.e., as you get the first opportunity to conduct research try to select topic that:
  • You find most interesting
  • You can work on with your existing technical skills or you think for which you can acquire required technical skills
  • Has importance in scientific community
The best approach I recommend is to start from major areas and then move towards specifics. For computer science guys following major research areas with in computer science could be a good starting point:

Major Areas (Not an exhaustive list):
  • Networking and communication
  • Computer graphics/Comuter vision/image processing/signal processing
  • Scientific/high performance computing
  • Artificial intelligence/Machine learning/Pattern recongnition/Neural networks/Robotics/Natural language processing
  • Security and privacy
  • Software engineering/Programming languages
  • Internet technoloiges/Semantic web
  • Database systems/Information systems/Data Mining/Information retrieval
  • Parallel and distributed systems
  • Embedded systems/Real-time systems
  • Operating systems/Simulations
  • Bioinformatics
Once you have select the major area of your interest, then move forward towards the specific research areas. For example, in my case of database, data mining, and software engineering following list could be helpful:

Specific Research Areas (Only list my interest, Not exhaustive):

Databases    Hardware-conscious data management
        Hardware
            Chip multiprocessors
        Research Issues
            Scalability
            Parallelisation
            Utilization
    Revisiting DBMS architecture
        Research Issues
            Architecture to support new hardware
            Architecture to support new applications/workloads
    Query processing
   
    Performance Evaluation and Benchmarking
   
    Real-Time Business Intelligence

    New data management applications       
        Semantic web/Enterprise ontological database
            Research Issues
                Storage models/Access structures
                Ontologies mapping
                Ontologies integration
                Large scale RDF data managment
                Semantic indexing and search in large volumes of data
                Web 2.0 and Social Systems
               
        Next generation data management/integration for life-sciences
            Research Issues
                Integrating large diverse biological datasets
        Graph data management/Linked data
            Application domains
                Data modeling of chemical compounds, multimedia databases, protien networks, social networks, and semantic web
            Research Issues
               
            Venues
                GDM (ICDE)

    Big/Large data
   
    Web Data

    Data management in Cloud
        Research Issues
            Transaction processing
            Query processing and indexing in cloud computing systems
            Novel data-intensive computing applications
            Language for massively parallel query execution
            Data intensive scalable computing
            Content distribution systems for big data
            Data management within and across data centers
            Analytics for social networks
            Benchmarking Cloud Intelligence applications
            Cloud data warehouse design and architectures
            Cloud infrastructure for analytics applications
            Data mining over the cloud
            OLAP over the cloud
            Reliability and fault tolerance in Cloud Intelligence
            Scalability and parallelization for Cloud Intelligence: MapReduce and beyond
            Semantic Web intelligence


    Distributed data managmenet
        Research Issues

    Self-* DBMS
        Research Issues

    Benchmarking
        Research Issues
            NoSQL databases (Key/value pairs, Document stores, Graph databases)

Software Engineering    Software for Cloud
    Mining software repositories
    Recommendation Systems for Software Engineering
    Software dependability
    Human-computer interaction
    Knowledge acquisition and management
    Ontologies and methodologies
    Product line architectures
    Specification languages
    Program synthesis
    Multicore Software Engineering
    Software Engineering for Adaptive and Self-Managing Systems
    Generative Software Development
    Parallelism and Concurrency
    Software Engineering for High Performance Computing Applications
    Semantic Web Technologies in Software Engineering

Knowledge Management/Data Mining    Data pre- and post-Processing
    Information Filtering and Recommender Systems
    Semantic Techniques
    Opinion mining and sentiment analysis
    Mining social networks and graph data
    Mining text, Web, semantic web and semi-structured data
    High performance and parallel/distributed data mining
    Crime detection

How did I identified these specific research problems? Answer is through reliable research journals, conference, and workshops. For more specific research problems related to software engineering, databases, and data mining, please have a looks at following resources:

For data management and data mining:
Journals: VLDB Journal, Data & Knowledge Engineering, Acta Informatica

Conferences: Very Large DataBases (VLDB), ACM's Special Interest Group on Management Of Data  (SIGMOD), the Symposium on Principles of Database Systems  (PODS), Extending Database Technology  (EDBT), International Conference on Data Engineering  (ICDE), Conference on Information and Knowledge Management  (CIKM), Database Systems for Advanced Applications  (DASFAA), Advances in Databases and Information Systems (ADBIS), Database Systems for Business, Technology, and Web  (BTW), BNCOD, DB&IS, IDEAS, CoopIS

For software engineering:
Journals:
Automated Software Engineering, Science of Computer Programming, The Computer Journal, Journal of Systems and Software, IEEE Transactions on Software Engineering, The Transactions on Software Engineering and Methodology

Conferences: International Conference on Software Engineering, Generative Programming and Component Engineering, International Conference on Software Reuse, Evaluation and Assessment in Software Engineering, International Conference on Program Comprehension, Software Product Line Conference, International Symposium on the Foundations of Software Engineering, (Systems, Programming, Languages and Applications: Software for Humanity) SPLASH, International Symposium on Software Reliability Engineering, International Conference on Software Maintenance, Automated Software Engineering, Working Conference on Reverse Engineering, Fundamental Approaches to Software Engineering, Aspect-Oriented Software Development, European Conference on Object-Oriented Programming

Before closing the blog, I will also like to give a classification regarding research. The most prominent classification in research for new researchers is theoretical and applied research. If you want to conduct theoretical research then you can be a good researcher even if you do not have expertise in any programming language or any database product. But concepts are important, for theoretical research one should have strong mathematical background with extensive knowledge of Discrete Mathematics, Probability & Statistics, and Algorithms. Research contributions are theoretical and you don't need any implementation to prove your results. Theoretical proof of results is always required. The other class is applied research or empirical research. If you want to do applied research, then a basic knowledge of discrete mathematics and algorithms is still mandatory, but you should possess sound knowledge of existing languages and systems. In applied research, we have to present implementation results to prove that our proposals are worthy. To generate results, we may have to use either programming language (C/C++/Java) or a DBMS product. While deciding for the topic, it is critical that researcher is clear in his/her mind regarding the class of research he/she want to focus/target.