Fall 2015 Tutorial Series

September 3, 2015 – October 2, 2015

The Research Computing Services (RCS) group 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.

In addition to covering concepts, techniques, and tools which researchers may use in their own computing environments, these tutorials are designed to help you make effective use of the Boston University Shared Computing Cluster (SCC). We can also deliver extra, or customized, tutorial sessions to your group or lab. Please contact us at rcs@bu.edu if you are interested.

Charles River Campus Tutorials

BU Medical Campus (BUMC) Tutorials

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

All Charles River campus sessions will be held in MCS B27 at 111 Cummington Mall (with one exception: Introduction to Maya will be held at the CAS Computer Lab, 685 Commonwealth Avenue, room 327.) To access MCS B27, we recommend that you enter 111 Cummington Mall via the “College of Arts & Sciences – Department of Computer Science – Department of Mathematics & Statistics” entrance, and then either: take the elevator immediately on your right; or descend the stairs down the hall to your right.

The BU Medical Campus (BUMC) sessions will be held in the “L” building at 72 E Concord St using room number L1110. The “L” building is the BUMC main instructional building and the 11th floor is accessible by elevator. The tutorial room is at the end of the hall on the left.

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


Tutorial Descriptions and Times

Research Computing Basics Tutorials

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

Thursday, September 3, 10:00am – 12:00pm
Tuesday, September 8, 3:00pm – 5:00pm, BUMC L1110
Wednesday, September 9, 1:00pm – 3: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)

Thursday, September 3, 1:00pm – 3:00pm
Tuesday, September 8, 1:00pm – 3:00pm, BUMC L1110
Wednesday, September 9, 10:00am – 12: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.

Advanced Usage of the SCC

Tuesday, September 8, 10:00am – 12:00pm
Thursday, September 10, 2:00pm – 4:00pm, BUMC L1110

This tutorial will provide some 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.

Computer Programming Tutorials

Introduction to Perl, Part One

Friday, September 11, 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

Monday, September 14, 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

Wednesday, September 16, 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

Friday, September 18, 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.

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

Monday, September 21, 1:00pm – 3:00pm
Monday, September 21, 6:00pm – 8:00pm

This tutorial is primarily aimed at those who have some experience programming in another language, such as MATLAB, and want to learn to read, write, and modify C codes in a Unix environment. Although previous programming experience would be helpful, it is not mandatory. In this tutorial we will cover basic syntax, and write, compile, and run some simple codes. Basics of makefiles will also be covered. Please remember to sign up for all four sessions to complete the tutorial.

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

Tuesday, September 22, 1:00pm – 3:00pm
Tuesday, September 22, 6:00pm – 8:00pm

This tutorial is a continuation of Introduction to C Programming, Part One (Hands‐on) described above. 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)

Wednesday, September 23, 1:00pm – 3:00pm
Wednesday, September 23, 6:00pm – 8:00pm

This tutorial is a continuation of Introduction to C Programming, Part Two (Hands‐on) described above. 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)

Thursday, September 24, 1:00pm – 3:00pm
Thursday, September 24, 6:00pm – 8:00pm

This tutorial is a continuation of Introduction to C Programming, Part Three (Hands‐on) described above. We strongly recommend that if you are interested in this tutorial, you also register for Parts One, Two, and Three.

Introduction to Python for Non-programmers, Part One (Hands‐on)

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

Prerequisite: zero programming experience. We will go slowly so that everyone understands programming concepts, like loops and functions.

This is an introduction to the essential features of Python. This tutorial includes a brief introduction to basic types (Integer, Float, String, and Boolean), if-statements, functions, lists, dictionaries, loops, and modules. We’ll look at some simple interactive tasks. After this tutorial you’ll be ready to explore all the amazing modules Python has to offer. We will work on examples in a web browser, so NO experience with Linux or the command line is necessary.

This is a two part tutorial, please sign up for both parts.

Introduction to Python for Non-programmers, Part Two (Hands‐on)

Monday, September 28, 10:00am – 12:00pm

This tutorial is a continuation of Introduction to Python for Non-Programmers, Part One. Please make sure to sign up for that session as well. We will complete the introduction to programming and the Python language.

Navigating Python (Hands‐on)

Wednesday, September 30, 10:00am – 12:00pm

This tutorial will introduce the Python programming language. It assumes you have some programming experience, and only a brief part of the tutorial will be dedicated to actual programming. If you need a more gentle introduction to programming, please attend “Introduction to Python for Non-programmers”. Other topics will include how to install Python on your personal computer, how to install and access third-party Python packages, how to use Python on the SCC, and how to find Python resources that will help your research. This tutorial will be part lecture style and part interactive, independent work. If you have a laptop and you want to install Python, please bring it and I will be available to help. If you want to work on a project or tutorial, there will be time for this too and I will be available to answer questions.

Plotting in Python with Matplotlib (Hands-on)

Friday, October 2, 10:00pm – 12:00pm

Prerequisites: Python experience at least equal to that provided by our Introduction to Python for Non-Programmers tutorial and familiarity with using Linux from the command-line.

This is a hands-on tutorial which will teach you to do plotting with Matplotlib, Python’s most popular plotting library. We will explore how to make a series of simple plots, both interactively and in scripts. We will discuss some of the more advanced features, including animations and interactive plots. This tutorial will also show you how you can customize every detail of your plots, such as the font color of the tick marks or the location of the legend.

A Survey of Scientific Python

Friday, October 2, 1:00pm – 3:00pm

Prerequisite: Python experience is not required, but it is STRONGLY recommended.

This tutorial will introduce you to some of Python’s most commonly used Scientific packages, including Numpy, Matplotlib, Scipy, ipython, sympy, and Pandas. These can be used in any discipline to do research. We will provide examples of each and discuss some of their advantages and pitfalls. This is not a hands on tutorial.

Mathematics and Data Analysis Tutorials

Introduction to MATLAB (Hands‐on)

Tuesday, September 8, 3:30pm – 5:30pm
Wednesday, September 9, 3:30pm – 5:30pm

MATLAB (for MATrix LABoratory) is a numerical computing environment developed by MathWorks, Inc. MATLAB is essentially an interpretive high level language that does not require data type declaration or compilation. It can be used to implement mathematical computations such as matrix manipulations with existing linear algebra packages. Many plotting and visualization tools are available as an integral part of MATLAB. MATLAB operations are very intuitive, user-friendly, and are used primarily in an interactive environment to enable fast proto-typing of research activities and efficient software development. Many highly specialized applications, such as Mathematical Finance, Bioinformatics, and Image Processing, are also available as toolboxes.

In this tutorial, many of the basic MATLAB operations, including basic 2D and 3D graphics, will be introduced. You will learn many of these operations hands-on. No prior programming experience in any languages is required to attend this course.

Introduction to R (Hands‐on)

Friday, September 11, 10:00am – 12:00pm
Tuesday, September 15, 10:00am – 12:00pm
Monday, September 21, 2:00pm – 4:00pm, BUMC L1110

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)

Monday, September 14, 10:00am – 12:00pm
Thursday, September 17, 10:00am – 12:00pm
Tuesday, September 22, 2:00pm – 4:00pm, BUMC L1110

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)

Monday, September 21, 10:00am – 12:00pm
Tuesday, September 22, 10:00am – 12:00pm
Wednesday, September 23, 2:00pm – 4:00pm, BUMC L1110

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 (Hands‐on)

Wednesday, September 23, 10:00am – 12:00pm
Thursday, September 24, 2:00pm – 4:00pm, BUMC L1110

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

Introduction to SAS (Hands‐on)

Thursday, September 10, 11:00am – 12:00pm
Friday, September 18, 10:00am – 11:00am
Friday, September 25, 2:00pm – 3: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)

Thursday, September 10, 12:00pm – 1:00pm
Friday, September 18, 11:00am – 12:00pm
Friday, September 25, 3:00pm – 4: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

High Performance Computing Tutorials

Introduction to GPU Programming

Monday, September 14, 3:30pm – 5:30pm

Originally designed to render computer graphics, GPUs now provide the ability to accelerate scientific applications traditionally handled by CPUs. This tutorial is an introduction to general programming using GPUs. We will explore the applications that would benefit the most from GPU acceleration, go over different languages and software tools available on our Linux cluster, and discuss their benefits for different types of applications.

Tuning MATLAB Codes For Better Performance (Hands‐on)

Wednesday, September 16, 3:30pm – 5:30pm

Being an interpretive language, MATLAB provides many features to enhance the ease‐of‐use of interactive operations. However, these features may have the adverse effect of degrading computational performance. This is especially pronounced on jobs that require long run times and large memory. This tutorial identifies these pitfalls and demonstrates ways to improve user code performance.

The prerequisite for this course is a basic knowledge of MATLAB, either developed on your own or from our Introduction to MATLAB tutorial.

Introduction to CUDA

Thursday, September 17, 3:30pm – 5:30pm

This tutorial will show you how to do calculations with CUDA C/C++, an API for programming massively parallel GPUs.

In this tutorial you will learn to do the following tasks in CUDA:

  • Write a basic “Hello, World!” program
  • Write and launch CUDA C kernels
  • Manage GPU memory
  • Run parallel kernels in CUDA C
  • Parallel communication and synchronization
  • Race conditions and atomic operations

C/C++ programming experience is required for this tutorial. You do not need prior parallel programming or graphics experience.

MATLAB Parallel Computing Toolbox

Monday, September 21, 3:30pm – 5:30pm

MATLAB Parallel Computing Toolbox is now available to Boston University’s MATLAB users. This toolbox enables users to solve computationally intensive and data intensive problems on multi‐cored personal computers, laptops, and especially the Shared Computing Cluster (SCC) managed by the Research Computing Services group of Information Services & Technology.

Parallel processing operations such as parallel for‐loops, parallel numerical algorithms, and message‐passing functions let you implement task‐ and data‐parallel algorithms in MATLAB. Converting serial MATLAB applications to parallel MATLAB applications usually requires few code modifications and no programming in a low‐level language.

The prerequisite for this course is a basic knowledge of MATLAB, either developed on your own or from our Introduction to MATLAB tutorial.

Introduction to OpenMP/OpenACC

Wednesday, September 23, 3:30pm – 5:30pm

The OpenMP and OpenACC application program interfaces (APIs) provide simple and flexible tools to develop parallel software for shared-memory multiprocessor systems and GPU accelerators. The two APIs share a similar basic approach – the programmer inserts directive statements into the code to assist the compiler in mapping computation onto the CPUs or GPUs. The beauty of this approach is that it is often possible to create efficient parallel code with only minor modifications to a serial code. This tutorial covers the major features of the OpenMP and OpenACC through discussion, examples in C and Fortran, and short hands-on exercises.

Prerequisites: This course is for those who are new to parallel programming with OpenMP and OpenACC, but have some experience in C or Fortran programming. Understanding of parallel programming in general is helpful, but not required.

Introduction to MPI, Part One

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

On contemporary computers, speeding up computations is most often achieved by employing multiprocessors concurrently on shared‐memory multi‐cored nodes or multiprocessor distributed‐memory clusters. MPI is a library of communication functions to enable and enhance multiprocessing on these computer architectures. This tutorial introduces many of the basic MPI functions through practical examples. Working knowledge of C or Fortran is required to attend the course. Basic knowledge of Unix/Linux will be helpful. MPI Part Two is a sequel to MPI Part One while MPI Part Three is a hands-on practice session for both MPI Part One and Part Two.

Introduction to MPI, Part Two

Thursday, October 1, 1:00pm – 3:00pm

This tutorial is a continuation of Introduction to MPI, Part One described above. We strongly recommend that if you are interested in this tutorial, you also register for Part One.

Introduction to MPI, Part Three (Hands-on)

Thursday, October 1, 3:00pm – 5:00pm

This tutorial is a hands-on practice session to the Introduction to MPI tutorial, Parts One and Two. Covered in the first two tutorial sessions are basics on how to use the Message Passing Interface library to program parallel computing applications on distributed memory and shared memory computers.

In this third, hands-on, session, you will be able to put into use many of the library functions learned in MPI One & Two to compute matrix multiplies in parallel.

Visualization Tutorials

Scientific Visualization Using MATLAB (Hands-on)

Thursday, September 17, 1:00pm – 3:00pm

MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in common mathematical notation. MATLAB has facilities for producing a wide variety of plots, graphs, surfaces, volumes, and specialized visualizations for scientific data.

This tutorial will present a hands-on introduction to producing scientific graphics with MATLAB. We will begin with examples of various plotting methods, including surface plots, slices, contours, isosurfaces, oriented glyphs, streaklines, etc. In addition, we will cover annotation, color mapping, MATLAB’s underlying graphics model, and the production of high-resolution images.

Introduction to Maya (Hands‐on)

Monday, September 28, 6:00pm – 9:00pm

Autodesk Maya is a powerful state-of-the-art 3D modeling and animation software package. It has a wide variety of modeling, animation, special effects, and rendering tools. It has a customizable graphical user interface as well as a scripting language for optimal flexibility in problem solving and production.

In this tutorial we will show you how to get started using Maya. We will teach you the basic workflow for modeling, creating and applying materials, animation, and rendering. We will also cover the basics of importing scientific geometric data and creating high quality renderings and animations from it.

Ordinarily Maya is considered to have a steep learning curve, but in this tutorial we will present a workflow which will provide a sound foundation for pursuing more complex projects.

Note the different location for this tutorial. It will be held at the CAS Computer Lab, 685 Commonwealth Avenue, Room 327.