Project Proposals

Send me an email after all the presentations have been made (we will finish them in Monday's class).
Send to help-comp523@cs.unc.edu with title "COMP 523 PROJECT PICKS".


Email is due Tuesday afternoon, 1/24/2017 by 3pm. I will be making up teams with this information Tuesday afternoon for class on Wednesday.

In this email give me the LETTERS (from the list below) of your top 6 project choices, in order... something like this: 1Q 2L 3H 4P 5C 6A

I will do what I can to maximize happiness but I give no guarantees other than you will end up assigned to some project. Think of it this way... every project here is awesome! So you will be happy no matter which you work on.

Self-selected Teams

You may self-select a team of size 4 if you wish... simply send me one email with all student names as a team along with your 6 project preferences. All 6 project preferences must be the same for a each person on a team.

If you have 2 or 3 members of a self-selected team, that works as well. Send me one email with all names and the 6 preferences. I will add member(s) as needed.

If you do not self-select a team, I will assign you individually to a team based on project preference matches as best I can. You may self-select a partial team as well. Please make sure all team members agree on project choices and order.



  1. Allen Hurlbert  
    Biology
    hurlbert@bio.unc.edu
    (will present 9:05 slot)
    
    Caterpillars Count! Data Visualization
    
    Caterpillars Count! is a citizen science project that facilitates the collection of data 
    on caterpillars and other arthropods throughout North America. These data are the foundation 
    for basic research into the impacts of climate change on natural ecosystems. However, 
    exploration of these data is also of great use for science education and outreach. This 
    project involves developing interactive web-based data visualization tools (probably using 
    the D3.js library) for exploring these data in geographical (i.e. map-based) and graphical 
    formats, specifying data filters, or digging down to different levels of complexity. 
    Ultimately, this project will allow middle and high school students to ask and answer 
    scientific questions about arthropod density and distribution, and will improve their 
    ability to interpret scientific data.
     
    
    

  2. Susan Helms
    Michael Levy
    UNC Center for Health Innovation
    (will present, 9ish)
    
    My Healthy Heart is one of the teams that placed in the Digital Health Innovation 
    Sprint that just concluded. They have the clinical expertise, access to patients for 
    rapid feedback, and we intend to run a pilot with their solution once we have a 
    Minimum Viable Product in hand. However, they are lacking software development support 
    to move their product along. 
    
    We are planning for them to participate in the Groundworks Lab accelerator cohort that 
    starts in mid May, so a semester long class project would be perfect.
    
    presentation
    
    

  3. Suzanne Cadwell
    (will present 9:20 )
    
    Please find attached our proposal to develop attendance tracking application for 
    large-lecture classes. Its scope is large, but I expect that we could narrow it 
    for the purposes of the course. It involves using bluetooth communications with
    mobile devices, and interfaces with the UNC ONYEN single sign-on system.
    
    Word doc
    
    
    

  4. Brian Moynihan
    Health Sciences Library, leading their Digital Health efforts.
    (will present, 9:30)
    
    Amazon Alexa pilot at UNC Health Care
    
    UNC's Center for Health Innovation would like to pilot the use of Amazon's Alexa, 
    using the Alexa Skills Kit to develop an application that would be useful for 
    settings like the operating room, patient's home, or other real-world healthcare 
    setting. This initiative will be supported by a team at the UNC Health Care system 
    and would be an excellent way for students to both explore use of the Alexa 
    development environment, and have an impressive addition to their professional 
    portfolio. 
    
    Thus this project will use the Amazon Echo/Dot as a voice control device and you will
    develop systems to use the voice commands to manipulate various computing functions.
    
     
    

  5. Thomas Freeman
    UNC Chemistry
    (will present)
    
    We teach students a technique in Chem 101 called Photoelectron Spectroscopy, which 
    generates a unique spectral pattern based on the electron configuration of a given 
    element.  This technique essentially provides a set of peaks to represent the different 
    energy levels of electrons around an atom. The tool would use published energy values, 
    which I would be happy to provide the students (or we can use a calculation to 
    approximate energy values, which might be more interesting) to determine the peak 
    positions, and information about each element to determine the relative peak heights. 
    A similar tool exists online (http://cbc.arizona.edu/chemt/Flash/photoelectron.html), 
    but is lacking many features that really help expand a student's understanding (e.g., 
    it only covers the first 21 elements even though there are 118). Another feature of the 
    tool would also show the electron configuration of the neutral element so that students 
    can explore how the PES is tied to the electron configuration notation that we use. 
    A final feature that would make this tool even more powerful is if a student could see 
    how the spectrum changes as you remove electrons to make a cation of a given element 
    (this would also have to be adjusted using theoretical calculations, but we could keep 
    the math relatively simple).
    
    Ideally this tool would be a web app so that it is platform-independent. An informational 
    page about the technique and how it works would also be helpful if time allows for it. 
    
    
    

  6. Kelly Hogan 
    Mara Evans 
    UNC Biology
    (will present, before 9:45)
    
    We have an instructional need. In our large science classes, we'd like to be using 
    more formal groups, but in a class of 450 students-- this poses a real administrative 
    challenge. We're thinking of a program that does some kind of intake from students 
    to learn about where they want to sit in the room and maybe other parameters we 
    might want to group students by. We'd then want the program to deliver information 
    to students when we're ready about who they've been matched with and the seats 
    assigned to that group. Ideally, we'll have a place to also give guidelines about 
    effective group work and a place to contact the instructor if there are issues that 
    need to be discussed. We're open to other ideas that could make a program like this 
    even more useful such as a way for students to provide feedback to their partners 
    and to the instructor about the group dynamics.
    
    
    

  7. Ming Lin
    (will present 10ish)
    
    I have the idea of expanding and revising of an existing website that used
    Github.   The source code already exists, but I'd like to significantly modify
    and expand it.   It's found at
    
      csrankings.org
    
    It's nothing terribly complicated, but the students need to know python and 
    web programming, and possibly a bit of GUI.
    
    For example, we might add user-driven mechanisms to add more areas (e.g. multimedia), 
    more publication venues, adding journals, etc.   Different criteria of weighing the
    publications, adding new criteria for ranking dept, better looking Graphical UI
    than its current plain, boring look, etc.
    
    In addition, more objective measures to automatically include publications, say
    based on H-5, google citations, etc.   Automatic incorporation of other data, such 
    as graduation rates, average salary per tuition, etc.  The wish list can go on and on.
    If the team does a good job, there is even potentially a publication here.   :-)
    
    description
    
    
    

  8. Kris Jordan
    The project that I could use help with can be described as follows:
    (will present 10ish)
    
    COMP110 Scheduling Application
    
    This semester COMP 110 has 52 LAs who hold between 5 and 10 hours of open hours, each 
    with their own heterogeneous schedule constraints and experience levels. Through the 
    week we are collectively open for 55 hours of availability and need to build schedules 
    for the team and satisfy a number of constraints. This is an NP-hard problem that has 
    been well researched and is called the "Scheduling Nurses Problem." Over the summer, 
    a few team members developed a "good enough" text-based backend solution to the 
    scheduling problem. We would like to build upon this backend with a GUI or web-based 
    editor that makes it easier for a human to manually iterate upon a generated schedule, 
    simplifies the rescheduling of conflicts, and makes it easier to visualize potential 
    problems in a schedule. We would also like to improve upon the scheduling algorithm 
    in a number of quantifiable ways. This project combines a variety of user experience 
    and data visualization challenges along side some good, hard computer science 
    algorithmic problems.
    
    
    

  9. Prasun Dewan
    Computer Science
    (will present 10ish)
    
    Distributed Semi-Automatic Style and Correctness Grader of 
    Exam and Assignment Solutions
    
    Given a student programming submission (assignment or exam solution), a grading 
    program evaluates the submission for style and correctness. This problem, in general, 
    is intractable as it is more difficult than the program equivalence program. 
    There are two popular solutions to combat this intractability: 
    
      (a) support fully automatic checking with rigid rules (e.g. Udacity); 
      (b) define an interactive distributed grading assistant that automates bookkeeping 
          tasks but requires fully manual checking (e.g. Gradescope). 
    
    At UNC we have developed a hybrid that automates some but not all checking. However, 
    it is not distributed, and does not support grading of exam solutions. The goal of 
    this project is to remove one or both of these limitations. 
    
    Reasons for undertaking it: 
    
      (a) You get to improve in a major way the state of the art in an area that is attracting 
          great attention given the large CS class sizes. 
      (b) You build something that will actually be used at UNC and perhaps elsewhere. 
      (c) You learn to create a distributed secure architecture. 
      (d) You develop a complex UI by designing certain elements from scratch and integrating 
          others from existing graders such as GradeScope. 
      (e) You learn to use new APIs such as the distributed Google Windowing Toolkit.
    
    

  10. Nicole Robinson-Ezekwe MA, MPH
    UNC Center for Health Equity Research
    nic7@live.unc.edu  
    (will present)
    
    I need to develop a data collection app for a project that I am implementing. As 
    stated below, I work for the UNC Center for Health Equity Research and I am developing 
    a project called SEARCH (Social and Environmental Assessment to Rate Community Health). 
    The project is aimed at measuring neighborhood-level determinants of health that 
    influence individual stress levels and other cardiovascular disease related health 
    outcomes. We would like to develop an app that data collectors can use to collect 
    the neighborhood/environmental information. I have attached a copy of the original 
    internship job call that I sent to your department.
    
    Word doc
    
    

  11. Anna L. Krome-Lukens, PhD
    Lecturer and Director of Experiential Education, Public Policy
    (will present, 9:30 to 10:00)
    
    As Director of Experiential Ed for PP, I oversee our students' work with 
    community partners in a few courses, including our Capstone (PLCY 698), 
    Clinic (PLCY 393), and Internship (PLCY 293) courses.  As I'm sure you know 
    from running COMP 523, there's a lot of administrative work involved.  
    Two places your students might be able to help:
    
    1. A database.  Since I took over this position 18 months ago, I've tried to do a 
    better job of keeping tabs on the many partners and projects we work with, but am 
    currently using an excel spreadsheet.  I'd love to have a true relational database 
    to track clients and other contacts (and logs of interactions with them), projects, 
    students, etc.  If I had time and money, I'd do it in Filemaker, but I have neither.  
    I'd also really like for the primary interface to be via web browser, with 
    password-protected access, so that other staff and faculty in the department 
    can access it.  
    
    2. Some sort of algorithm that would allow me to do a preliminary sort of students'
    project preferences in Capstone.  (Or your secrets for how you do it in your course??)  
    Each semester I have 50-60 students to assign to 12-16 potential projects, and I'm 
    trying to balance multiple factors in addition to their expressed preferences, 
    including gender, background/experience, and skills particular to the project.  
    Right now I use a Qualtrics survey to gather their preferences, then export it to 
    a massive spreadsheet, which I stare at for hours trying to get the right combination.  
    There's got to be a better way, right?  
    
    
    

  12. Jennifer M. Hazen, PhD
    Public Policy & Peace, War, and Defense
    jmhazen@email.unc.edu
    (not presenting)
    
    I would love to have an option for students to use an app that allows them to put 
    forward answers that would generate a word cloud (of sorts) on the screen. For 
    example, if I ask "what does global policy mean" or "give me an example of a global 
    policy issue" etc. students could type in their answers and these would generate into 
    a word cloud or some graphic that would be visually appealing (not just text on a 
    power point slide), and which I could then manipulate to pull certain words or phrases 
    out (or make them larger or highlight them somehow), and also put aside (or maybe 
    even shrink or delete) answers that aren't factually accurate, or maybe even group 
    some ideas together with others. 
    
    It's a sort of visual brainstorming for the class. And allows students to see 
    their answers on the screen, and allows me to manipulate them in some fashion.
    I'm envisioning a word cloud - of sorts - that I can then manipulate. Move words 
    around, group them together, highlight the one I'm talking about, delete words 
    that may not fit (or I expect some will simply put up cheeky answers). Perhaps 
    I watch too many TV shows/movies, but being able to easily play with the answers 
    students put forward to teach from them would be great.
    
    Even better if there is someway to highlight an answer and then click to a popup 
    window with a video clip/photo/or even boring text that explains the concept in 
    more detail. And then be able to close that window and go back to the word cloud, 
    and on to talking about the next answer.
    
    If you know of a program that already does this, I would love to know what it is. 
    I am teaching a class of 160 in the fall and would love to find ways to make that 
    at least somewhat interactive.
    
    ------------------
    
    The main idea is to have the ability to generate answers from students, 
    and then to manipulate those answers.
    
    
    For example, if I ask students to name a global policy issue, they could 
    submit their answers, which would populate the screen as a word cloud of 
    sorts. Then what I'd like to be able to do is manipulate that data:
    
     -- by grouping certain ideas together in a corner of the screen, maybe 
        drawing a circle around them or writing an overarching label across 
        the top of the group
     -- making similar ideas the same color text
     -- swiping ideas to delete anything incorrect or inappropriate.
     -- tapping a certain idea (text word) to enlarge it on the screen, 
        to highlight it as I discuss it
     -- tapping a certain word/idea to enlarge it but also to bring a box up to 
        the right of that text that would allow me to link to images, video, etc. 
        Obviously I'd have some idea of what the students would answer in order 
        to have files ready at hand. But having an easy way to pull up those 
        images on the screen without having to switch multiple screens would be helpful
    
    I'm open to other suggestions your students might have for manipulating 
    information on the screen
    
    
    

  13. Steve Aylward
    David Thompson
    Kitware
    (Moday presenting, 9:05)
    
    Kitware has begun a new open-source visualization library called VTK.js.   
    It is, as it sounds, VTK for javascript:
    
    LINK
    
    Perhaps teams from your class would be interested in adding one or more cutting-edge 
    visualization methods to VTK.js.   The list of possible methods to be added includes 
    the following:
    
    + Silhouette rendering.
      Gooch, Gooch, Shirley, Cohen. A Non-Photorealistic Lighting Model For 
      Automatic Technical Illustration.
      paper link
      and also paper link
      for implementation details.
      In order to work with depth peeling, it would be better to use a geometry shader to
      insert quads for each edge and point which qualifies as a silhouette. This would be
      really useful for displaying selected surfaces/bodies in ModelBuilder.
    
    + Sketch recognition/beautification.
      Wolin, Eoff, Hammond. ShortStraw: A Simple and Effective Corner Finder for Polylines
      http://faculty.cse.tamu.edu/hammond/publications/pdf/2008WolinSBIM.pdf
      which could use browser multitouch events to accept sketches and then offer to beautify.
      It would be a nice way to accept not just sketches, but gestures for picking, transforms,
      and camera controls. Also, see http://www.olivierbau.com/octopocus.php for gestures.
      We want support for this in ModelBuilder as an alternative to polygon drawing via
      mouse clicks.
    
    + Inspecting volumetric data without volume rendering.
      McGuffin, Tancau, Balakrishnan. Using Deformations for Browsing Volumetric Data
      http://profs.etsmtl.ca/mmcguffin/research/volumetricBrowsing/
      Which could be adapted to apply textures to spline surfaces instead of deforming
      individual voxels, and would be useful for medical projects.
    
    + Displacement mapping.
      Wang, Tong, Lin, Hu, Guo, Shum. Generalized Displacement Maps.
      http://cg.cs.tsinghua.edu.cn/papers/esr_wx.pdf
      This may not be possible without WebGL2 support in your browser.
      We could really use this in ModelBuilder for displaying bathymetry data.
    
    Dr. David Thompson (http://www.kitware.com/company/team/thompson.html) would serve as 
    the "customer" on these tasks.
    
    Slides PDF
    
    
    
    

  14. Jeannie Loeb
    Teaching Professor and Director of Instructional Development, 
    Department of Psychology & Neuroscience
    Clinical Associate Professor, School of Education
    (Monday presenting, 9:05)
    
    Developed a web-based system for the UNC admin that helps faculty members create 
    course syllabi according to a framework containing all the sections, goals, and 
    topics requested.  It would be great if portions of a syllabus (as a Word document) 
    could be generated based on some information put in by the user.  (If this were 
    generated as a Word document, then the user could add whatever else they want.)  
    The program should not only generate the components listed by UNC as being important 
    to have in a syllabus (that document is attached) but it would also be very helpful 
    if it could automatically generate a table of times that course would be meeting.  
    
    For example, if a course is to meet on MWFs (or Tues/Thurs or just MWs or MTWRF - 
    so flexibility in indicating how frequently the course meets would be good), then 
    having the specific days and dates generated automatically (as a table, see below) 
    would be great.  The program should do this based on the first day of class (which 
    the user could enter - unless this information could be retrieved automatically 
    from a UNC resource, e.g. Academic Calendar?) and the last day of class (which the 
    user could enter, or again, be automatically retrieved from a UNC site).  
    Automatically noting which days are UNC holidays would also be useful.  The table 
    could be something like below.  
    The dates would be generated and the topic and assignment columns would be blank so 
    that the user can fill them in with whatever they want.  It would also be good if 
    all generated information (not so much the format which I'm guessing must be fairly 
    fixed) could be overwritten in case the user would like to change something.
    
    DATES   TOPIC      ASSIGNMENT
    Wed     1/11/2017       
    Fri     1/12/2017       
    Mon     1/16/2017  NO CLASSES  ****?
     
    
    Slides
    
    

  15. Ram Neta
    Philosophy
    neta@email.unc.edu
    (not presenting)
    
    (1) This one is for students interested in user experience (UX), which is a hot field.  
    I've designed a video game to help students practice their deductive reasoning skills.  
    The video game is on the web at puzzle.sonjara.com.  My hope is that students start 
    playing this video game regularly -- even habitually -- and thereby improve their 
    deductive reasoning abilities.  But this isn't likely to happen just yet, because 
    visual effects are very plain, and there are no auditory effects at all.  
    
    I should mention that this video game may eventually become widely used in assessment, 
    since performance on this game has been shown to correlate highly with college GPA and 
    with math SAT score.  I'll be doing more valid tests on it later this month.
    
    
    
    

  16. Ram Neta
    Philosophy
    neta@email.unc.edu
    (not presenting)
    
    (2) This second project is for students who are interested in the role of logic in 
    reasoning.  Consider the following argument:
    
      If Joan is at the park, then either Jim or Mary is too.
      Jim can't be at the park if Joan is not.
      Mary will only be at the park if Jim and Joan are not both there.
      --------------------------------------------------------
      Therefore, if either Jim or Mary is at the park, then both of them are there.
    
    Now, does the conclusion have to be true if the premises are?  Answering that question 
    takes some thought, and some people will not be able to do it without help.  But the 
    method of truth-tables provide a procedure that is guaranteed to answer that question 
    in a finite number of steps.  This project is to build a video game that allows students 
    to use the method of truth-tables to figure out whether complicated arguments like the 
    one above are logically valid. 
    
    
    

  17. Ram Neta
    Philosophy
    neta@email.unc.edu
    (not presenting)
    
    (3) The third project is for students who are interested in ontology, or the logic of 
    categories.  If all lions are mammals, and no lions are ungulates, then what, if anything, 
    does this tell us about the relation between mammals and ungulates?  Ontologists can 
    answer such questions by using Venn Diagrams.  This project is to build a tool that 
    allows students to build Venn Diagrams to help them understand how relationships among 
    some categories tell us about relationships among other categories.
    
    
    

  18. D. Stotts
    Computer Science
    (I present)
    
    COMP 523 Admin tools
    lots of stuff to collect and generate
    
    I need a web-based system that will collect, maintain, and present several forms 
    of information that are needed to create and manage the COMP 523 class.
    
    a) Client and project information. We need to collect client information and information 
    about project ideas.  This segment should gnerate a web page with a summary of all 
    project proposals with all relevant links embedded (word docs, PPTs, web sites, etc.).
    Clients will be indentified by name, organization/department, email address.  
    This section will also provide clients with an explanation of the process of proposing, 
    as well as an explanation of client obgligations once a project is selected.
    We want clients to fill out this information themselves via the web interface.
    
    b) Team scheduling.  Students will be able to select prefereces from the web description of
    project ideas.  Teams will be formed to maximize (as much as practical) student matches.
    Unselected projects will remain in the database for use in following semesters.
    
    c) Team management.  This section allows the instructor to enter grades and evals for each
    milestone a team must reach.  It will be viewable by individual team (protected somehow).
    
    
    

  19. Pozefsky, Diane
    Computer Science
    (not presenting)
    
    CODIAD Plugin
    
    Codiad is an open-source web-based minimalistic IDE framework.  
    
    My particular interest in it is for COMP 101.  In COMP 101, we teach HTML, CSS, and 
    JavaScript.  Students use Komodo Edit to build the pages and then use Filezilla to 
    transfer the files to server space that we provide.  Komodo Edit has a very nice 
    interface, giving lots of help as to what commands and values are possible.  
    However, file transfer does not work as well.  Students have an incredibly hard time 
    with the file transfer, regularly forgetting to upload files or moving them to the wrong 
    place (e.g., moving a whole folder instead of the contents of the folder).  
    
    We can run Codiad on the system where we provide the server space and avoid the file 
    transfer problem.  Unfortunately, the "smart" auto-complete is not so smart.  I would 
    like a plugin that matches the autocomplete capabilities of Komodo Edit.
    
    
    

  20. Pozefsky, Diane
    Computer Science
    (not presenting)
    
    Virtual Machine Management
    
    COMP 523 teams have a lot of challenges in working as a team to build software.  
    We are looking at a lot of tools and techniques to streamline the process:  use of 
    CloudApps for development, us of Github for a code repository, Jenkins or Travis for 
    continual integration and test.  
    
    One of the continuing problems is that the team members want to be able to develop on 
    their own machines.  To make this work well, it is best if everyone is running in the 
    same environment.  There are lots of tools that can be used: Vagrant, Docker, Virtual Box.  
    While it would be nice to support multiple technologies, the specific technology is less 
    important than creating an infrastructure to let people re-use configurations, change 
    them, save them , and share them.
    
    The vision that I have is that one of the team members looks at the current inventory, 
    identifies a virtual machine that is close to what they need, downloads it, adds the 
    capabilities needed, uploads it, and then lets his (or her) teammates download the same 
    code.  Bottom line is that this is a management system.
    
    
    

  21. Marsha R Penner, PhD
    Lecturer and Director for Undergraduate Research in Psychology and Neuroscience
    Department of Psychology and Neuroscience
    (not presenting)
    
    1. I have some devices from a company called backyard brains (www.backyardbrains.com). 
    I use these devices in their simplest, basic form for science outreach. We take the 
    devices out to schools, science fairs, etc. However, I would like to use them to 
    collect data with my students, and with middle-school students to run a 'real' 
    experiment. This requires programming that is completely out of my grasp. Here is 
    one example (there are many, and I would be happy with anything): 
    
      LINK
    
    I have other devices like the one in the example above. For example: 
    
      LINK
    
    I would like to be able to download the data we collect in a simple format so that we 
    can look at it together in a simple format. I'd like for the output to be kind of 
    'canned' so no one feels overwhelmed. A simple set of figures and number to use.
    
    I would also like to have the devices interface with objects. For example, use EEG 
    to play a video game, or make a drum beat. I currently use the mindwave device (above) 
    to fly a helicopter, but would like other options (e.g., make a drum beat): 
    
      LINK
    
    
    2. I do canine cognitive work, and I would like to automate our experimental equipment. 
    We are attempting to build a version of an operant chamber for dogs (this is the rat 
    version):
    
      LINK
    
    In it, we have an automated feeder and some blinking lights. Currently, we are using 
    this automated feeder: 
    
      LINK
    
    And we are using these lights (only because it has a remote control, we are not married 
    to them):
    
      LINK
    
    We have to manually activate the lights and the feeder at specific time points. This 
    makes it likely that our timing will sometimes be off. We have dreamed of having a 
    program that could: 
      1) activate the feeder at a specific time (e.g., every 8 seconds), 
      2) activate the lights at a specific time, 
      3) turn these things off at a specific times. 
    
    We would love to incorporate a button to push that would also be automated. And we wish 
    for a program that is flexible so that we could easily modify the timing for each device 
    being controlled by the program.