NFD Authors
===========

NFD is an open source project started in late 2013, includes contributions
from many people around the world, and open for new contributions from new
volunteers.


## Project technical leads:

* Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
* Junxiao Shi         <http://www.cs.arizona.edu/people/shijunxiao/>


## Technical advisors:

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


## All project authors and contributors and their affiliations:

* University of California, Los Angeles

    * Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
    * Ilya Moiseenko      <http://ilyamoiseenko.com/>
    * Yingdi Yu           <http://irl.cs.ucla.edu/~yingdi/web/index.html>
    * Wentao Shang        <http://irl.cs.ucla.edu/~wentao/>
    * Lixia Zhang         <http://www.cs.ucla.edu/~lixia/>

* The University of Arizona

    * Junxiao Shi         <http://www.cs.arizona.edu/people/shijunxiao/>
    * Yi Huang            <ethanhuang1991@gmail.com>
    * Jerald Paul Abraham <http://www.cs.arizona.edu/people/jeraldabraham/>
    * Beichuan Zhang      <http://www.cs.arizona.edu/~bzhang/>

* Colorado State University

    * Steve DiBenedetto     <http://www.cs.colostate.edu/~dibenede/>
    * Chengyu Fan           <chengyu@cs.colostate.edu>
    * Christos Papadopoulos <http://www.cs.colostate.edu/~christos/>

* University Pierre & Marie Curie, Sorbonne University

    * Davide Pesavento    <http://www.lip6.fr/actualite/personnes-fiche.php?ident=D1469>
    * Giulio Grassi       <http://www.lip6.fr/actualite/personnes-fiche.php?ident=D1461>
    * Giovanni Pau        <http://www.cs.ucla.edu/~gpau/Giovanni_Paus_Home_Page/Home.html>

* Beijing Institute of Technology

    * Hang Zhang          <http://netlab.bit.edu.cn/z_hang>
    * Tian Song           <http://cs.bit.edu.cn/songtian>

* Washington University in St. Louis

    * Haowei Yuan         <http://www.cse.wustl.edu/~yuanh/>
    * Hila Ben Abraham    <http://research.engineering.wustl.edu/~abrahamh/>
    * Patrick Crowley     <http://www.arl.wustl.edu/~pcrowley/>

* The University of Memphis

    * Syed Obaid Amin     <http://obaidamin.weebly.com/>
    * Vince Lehman        <vslehman@memphis.edu>
    * Lan Wang            <http://www.cs.memphis.edu/~lanwang/>
