<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Code and Comments Categorization in terms of Program Comprehension</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Abhinav Daggubelli</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Indian Institute of Technology</institution>
          ,
          <addr-line>Goa, 403401</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>In software development, the efectiveness of code comments can difer significantly, highlighting the need for methods that can accurately assess their genuine value. This study aims to improve the classification of code comment usefulness by implementing a hybrid approach that integrates manually tagged datasets with synthetic data augmentation. For the augmentation process, we utilized GPT-3.5-turbo, a leading language model, to generate additional labeled examples of comments. We established a baseline classification model using random forests. Notably, even with the addition of synthetic data, the model's performance remained stable, achieving an F1 score of around 0.79 both prior to and following the integration of synthetic data. This research provides valuable insights into both the advantages and limitations of using synthetic data augmentation in the classification of code comment usefulness.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Random Forest</kwd>
        <kwd>Data Augmentation</kwd>
        <kwd>Comment Classification</kwd>
        <kwd>Qualitative Analysis</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Developers frequently face the challenge of fixing bugs, creating new source code, or upgrading
existing applications under tight deadlines. This pressure can result in subpar coding practices. As
software evolves, accompanying documentation—such as requirements specifications and high-level
designs—can become outdated and insuficient, often complicating knowledge transfer when assistance
from previous developers is unavailable. Such circumstances highlight the need for a systematic,
quality-controlled development process. Automated program comprehension serves as an efective
approach for enhancing the maintenance of existing source code, ensuring better management and
understanding of the codebase.[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Given that the software design of a codebase is constantly evolving, the most reliable sources of truth
are the traces from test executions, static program analyses, and, significantly, code comments. This
paper centers on code comments as valuable insights into program design, beneficial for both developers
and automated program comprehension systems. Code comments provide essential understanding of
the logic, decisions, and intentions behind the code, facilitating better comprehension, maintenance,
and debugging. However, not all comments carry the same level of informative value, underscoring the
need for automated methods to efectively classify their usefulness.</p>
      <p>A persistent challenge in studies of code comment usefulness is the limited availability of extensive,
well-annotated datasets that capture the diverse nature of comments across diferent programming
contexts. This situation calls for innovative strategies to enhance existing data for better model
generalization when dealing with unseen, real-world comments. Addressing this gap, we propose a
hybrid approach that combines manual annotations with synthetic data augmentation. We utilize
GPT3.5-turbo, a cutting-edge language model, to label code comment samples extracted from open-source
codebases.</p>
      <p>In this paper, we introduce a binary classification task aimed at evaluating source code comments
within C programs, categorizing each comment as either Useful or Not Useful. We begin with a training
dataset consisting of over 11,000 manually annotated samples. Using Random Forests, we establish a
baseline for comment classification and subsequently augment this dataset with over 200 GPT-generated
labels to assess any performance enhancements. Interestingly, we found that the model’s performance
remained stable, with an F1 score of 0.79 for both the baseline and the model trained on the augmented
dataset.</p>
      <p>By investigating the nuanced relationship between manual annotations and synthetic data
augmentation, this study seeks to contribute a fresh perspective to the existing knowledge on code comment
usefulness classification. It aims to provide an innovative solution to the ongoing challenges in the field,
encouraging further exploration and development of robust, scalable models that can adapt efectively
to the ever-changing landscape of software development.</p>
      <p>The rest of the paper is organized as follows. Section 2 discusses the background work done in
the domain of comment classification. The task and dataset are described in 3. Our methodology is
discussed in section 4. Results are addressed in section 5. Section 6 concludes the paper.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Software metadata is integral to code maintenance and subsequent comprehension. A significant
number of tools [
        <xref ref-type="bibr" rid="ref2 ref3 ref4 ref5 ref6 ref7">2, 3, 4, 5, 6, 7</xref>
        ] have been proposed to aid in extracting knowledge from software
metadata [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] like runtime traces or structural attributes of codes.
      </p>
      <p>
        In terms of mining code comments and assessing the quality, authors [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13 ref9">9, 10, 11, 12, 13, 14</xref>
        ] compare
the similarity of words in code-comment pairs using the Levenshtein distance and length of comments
to filter out trivial and non-informative comments. Rahman et al. [ 15] detect useful and non-useful code
review comments (logged-in review portals) based on attributes identified from a survey conducted with
developers of Microsoft [16]. Majumdar et al. [17, 18] proposed a framework to evaluate comments based
on concepts that are relevant for code comprehension. They developed textual and code correlation
features using a knowledge graph for semantic interpretation of information contained in comments.
These approaches use semantic and structural features to design features to set up a prediction problem
for useful and not useful comments that can be subsequently integrated into the process of decluttering
codebases.
      </p>
      <p>With the emergence of large language models [19], it has become essential to evaluate how the
quality of code comments assessed by standard models like GPT-3.5 or LLaMA compares with human
interpretations. The IRSE track at FIRE 2023 [20] builds on the methodology introduced in [17],
investigating various vector space models [21] and features for the binary classification and evaluation
of comments, specifically in the context of their utility in code comprehension. This track also examines
the performance of the prediction model when incorporating GPT-generated labels to assess the quality
of code and comment snippets sourced from open-source software.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Task and Dataset Description</title>
      <p>In this section, we outline the task addressed in this paper, which involves implementing a binary
classification system designed to categorize source code comments as either useful or not useful. The
process begins with inputting a code comment along with its associated lines of code. The output will be
a label, indicating whether the comment is deemed useful or not useful, thereby assisting developers in
understanding the related code more efectively. To develop this classification system, classical machine
learning algorithms, such as random forests, will be employed. The two categories of source code
comments are defined as follows:
• Useful - The given comment is relevant to the corresponding source code.</p>
      <p>• Not Useful - The given comment is not relevant to the corresponding source code.</p>
      <p>Our study utilizes a dataset comprising over 11,000 code-comment pairs written in the C programming
language. Each data instance includes the comment text, a corresponding code snippet, and a label
#
1
2</p>
      <p>/*cr to cr,nul*/
3
/*convert minor status code
(underlying routine error) to text*/
indicating whether the comment is useful or not. This comprehensive dataset was sourced from GitHub
and annotated by a team of 14 annotators. A sample of the data is presented in Table 1.</p>
      <p>In addition to the primary dataset, we have created another similar dataset for this study. This
new dataset consists of code-comment pairs sourced from GitHub, with labels indicating whether the
comments are useful or not assigned by GPT. It shares a comparable structure to the original dataset
and is utilized to augment the original data in subsequent analyses.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Working Principle</title>
      <p>We employ random forests to implement the binary classification functionality, where the system takes
both comments and their surrounding code snippets as input. To facilitate this, we generate embeddings
for each code snippet and its corresponding comment using a pre-trained Universal Sentence Encoder.
The resulting embeddings are then used to train the machine learning model. The training dataset
comprises 80% of the data instances along with their labels, while the remaining 20% is reserved for
testing in both experiments. A detailed description of the model is provided in the following section.
4.1. Random Forest
In our study, we utilize Random Forest (RF) for binary comment classification, taking advantage of
an ensemble of decision trees to enhance the model’s predictive accuracy while mitigating the risk of
overfitting. The fundamental principle of Random Forest involves generating multiple decision trees
during the training process. During the prediction phase, the model outputs the class that corresponds
to the majority vote among the classes predicted by the individual trees.</p>
      <p>Each tree in the Random Forest is constructed as follows:
1. A subset of the training data is selected with replacement (bootstrap sample).
2. A subset of features is randomly chosen at each node.
3. The best split based on a criterion (such as Gini impurity or entropy) is chosen to partition the
data.
4. Steps 2 and 3 are repeated at each node until the tree is fully grown.</p>
      <p>The classification decision is obtained by aggregating the predictions made by all trees in the forest
through majority voting:
 () = majority ({()}=1)
(1)
where () denotes the prediction of the -th tree for the input vector , and  is the number of trees
in the forest. A threshold of 0.5 is typically employed for binary classification; however, this threshold
can be adjusted to prioritize the **useful** comment class, mirroring the threshold modification approach
used in Random Forests.</p>
      <p>Random Forest inherently manages multi-dimensional feature spaces and does not necessitate feature
scaling. It efectively addresses missing values by selecting splits that minimize impurity among
nonmissing values, thereby imputing the missing values based on the majority class or the mean/mode
value.</p>
      <p>During the training process, the out-of-bag (OOB) error—calculated on the data not included in
bootstrap samples—provides an unbiased estimate of the generalization error, which can be utilized for
hyperparameter tuning.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Results</title>
      <p>We train our Random Forest model on both datasets. The original dataset comprises 11,452 samples,
while the dataset generated by GPT contains 233 samples. In the first experiment, we utilize only the
original data, resulting in the following scores:</p>
      <p>After augmenting the original dataset with the GPT generated data, the following results were seen.</p>
      <p>Accuracy
Original Dataset 81.05630729
Augmented Dataset 81.0012837</p>
      <p>Precision
0.790190835
0.790785274</p>
      <p>Recall
0.801640488
0.801383776</p>
      <p>F1 Score
0.794906015
0.795175139</p>
      <p>The very slight change in the scores across metrics suggests that the newly generated data was
practically indiferentiable from the original dataset, highlighting the validity of using GPT generated
data for data augmentation.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>This paper addresses a binary classification problem in the field of source code comment classification,
focusing on the usefulness of comments within C language source code. We employed Random Forests
as our primary classification method. We conducted two experiments: one utilizing only the original
dataset and the other incorporating both the original dataset and the synthetic GPT-generated data.
The similar results obtained in both experiments indicate that the synthetic data aligns well with the
original dataset, demonstrating how synthetic data generation can efectively enhance the volume of
data required for training models. The accuracy of the synthetic data, in comparison to the original
dataset, is supported by the results presented. Overall, synthetic data generation proves to be a valuable
strategy for data augmentation, with potential applications in various pipelines.</p>
    </sec>
    <sec id="sec-7">
      <title>Declaration on Generative AI</title>
      <p>During the preparation of this work, the author(s) used ChatGPT in order to: Grammar and spelling
check. After using these tool(s)/service(s), the author(s) reviewed and edited the content as needed and
take(s) full responsibility for the publication’s content.
of the irse track at fire 2022: Information retrieval in software engineering, in: Forum for
Information Retrieval Evaluation, ACM, 2022.
[14] J. L. Freitas, D. da Cruz, P. R. Henriques, A comment analysis approach for program comprehension,</p>
      <p>Annual Software Engineering Workshop (SEW), IEEE, 2012, pp. 11–20.
[15] M. M. Rahman, C. K. Roy, R. G. Kula, Predicting usefulness of code review comments using textual
features and developer experience, International Conference on Mining Software Repositories
(MSR), IEEE, 2017, pp. 215–226.
[16] A. Bosu, M. Greiler, C. Bird, Characteristics of useful code reviews: An empirical study at microsoft,</p>
      <p>Working Conference on Mining Software Repositories, IEEE, 2015, pp. 146–156.
[17] S. Majumdar, A. Bansal, P. P. Das, P. D. Clough, K. Datta, S. K. Ghosh, Automated evaluation of
comments to aid software maintenance, Journal of Software: Evolution and Process 34 (2022)
e2463.
[18] S. Majumdar, S. Papdeja, P. P. Das, S. K. Ghosh, Comment-mine—a semantic search approach to
program comprehension from code comments, in: Advanced Computing and Systems for Security,
Springer, 2020, pp. 29–42.
[19] T. Brown, B. Mann, N. Ryder, M. Subbiah, J. D. Kaplan, P. Dhariwal, A. Neelakantan, P. Shyam,
G. Sastry, A. Askell, et al., Language models are few-shot learners, Advances in neural information
processing systems 33 (2020) 1877–1901.
[20] S. Majumdar, S. Paul, D. Paul, A. Bandyopadhyay, B. Dave, S. Chattopadhyay, P. P. Das, P. D.</p>
      <p>Clough, P. Majumder, Generative ai for software metadata: Overview of the information retrieval
in software engineering track at fire 2023, in: Forum for Information Retrieval Evaluation, ACM,
2023.
[21] S. Majumdar, A. Varshney, P. P. Das, P. D. Clough, S. Chattopadhyay, An efective low-dimensional
software code representation using bert and elmo, in: 2022 IEEE 22nd International Conference
on Software Quality, Reliability and Security (QRS), IEEE, 2022, pp. 763–774.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Berón</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. R.</given-names>
            <surname>Henriques</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Varanda</surname>
          </string-name>
          <string-name>
            <surname>Pereira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Uzal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. A.</given-names>
            <surname>Montejano</surname>
          </string-name>
          ,
          <article-title>A language processing tool for program comprehension</article-title>
          , in: XII Congreso
          <string-name>
            <surname>Argentino de Ciencias de la Computación</surname>
          </string-name>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Papdeja</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>S. K.</given-names>
          </string-name>
          <string-name>
            <surname>Ghosh</surname>
          </string-name>
          ,
          <article-title>Smartkt: a search framework to assist program comprehension using smart knowledge transfer</article-title>
          ,
          <source>in: 2019 IEEE 19th International Conference on Software Quality, Reliability and Security (QRS)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>97</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>N.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. R.</given-names>
            <surname>Sahoo</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
          </string-name>
          ,
          <article-title>Debugging multi-threaded applications using pin-augmented gdb (pgdb)</article-title>
          ,
          <source>in: International conference on software engineering research and practice (SERP)</source>
          . Springer,
          <year>2015</year>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>115</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. R.</given-names>
            <surname>Sahoo</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
          </string-name>
          ,
          <article-title>D-cube: tool for dynamic design discovery from multi-threaded applications using pin</article-title>
          ,
          <source>in: 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS)</source>
          , IEEE,
          <year>2016</year>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Chakrabarti</surname>
          </string-name>
          ,
          <article-title>A mathematical framework for design discovery from multi-threaded applications using neural sequence solvers</article-title>
          ,
          <source>Innovations in Systems and Software Engineering</source>
          <volume>17</volume>
          (
          <year>2021</year>
          )
          <fpage>289</fpage>
          -
          <lpage>307</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pratim Das</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Chakrabarti</surname>
          </string-name>
          ,
          <article-title>Dcube_ nn d cube nn: Tool for dynamic design discovery from multi-threaded applications using neural sequence models</article-title>
          ,
          <source>Advanced Computing and Systems for Security:</source>
          Volume
          <volume>14</volume>
          (
          <year>2021</year>
          )
          <fpage>75</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Siegmund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Peitek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Parnin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Apel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hofmeister</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kästner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Begel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bethmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brechmann</surname>
          </string-name>
          ,
          <article-title>Measuring neural eficiency of program comprehension</article-title>
          ,
          <source>in: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>140</fpage>
          -
          <lpage>150</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>C. B. de Souza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Anquetil</surname>
          </string-name>
          ,
          <string-name>
            <surname>K. M. de Oliveira</surname>
          </string-name>
          ,
          <article-title>A study of the documentation essential to software maintenance</article-title>
          ,
          <source>Conference on Design of communication, ACM</source>
          ,
          <year>2005</year>
          , pp.
          <fpage>68</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>L.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Yuan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <article-title>Hotcomments: how to make program comments more useful?, in: Conference on Programming language design and implementation (SIGPLAN)</article-title>
          , ACM,
          <year>2007</year>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>27</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Le</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Gotmare</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Bui</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. C.</given-names>
            <surname>Hoi</surname>
          </string-name>
          , Codet5+:
          <article-title>Open code large language models for code understanding and generation</article-title>
          ,
          <source>arXiv preprint arXiv:2305.07922</source>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Steidl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Hummel</surname>
          </string-name>
          , E. Juergens,
          <article-title>Quality analysis of source code comments</article-title>
          ,
          <source>International Conference on Program Comprehension (ICPC)</source>
          , IEEE,
          <year>2013</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bandyopadhyay</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Clough</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Chattopadhyay</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Majumder</surname>
          </string-name>
          ,
          <article-title>Can we predict useful comments in source codes?-analysis of findings from information retrieval in software engineering track@ fire 2022</article-title>
          ,
          <source>in: Proceedings of the 14th Annual Meeting of the Forum for Information Retrieval Evaluation</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bandyopadhyay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chattopadhyay</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>P. D.</given-names>
          </string-name>
          <string-name>
            <surname>Clough</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Majumder</surname>
          </string-name>
          , Overview
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>