# Area Exam

## Particle Advection Workloads: Performance Characteristics and Optimizations

Flow visualization is an important approach for understanding fluid dynamics simulations. This survey focuses on flow visualization algorithms that use "particle advection", a process that displaces particles in a flow field. The performance of these algorithms can vary greatly based on a variety of factors including workload, solver type, underlying mesh type, and optimizations employed. That said, the relationship between these factors and actual execution time is often not well understood. In response, this survey aims to illuminate performance aspects.

## The Evolution of HPC Software Development Methodologies and Performance Analysis Tools

High-Performance Computing (HPC) software is rapidly evolving to support a wide variety of heterogeneous applications. Traditionally, HPC applications are built using the message-passing interface (MPI) and operate in a bulk-synchronous manner.  The complexity of scientific software development and emerging classes of workloads have driven the HPC community to adopt increasingly modular software development frameworks.  On the one hand, the modularization of HPC software makes programming these systems more manageable.

## Dynamic Adaptation Techniques and Opportunities to Improve HPC Runtimes

Exascale, a new era of computing, is knocking at the door. Leaving the days of high frequency, single-core processors behind, the new paradigm of multi-core/many-core processors in complex heterogeneous systems has come to dominate.

## Utilizing Text Structure for Information Extraction

Information Extraction (IE) is one of the important fields of natural language processing (NLP) with the primary goal of creating structured knowledge from unstructured text. In more than two decades, IE has gained a lot of attention and many new tasks and models have been proposed. Moreover, with the proliferation of deep learning and neural nets in recent years, the advanced deep models have brought about a surge in the performance of IE models.

## Layered Network Protocols for Secure Communications in the Internet of Things

As the Internet of Things (IoT) continues to penetrate into our lives, security becomes a crucial issue for IoT devices to communicate with each other. Many standardized network protocols and cryptographic protocols have been proposed recently for IoT to secure their communication. However, due to the heterogeneous nature and the constraint resource in IoT, many IoT devices failed to protect their communication with the existing standardized protocols. To this end, in this work, we explore the area of secure communication in IoT environment.

## Deriving Practical Implementations of First-class Functions

I explore the ways in which a practical implementation is derived from Church's calculus of $\lambda$-conversion, i.e. the core of functional programming languages today like Haskell, Ocaml, Racket, and even Javascript. Despite the implementations being based on the calculus, the languages and their semantics that are used in compilers today vary greatly from their original inspiration. I show how incremental changes to Church's semantics yield the intermediate theories of explicit substitutions, operational semantics, abstract machines, and compilation through intermediate languages, e.g.

## Online Monitoring, Analysis, and Feedback for High-Performance Computing Systems

In this work we explore the area of online monitoring, analysis, and feedback systems in high-performance computing. This area of research is increasingly important as software and machines grow in scale and architectural complexity. We begin by outlining the terms of the art and scope of the area being considered. We provide a high-level overview of online monitoring, analysis, and feedback within the context of high-performance computing. Significant features of each subtopic are discussed, as well as the reasoning behind the integration of these topics into a holistic area of research.

## Evolution of Programming Approaches for High-Performance Heterogeneous Systems

Nearly all contemporary high-performance systems rely on heterogeneous computation. As a result, scientific application developers are increasingly pushed to explore heterogeneous programming approaches. In this project, we discuss the long history of heterogeneous computing and analyze the evolution of heterogeneous programming approaches, from distributed systems to grid computing to accelerator-based supercomputers.

## Reconfigurable Optical Networks: Theory, Practice, and Applications

Reconfigurable optical networks have emerged as a promising technology to serve the fast-growing traffic produced by the digital society. This area exam considers reconfigurable optical networks and their interface to higher layers of the network stack. To this end, we explore the challenges of implementing a vertically programmable network.

## A Top Down Approach to Network Protocol Security in the Internet of Things

As the Internet of Things (IoT) continues to pervade every aspect of our lives, IoT application designers and researchers must leverage a new suite of standardized network protocols specifically tailored for IoT. In particular, because IoT environments exhibit new network characteristics, such as lossy links and low capability end-hosts, network protocols designed for traditional wired networks become insufficient in IoT.