2019 Summer Education Series

Would you like to learn the basics of high-throughput and parallel computing? Do you want hands-on high performance training that you can apply to your research? If so, then we invite you to attend one or more sessions in ARCS' Summer Education Series. The sessions are free for all UVA faculty, staff, and students. Topics include how to program in Python, scientific visualization, modern Fortran, data analytics, MPI for distributed systems, OpenMP for multicore systems, and more! Lectures on relevant topics will be delivered during the morning sessions; afternoon sessions offer hands-on practice.

2019 Sessions:

June 3-June 5: Programming in Python--Go from beginner to proficient in three days. Day 1: Basics of programming in Python. Day 2: Modules and packages. NumPy, SciPy, and Pandas. Day 3: Dictionaries and classes. Some computing experience is helpful but not required. Mornings are lectures and hands-on exercises, with afternoon labs focused on programming applications to cement your skills.

June 3-June 4: R--Day 1 (R for data science): R is one of the most ubiquitous statistical computing languages. In this session, you will be introduced to the language's fundamental data structures as well as how to load packages and use functions. Topics include: composing scripts, reading data into R, and basic data manipulation and visualization techniques using the "tidyverse" set of packages (dplyr,tidyr,ggplot2). Day 2 (R as a programming language): Need to improve your skills with manipulating data in R?  In R as a programming language, you will learn how to make R do more work for you. Topics include decision-making, repetition, functions, and optimizations (such as vectorization).

June 5-June 7: MATLAB--Day 1: MATLAB fundamentals (no prior MATLAB experience required). Day 2: MATLAB programming techniques. Provides hands-on experience using the features in the MATLAB language to write efficient, robust, and well-organized code. These concepts form the foundation for writing full applications, developing algorithms, and extending built-in MATLAB capabilities. Details of performance optimization, as well as tools for writing, debugging, and profiling code are covered. Day 3: MATLAB for data visualization. Focuses on importing and preparing data for data analytics applications. The workshop is intended for data analysts and data scientists who need to automate the processing, analysis, and visualization of data from multiple sources. 

June 6-June 7: Compiled Languages--The basics of C++ and Fortran will be taught in this accelerated two-day course. Prerequisite: experience programming in some language. Mornings will be hands-on and lecture, with afternoon programming labs.

June 10: Intro to High-Performance Computing--This all-day session is an in-depth introduction to using the Rivanna HPC cluster. Topics covered will include an introduction to the Unix command line, writing SLURM scripts, and high-throughput computing.

June 10: Scientific Image Processing with Fiji/ImageJ--This hands-on workshop is an introduction to using Fiji, an open-source and enhanced version of the popular ImageJ program used for scientific image processing. During the morning session, participants will be introduced to image processing filters, strategies for image background correction, as well as identification and analysis of image objects of interest using segmentation masks. During the afternoon session, participants will learn how to write scripts for automated execution of image processing pipelines and batch processing of multiple image files in Fiji. Example scripts will be provided using the Python and BeanShell languages. Participants should bring their own laptop with Fiji preinstalled. Instructions for installations of Fiji on Windows, Mac OSX, and Linux can be found on this website: https://fiji.sc/#download

June 11: HPC Data Analytics--An overview of data analytics using an HPC Cluster. Topics include data transfer and storage; introduction to machine learning, including tensorflow. 

June 11: Software Design--Learn to write code that is readable, reusable, and extensible.

June 12-June 13: Parallel Programming Using MPI--The Message-Passing Interface is the standard for distributed parallel programming. MPI programs can run on multiple nodes of a cluster. Day 1: Basics of parallel programming. Collective Communications. Day 2: Point-to-point communications.

June 12: Bioinformatics--Next-generation sequencing technology has evolved dramatically to enable investigation of genome/transcriptome/epigenome of any organism. Sessions in this track will introduce researchers to basic skills needed to analyze sequencing data using Rivanna, UVA's HPC cluster.

June 13: Accelerating and Parallelizing MATLAB Code--Covers a variety of techniques for making your MATLAB code run faster. You will identify and remove computational bottle-necks using techniques like preallocation and vectorization. On top of that, you will take advantage of multiple cores on your computer by parallelizing for-loops with Parallel Computing Toolbox, and scale up across multiple computers using MATLAB Parallel Server. 

June 14: Parallel Programming with OpenMP and Accelerators--OpenMP is a programming model based upon threads that run over multiple cores of one node. OpenMP can also be used to program general-purpose graphical processing units (GPGPUs). OpenACC, another compiler-based model for GPGPUs, will also be discussed.

June 14: Scientific Visualization--An exploration of tools used for visualization, including ParaView for scientific visualization, ITK-SNAP for medical visualization, and Python for remote sensor data visualization.