NLSR Authors
============

NLSR is an open source project includes contributions from the members of the
[NDN project team](http://named-data.net/project/participants/).

## Project co-leads:

* Ashlesh Gawande  <https://www.linkedin.com/in/agawande>
* Saurab Dulal <https://dulalsaurab.github.io>

## Past project leads:

* A K M Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
* Vince Lehman <http://vslehman.com>
* Nicholas Gordon <nmgordon@memphis.edu>

## Technical advisors:

* Lan Wang            <http://www.cs.memphis.edu/~lanwang/>
* Beichuan Zhang      <http://www.cs.arizona.edu/~bzhang/>
* Lixia Zhang         <http://www.cs.ucla.edu/~lixia/>


## All project authors, contributors and their affiliations:

* The University of Memphis

    * A K M Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
    * Ashlesh Gawande      <https://www.linkedin.com/in/agawande>
    * Minsheng Zhang       <https://www.linkedin.com/in/minsheng-zhang-032023a1>
    * Syed Obaid Amin      <http://obaidamin.weebly.com/>
    * Vince Lehman         <http://vslehman.com>
    * Muktadir R Chowdhury <mrchwdhr@memphis.edu>
    * Nicholas Gordon      <nmgordon@memphis.edu>
    * Laqin Fan            <lfan1@memphis.edu>
    * Damian Coomes        <dmcoomes@memphis.edu>
    * Saurab Dulal         <sdulal@memphis.edu>

* University of California, Los Angeles

    * Yingdi Yu           <http://irl.cs.ucla.edu/~yingdi/web/index.html>
    * Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
    * Spyridon Mastorakis <http://cs.ucla.edu/~mastorakis/>
    * Jiewen Tan          <https://www.linkedin.com/in/jiewentan>

* Universidad Autónoma de San Luis Potosí (UASLP)

    * Pedro David Arjona Villicaña <david.arjona@uaslp.mx>

* Individual Contributor(s)

    * Junxiao Shi         <https://www.linkedin.com/in/shijunxiao>
    * Davide Pesavento    <https://www.linkedin.com/in/davidepesavento>

## Queries about NLSR

Any question related to NLSR should be directed to Ashlesh Gawande (agawande@memphis.edu), Saurab Dulal (sdulal@memphis.edu),
Muktadir R Chowdhury (mrchwdhr@memphis.edu).
