Summer 2018 Tutorial Series

May 23, 2018 – June 28, 2018

The Research Computing Services (RCS) group, part of Boston University Information Services & Technology, will offer a series of tutorials on programming, high performance computing, and scientific visualization. These tutorials are free and open to all members of the Boston University community.

Please note that the RCS offices and IS&T training space have moved down the street to 2 Cummington Mall. All of our tutorials this semester will be held in room 107, the newly renovated IS&T Training Room. Due to some scheduling issues, we are not offering any tutorials on the Medical Campus this Summer but tutorials there will resume in the Fall. Members of the BUMC community are welcome to attend the CRC sessions and BUMC professors are encouraged to contact us if they would like us to offer an extra BUMC session of a tutorial to their students.

There are two brand new tutorials this Summer in addition to our usual offerings. The new tutorials are Introduction to Databases, taught by Yun Shen, and Introduction to FreeSurfer, taught by Dustin Clark.

The RCS tutorials cover concepts, techniques, and tools which researchers can use in their own computing environments. Many are designed to help you make effective use of the Boston University Shared Computing Cluster. The RCS staff can also deliver extra, or customized, tutorial sessions to your group or lab. Please contact us at rcs@bu.edu if you are interested.

Register

Tutorials Schedule

You may register for as many tutorials as you like. Registration is required and is accessed with your BU Kerberos password.

If you don’t have a Kerberos password, or if you find that a tutorial is full, or have any other questions, please send email to rcs-tutorial@bu.edu.

Tutorial Locations and Directions

All sessions will be held in the IS&T Training Room 107 at 2 Cummington Mall.


Tutorial Descriptions and Times

Research Computing Basics Tutorials

Introduction to BU’s Shared Computing Cluster (Hands‐on)

Instructor: Aaron Fuegi (aarondf@bu.edu)

Thursday, May 24, 10:00am – 12:00pm

This tutorial will introduce Boston University’s Shared Computing Cluster (SCC) in Holyoke, MA. This Linux cluster has more than 6000 processors and over two petabytes of storage available for Research Computing by students and faculty on the Charles River and BUMC campuses. A very large number of software packages for programming, mathematics, data analysis, plotting, statistics, visualization, and domain-specific disciplines are available as well on the SCC. You will get a general overview of the SCC and the facility that houses it and then a hands-on introduction covering connecting to and using the SCC for new users. This tutorial will cover a few basic Linux commands but we strongly encourage people to also take our more extensive “Introduction to Linux” tutorial.

There will also be ample time for questions of all types about the SCC. Those who wish can bring their own laptops and we will help you with installing the software you need to effectively connect to and use the SCC. Others will use the Windows machines in the room.

Introduction to Linux (Hands‐on)

Instructor: Augustine Abaris (augustin@bu.edu)

Thursday, May 24, 1:00pm – 3:00pm

This tutorial will give attendees a hands-on introduction to Linux. Topics covered will include a short history of Linux, logging in with ssh, the Bash shell and shell scripts, I/O redirection (pipes), file system navigation, and job control. Time permitting, attendees will edit, compile, and run a simple C program.

Intermediate Usage of the SCC

Instructor: Katia Oleinik (koleinik@bu.edu)

Thursday, May 31, 10:00am – 12:00pm

This tutorial will provide some more advanced techniques and common strategies used for interacting with the Shared Computing Cluster and its resources.

The topics discussed during the tutorial include:

  • Customizing your environment
  • Parallel computing on the SCC
  • Jobs monitoring (CPU and memory usage)
  • Profiling programs for performance optimization
  • General optimization strategies

Recommended prerequisite: some prior experience with high performance computing or attendance of our “Introduction to BU’s Shared Computing Cluster” tutorial.

Managing Projects on the SCC for LPIs

Instructor: Charlie Jahnke (cjahnke@bu.edu)

Monday, June 11, 1:00pm – 3:00pm

Intended for Lead Project Investigators (LPI) and Administrative Contacts, this tutorial covers a high level overview and best practices for managing projects on the Shared Computing Cluster (SCC). Topics include compute resources, project creation, project management, storage/SU allocation management, and the Buy-In Program.

Register

Computer Programming Tutorials

Introduction to Python, Part One (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Wednesday, May 30, 3:30pm – 5:30pm
Monday, June 18, 1:00pm – 3:00pm

Recommended but not required: some programming experience. For example, you should understand concepts like loops and functions.

This is an introduction to the essential features of Python. This first part of the tutorial includes an introduction to basic types, if-statements, functions, lists, dictionaries, loops, and modules. The tutorial includes the use of a popular Python development environment and covers setting up Python on your own computer in addition to using Python on the SCC. This is a two-part tutorial so please remember to sign up for both sessions.

Introduction to Python, Part Two (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Thursday, May 31, 3:30pm – 5:30pm
Tuesday, June 19, 1:00pm – 3:00pm

This tutorial is a continuation of Introduction to Python, Part One and introduces more features of the language, common libraries such as numpy and matplotlib, and the basics of debugging Python programs. Please make sure you sign up for part one as well.

Building Software from Source Code on Linux (Hands‐on)

Instructor: Shaohao Chen (shaohao@bu.edu)

Friday, June 1, 10:00am – 12:00pm

Compiling a working executable from C or Fortran source code can be a frustrating experience for new programmers. This “hands-on” tutorial will introduce the basic steps for compiling small- to medium-sized projects. Topics include working with multiple source files, header files, and external libraries, and automation using Make and Autotools (configure). For simplicity, we will only cover the build process for systems with a Linux operating system (such as the BU Shared Computing Cluster).

Familiarity with the Linux command line is assumed. Familiarity with C or Fortran will be helpful, but is not required.

Version Control and Collaboration with Git and GitHub (Hands-on)

Instructor: Katia Oleinik (koleinik@bu.edu)

Friday, June 15, 1:00pm – 3:00pm

Whether you are writing source code or a manuscript, keeping track of changes is a critial part of a successful project. Version control software, like Git, automates the process of backing up and annotating previous versions of your evolving projects. In conjunction with online hosting services like GitHub, it also greatly simplifies the logistical difficulties of working in parallel with collaborators. This “hands-on” tutorial will cover basic usage of the popular version control software Git and the online hosting service GitHub.

Basic knowledge of a the Linux command line is assumed.

Introduction to C++ Programming, Part One (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Monday, June 18, 10:00am – 12:00pm

This tutorial is aimed at those who want to learn to read, write, and modify C++ code. Previous programming experience in languages such as C, MATLAB, or Python is recommended but it is not mandatory. In this tutorial series we will cover basic C++ syntax, object-oriented programming concepts including classes and inheritance, and parts of the C++ standard library. This is a hands-on tutorial and we will write, compile, and run some simple codes using the Code::Blocks integrated development environment. Please remember to sign up for all four sessions to complete the tutorial.

Introduction to C++ Programming, Part Two (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Tuesday, June 19, 10:00am – 12:00pm

This tutorial is a continuation of Introduction to C++ Programming, Part One. We strongly recommend that if you are interested in this tutorial, you also register for Parts One, Three, and Four.

Introduction to C++ Programming, Part Three (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Wednesday, June 20, 10:00am – 12:00pm

This tutorial is a continuation of Introduction to C++ Programming, Part Two. We strongly recommend that if you are interested in this tutorial, you also register for Parts One, Two, and Four.

Introduction to C++ Programming, Part Four (Hands‐on)

Instructor: Brian Gregor (bgregor@bu.edu)

Thursday, June 21, 10:00am – 12:00pm

This tutorial is a continuation of Introduction to C++ Programming, Part Three. We strongly recommend that if you are interested in this tutorial, you also register for Parts One, Two, and Three.

Introduction to Perl, Part One

Instructor: Tim Kohl (tkohl@bu.edu)

Monday, June 25, 1:00pm – 3:00pm

Perl is a powerful and versatile programming language that can be used for a wide variety of programming tasks, including, but not limited to, text/data processing, system administration, and Web applications. Combing elements of C, Unix shell scripting languages, as well as text-processing utilities such as sed and awk, Perl can be used for both large scale projects and for small applications. Some experience in a command line environment (e.g. Unix) is helpful, but the basics of Perl are simpler than those of other languages making it accessible to a new programmer. Attending our Introduction to Linux tutorial or equivalent background is recommended. Please remember to sign up for all four sessions to complete the tutorial.

Introduction to Perl, Part Two

Instructor: Tim Kohl (tkohl@bu.edu)

Tuesday, June 26, 1:00pm – 3:00pm

This tutorial is a continuation of Introduction to Perl, Part One. We strongly recommend that if you are interested in this tutorial, you register for Parts One, Three, and Four as well.

Introduction to Perl, Part Three

Instructor: Tim Kohl (tkohl@bu.edu)

Wednesday, June 27, 1:00pm – 3:00pm

This tutorial is a continuation of Introduction to Perl, Part Two. We strongly recommend that if you are interested in this tutorial, you register for Parts One, Two, and Four as well.

Introduction to Perl, Part Four

Instructor: Tim Kohl (tkohl@bu.edu)

Thursday, June 28, 1:00pm – 3:00pm

This tutorial is a continuation of Introduction to Perl, Part Three. We strongly recommend that if you are interested in this tutorial, you register for Parts One, Two, and Three as well.

Register

Data Analysis Tutorials

Introduction to SAS (Hands‐on)

Instructor: Jack Chan (jack@bu.edu)

Wednesday, May 23, 1:00pm – 2:00pm

SAS (Statistical Analysis System) is one of the most powerful statistical packages available on any computer platform. This tutorial will introduce you to SAS on the desktop.

After completing this tutorial, you will be able to:
  • access SAS on Windows
  • create, edit, and save program files containing SAS commands
  • obtain printed output
  • create, run, and modify your own programs

Introduction to SPSS (Hands‐on)

Instructor: Jack Chan (jack@bu.edu)

Wednesday, May 23, 2:00pm – 3:00pm

SPSS (Statistical Package for the Social Sciences) is a widely used program for analyzing data. SPSS uses windows and dialog boxes to manipulate data and perform statistical analyses. This hands-on tutorial will introduce you to the basics of SPSS and will give you one hours’ practice using SPSS on Microsoft Windows.

After completing this tutorial, you will be able to:
  • enter data into SPSS
  • use SPSS to transform data
  • use SPSS to perform basic statistical analyses

Introduction to MATLAB (Hands‐on)

Instructor: Shaohao Chen (shaohao@bu.edu)

Friday, May 25, 10:00am – 12:00pm

MATLAB (MATrix LABoratory) is a numerical computing environment developed by MathWorks, Inc. In short, MATLAB is a highly optimized interpreted programming language designed for intuitive and fast development of scientific computing software. This “hands-on” tutorial will introduce the MATLAB programming environment and the basic tools you will need to write your own MATLAB programs. Topics include matrix variables and operations, reading/writing data, plotting, loops, conditional statements, scripts, and functions.

No prior programming experience in any language is required to attend this course.

Introduction to R (Hands‐on)

Instructor: Katia Oleinik (koleinik@bu.edu)

Friday, May 25, 1:00pm ‐ 3:00pm

R is the most powerful, rapidly developing, highly reliable, open source statistical language. It is widely used among statisticians for the development of statistical software and for data analysis. New features appear every few months.

This tutorial introduces the R environment for statistical computing and will cover the following topics:
  • operators and arithmetic operations
  • atomic types, variable rules and built-in constants
  • scalar and vector function overview
  • working with data (workspace setup as well as reading, creating, exploring, and saving data)
  • working with R data types (vectors, matrices, lists, data frames)
  • working with script files
  • installing and loading R extension packages and getting help
  • overview of functions for data analysis
After completing this tutorial you will:
  • know the basics of the R environment.
  • get a solid understanding of various data types and objects used in R.
  • be able to create, load and analyze data.
  • find appropriate functions and get necessary help and examples for these functions.

Graphics in R (Hands‐on)

Instructor: Katia Oleinik (koleinik@bu.edu)

Wednesday, May 30, 1:00pm ‐ 3:00pm

R provides extensive and powerful graphics options that allow for the production of publication-ready, high quality diagrams, and plots. This tutorial introduces R graphics libraries and functions.

After completing this tutorial you will:
  • understand what to expect from R’s graphics capabilities.
  • be able to create, modify, and customize graphs and plots used in statistical analysis.
  • find appropriate libraries, download, and use them for your visualization needs.

Prerequisite: If you are new to the R environment we strongly recommend that you also register for the “Introduction to R” tutorial.

Programming in R (Hands‐on)

Instructor: Katia Oleinik (koleinik@bu.edu)

Friday, June 1, 1:00pm ‐ 3:00pm

This tutorial is the third in a series of R tutorials. It introduces basic R programming, debugging and optimization techniques and develops practices of proper and efficient R coding. It covers the following topics:

  • if-else and switch statements
  • types of loops (for, while, repeat) and loop control statements (next, break)
  • user functions and argument definitions
  • local and global variables
  • apply function family
  • sourcing, timing, compilation and debugging
  • code profiling and optimization

Prerequisite: We strongly recommend that you also register for the “Introduction to R” tutorial if you are new to the R environment.

R Code Optimization

Instructor: Katia Oleinik (koleinik@bu.edu)

Friday, June 8, 1:00pm ‐ 3:00pm

This tutorial is primarily aimed at those who have some experience working in a Linux environment and programming in R. The topics covered in this tutorial:

  • debugging and profiling R code
  • choosing the right functions to speed-up your code
  • parallelization techniques
  • tuning your code for faster performance on the SCC cluster

Python for Data Analysis (Hands‐on)

Instructor: Katia Oleinik (koleinik@bu.edu)

Friday, June 8, 10:00am – 12:00pm
Friday, June 15, 10:00am – 12:00pm

This tutorial will introduce the basics of Data Analysis with Python and its powerful libraries such as Pandas and Matplotlib.

What you will learn:
  • Importing and Exporting the data
  • Basic data processing, cleaning, and manipulation
  • Basic inferential statistical analysis
  • Data Visualization techniques

Introduction to Databases

Instructor: Yun Shen (yshen16@bu.edu)

Monday, June 11, 10:00am – 12:00pm

The main goal of this tutorial is to give attendees an overall picture of what databases are, how they work, and what they can offer you. We will cover the key concepts of a database and its management system, such as relational vs. non-relational, primary and foreign keys, tables, queries, SQL , DDL/DML, ACID, etc. Throughout the tutorial, we will use examples to help illustrate the concepts better. At the end, we may talk about some common database design principles and their typical application scenarios, and some new trends in database technology.

Register

High Performance Computing Tutorials

MATLAB for High-Performance Computing (Hands-on)

Instructor: Shaohao Chen (shaohao@bu.edu)

Tuesday, May 29, 1:00pm – 3:00pm

MATLAB programs can be exceptionally fast if they are well-designed, and painfully slow if not. Fortunately, it does not take a professional programmer to write an efficient MATLAB program or to take advantage of multi-core processors and computer clusters. This tutorial will introduce (1) using MATLAB on the BU SCC, and (2) optimizing MATLAB codes. The first part will cover how to use the MATLAB platform remotely and how submitting batch jobs for MATLAB works. In the second part, some useful skills for removing unnecessary computation and optimizing memory usage will be introduced. The skills you learn should enable you to solve bigger problems faster using MATLAB.

MATLAB Parallel Computing Toolbox (Hands‐on)

Instructor: Shaohao Chen (shaohao@bu.edu)

Thursday, May 31, 1:00pm – 3:00pm

The MATLAB Parallel Computing Toolbox allows you to write programs that leverage multi-core processors, GPUs, and computer clusters by dividing up work between independent cores. Converting serial MATLAB applications to parallel MATLAB applications usually requires few code modifications and no programming in a low-level language. This tutorial will introduce MATLAB parallel processing tools, such as parfor, spmd, and distributed array types. The skills you learn should enable you to solve bigger problems faster using MATLAB.

Basic knowledge of MATLAB is assumed.

Register

Visualization Tutorials

Neuroimaging on the SCC (Hands‐on)

Instructor: Dustin Clark (clarkdc@bu.edu)

Tuesday, June 26, 10:00am – 12:00pm

This tutorial will introduce Boston University’s Shared Computing Cluster (SCC) for use with Magnetic Resonance (MR) neuroimaging methods. It will address basic concepts in MR neuroimaging and give investigators the background required to start or optimize their research. We will work hands-on with the SCC to highlight the wide variety of neuroimaging tools available on the SCC and how to effectively utilize them for high-performance computing. Software covered includes FreeSurfer, FSL, AFNI, MRIcron, Nipype, MATLAB, SPM, and CONN. Topics covered include loading data onto the SCC, project management (directory structure/permissions), unpacking DICOMs, batch processing, and interactive environments (VNC & VirtualGL/OpenGL). It is recommended that you attend the “Introduction to BU’s SCC” tutorial if you are not a regular user of the SCC.

Introduction to FreeSurfer (Hands‐on)

Instructor: Dustin Clark (clarkdc@bu.edu)

Thursday, June 28, 10:00am – 12:00pm

This tutorial is a guided walkthrough of FreeSurfer’s Workshop on Boston University’s Shared Computing Cluster (SCC). FreeSurfer is a neuroimaging tool that reconstructs a 2D surface representation of the cortex, as opposed to the traditional 3D voxel representation in other neuroimaging software suites. It is recommended that you attend either the “Neuroimaging on the SCC” or “Introduction to BU’s SCC” tutorial if you are not a regular user of the SCC. Topics will include recon-all, brain editing, structural analysis, and functional resting state analysis.

Register