Offered Tutorials/Workshops

Offered Tutorials/Workshops

The following tutorials/workshops are offered for ACMSE 2022. Since the event is totally virtual, there is no limit on the number of participants. We will use videoconferencing technology. Hence, you are encouraged to attend them. If you register for ACMSE 2022, you will receive an email with the information for the connection before the beginning of the event.


Practical Use of SDR for Machine Learning in RF Environments
Presenter: Neel Pandeya (National Instruments in Austin – USA), Debashri Roy (Northeastern University – USA), Tathagata Mukherjee (University of Alabama in Huntsville – USA)
Type of Event: Tutorial
Date: Monday, April 18, 2022
Time: 12:30–15:30 (Central Time)
Duration: 3 hours
Room: Room 2

Abstract:
In this tutorial we will introduce software defined radios (SDR) and explore the application of machine learning (ML) to radio frequency (RF) systems. An explanation of the SDR hardware and the software tool-chain will be given. Several practical demonstrations will be shown to illustrate the usage and operation of the programmable radios. We will then introduce the basics of radio frequency (RF) machine learning (ML) using software defined radios, and demonstrate the implementation of end-to-end RF ML systems using deep neural networks.

Keywords:
Software Defined Radios (SDR), USRP, Machine Learning, Radio Frequency (RF).

Covered Topics:
We will use Python extensively for the example applications. Python libraries, such as SciPy, NumPy, Keras, TensorFlow, as well as GNU Radio, will be used in the example code. We will also provide code for integrating the ML systems with the USRP B210 radio from Ettus Research/National Instruments. The following topics will be covered:

  • Introduction to signal processing concepts for SDR, USRP radio hardware architecture, UHD device driver and UHD API, and GNU Radio
  • Configuration of the USRP Radio
  • Demos and examples of various SDR systems
  • Discussion of FM radio-based positioning using SDR
  • Introduction to ML Concepts
  • Introduction to Adversarial Learning
  • RF ML Problems and Challenges
  • Introduction to the Transmitter Identification problem
  • Example of Transmitter Identification using Python Jupyter notebook

Prerequisites for Participants:
Attendees should have an understanding of algebra, probability, the Linux command line, and basic Python programming.

Slides:
Slides of Neel Pandeya: here.
Slides of Debashri Roy: here.

Recording:
The tutorial was recorded. You can download it here (part01 and part02).


An Introduction to MPI Parallel Programming with Java
Presenter: Xuguang Chen (Saint Martin’s University – USA)
Type of Event: Tutorial
Date: Monday, April 18, 2022
Time: 16:00–17:30 (Central Time)
Duration: 1.5 hours
Room: Room 2

Abstract:
Parallel computing can be applied in many areas such as databases and data mining, real time simulations of systems, and advanced graphics, so it is becoming more and more important in recent years. There are two widely known parallel programming models today: (1) the message passing model and (2) the shared memory model. In the message-passing model, each task has its own private memory, and tasks can communicate with each other via message exchange. MPI (Message Passing Interface) is a specification primarily addressing the message-passing model and designed by the researchers from academia and industry. MPI specifies the syntax and semantics of a core of library routines useful for message-passing programs, and it is widely implemented in C or Fortran.

Java is a high-level, class-based, object-oriented, and general-purpose programming language, intended to be independent of the platform. It has been applied to many areas, including parallel computing. MPJ Express is an open-source Java message passing library, allowing application developers to write and execute parallel applications for multicore processors and compute clusters.

In this tutorial, MPI parallel programming in Java is introduced, using the MPJ Express library as an example. The tutorial starts by covering where to acquire and how to install the needed MPJ Express software on Windows and Linux machines. Then, we will see how to edit, compile, and run an MPI program in Java on Windows and Linux machines. The tutorial will also describe the applications of several MPJ Express routines with examples, which are vital for point-to-point parallel programming and collective communications, such as send/receive, broadcast, reduce, scatter, and gather operations. Additionally, and using examples, we will introduce how to use the MPJ Express library to write Java applications that communicate with a MySQL database. Finally, the sample code used in the tutorial will be provided and other materials suitable for self-study will be explained.

Keywords:
MPJ Express, Java, MPI (Message Passing Interface), MySQL, Parallel Programming.

Covered Topics:

  • Introduction to the software needed for parallel programming in Java, especially where to get and how to install a copy of MPJ Express library on a Windows or Linux machine.
  • Edition, compilation, and execution of an MPI program in Java on a Windows or Linux machine.
  • Introduction to several basic MPJ Express routines important to parallel programming and database communication.

Prerequisites for Participants:
The audience should have some basic knowledge of the programming languages, such as Python, Java, C, C#, Fortran, or C++.

Slides:
Slides: here.

Recording:
The tutorial was recorded. You can download it here.


Introduction to Embedded System Development
Presenter: Jay Snellen (Jacksonville State University – USA)
Type of Event: Tutorial
Date: Tuesday, April 19, 2022
Time: 13:00–16:00 (Central Time)
Duration: 3 hours
Room: Room 2

Abstract:
“Embedded systems” are computers that are built into another device, and are typically dedicated to controlling or monitoring the device. The operation of embedded systems are so tightly integrated with the larger device that, from the user’s point of view, the computer cannot be considered in isolation; the correct operation of the embedded system is synonymous with the correct functioning of the device.

The development of embedded systems entails a number of unique challenges: resources are often limited, and because embedded systems must provide reliable and uninterrupted long-term operation with little or no hands-on maintenance, correctness and predictability are essential. These challenges make embedded systems development a fruitful area of exploration for students of Computer Science, even for novice programmers. It can add to one’s appreciation of the skills required, which can also improve one’s skills in developing more conventional computer applications. Most computers in the world are embedded systems, and an increasing percentage of occupations rely on them, making the exploration of embedded systems programming a worthwhile career investment. Learning to work with embedded systems is also highly enjoyable: it involves solving a range of interesting problems, and working with an interesting variety of platforms beyond conventional desktop and laptop computers.

This tutorial will introducing the concepts and ideals of embedded systems. After establishing the necessary background, it will proceed to introduce embedded systems programming through a variety of simple hands-on exercises with major embedded system platforms. It will begin with small-scale embedded systems using microcontrollers; the microcontroller platforms introduced will be the MCS-51 family of 8-bit microcontrollers, which have long been widely used in industrial and educational applications, as well as the Arduino, a family of consumer-oriented microcontroller kits which are popularly used for electronics prototyping. It will conclude with an introduction to single-board computers, with an emphasis on the Raspberry Pi.

Keywords:
Embedded Systems, C, Firmware, Microcontrollers, MCS-51, 8051, Arduino, Raspberry Pi

Covered Topics:

  • The concepts and ideals of embedded systems
  • The role of cross-compilers, cross-assemblers, and linkers
  • Using Integrated Development Environments (IDEs) for embedded systems
  • The processes of compiling, downloading, and executing firmware for embedded systems
  • Embedded systems monitoring and troubleshooting using in-circuit debugging
  • Embedded systems communications

Prerequisites for Participants:
The audience should have a basic knowledge of programming languages such as C, C++, and Python.

Material:
Slides: here.
Resources: here.

Recording:
The tutorial was recorded. You can download it here (part01 and part02).


WiFi Simulations with ns-3
Presenter: Tom Henderson (University of Washington – USA), Hao Yin (University of Washington – USA)
Type of Event: Tutorial
Date: Wednesday, April 20, 2022
Time: 09:30–12:30 (Central Time)
Duration: 3 hours
Room: Room 2

Abstract:
This tutorial is designed as an introduction to WiFi simulations with ns-3, a discrete-event network simulator popular for Internet research. By the end of the session, participants should have a basic understanding of the scope of the WiFi module in ns-3, and how to conduct initial example simulations that use the WiFi models.

Keywords:
ns-3, Discrete-event Network Simulation, WiFi.

Covered Topics:

  • ns-3 overview and architecture
  • ns-3 main features and models
  • Basics of WiFi at PHY and MAC
  • Evolution across releases
  • Worked example programs and visualizations: (1) DCF and EDCA channel access, (2) Ad Hoc and Mesh networks, and (3) WiFi 6 features

Prerequisites for Participants:
Background in ns-3 is preferred but not necessary. Some understanding of discrete-event network simulation, WiFi technology, and C++ will be advantageous. Linux or MacOS machines or virtual machines are needed to run ns-3.

Slides:
Slides: here.

Recording:
The tutorial was recorded. You can download it here (part01 and part02).