Summer 2015 Tutorial Series with the Research Computing Services group
Summer 2015 Tutorial Series
May 26, 2015 – June 19, 2015
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.
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 and its related scientific visualization resources. Faculty may contact us about custom tutorials for classes or research groups.
Charles River Campus Tutorials
- Research Computing Basics Tutorials
- Tue, May 26 1:00pm ‐ 3:00pm Introduction to BU’s Shared Computing Cluster (Hands‐on)
- Wed, May 27 10:00am ‐ 12:00pm Introduction to Linux (Hands‐on)
- Thu, May 28 1:00pm ‐ 3:00pm Advanced Usage of the SCC
- Computer Programming Tutorials
- Tue, May 26 3:30pm ‐ 5:30pm Introduction to Perl, Part One
- Thu, May 28 3:30pm ‐ 5:30pm Introduction to Perl, Part Two
- Tue, Jun. 2 3:30pm ‐ 5:30pm Introduction to Perl, Part Three
- Thu, Jun. 4 3:30pm ‐ 5:30pm Introduction to Perl, Part Four
- Tue, Jun. 2 6:00pm ‐ 8:00pm Introduction to C Programming, Part One (Hands‐on)
- Wed, Jun. 3 6:00pm ‐ 8:00pm Introduction to C Programming, Part Two (Hands‐on)
- Thu, Jun. 4 6:00pm ‐ 8:00pm Introduction to C Programming, Part Three (Hands‐on)
- Tue, Jun. 16 10:00am ‐ 12:00pm Introduction to Python for Non-programmers, Part One (Hands‐on)
- Wed, Jun. 17 10:00am ‐ 12:00pm Introduction to Python for Non-programmers, Part Two (Hands‐on)
- Fri, Jun. 19 10:00am ‐ 12:00pm Navigating Python (Hands‐on)
- Fri, Jun. 19 1:00pm ‐ 3:00pm Plotting in Python with Matplotlib (Hands-on)
- Mathematics and Data Analysis Tutorials
- Wed, May 27 1:00pm ‐ 2:00pm Introduction to SAS (Hands‐on)
- Wed, May 27 2:00pm ‐ 3:00pm Introduction to SPSS (Hands‐on)
- Thu, May 28 10:00am ‐ 12:00pm Introduction to MATLAB (Hands‐on)
- Tue, Jun. 2 10:00am ‐ 12:30pm Introduction to R (Hands‐on)
- Thu, Jun. 4 10:00am ‐ 12:30pm Graphics in R (Hands‐on)
- Tue, Jun. 9 10:00am ‐ 12:00pm Programming in R (Hands‐on)
- Thu, Jun. 11 10:00am ‐ 12:00pm R Code Optimization (Hands‐on)
- High Performance Computing Tutorials
- Tue, Jun. 2 1:00pm ‐ 3:00pm Introduction to MPI, Part One
- Wed, Jun. 3 1:00pm ‐ 3:00pm Introduction to MPI, Part Two
- Wed, Jun. 3 3:30pm ‐ 5:30pm Introduction to MPI, Part Three (Hands-on)
- Wed, Jun. 3 10:00am ‐ 12:00pm Tuning MATLAB Codes For Better Performance (Hands‐on)
- Wed, Jun. 10 3:30pm ‐ 5:30pm MATLAB Parallel Computing Toolbox
- Wed, Jun. 10 1:00pm ‐ 3:00pm Introduction to GPU Programming
- Wed, Jun. 17 1:00pm ‐ 3:00pm Introduction to CUDA
- Visualization Tutorials
- Wed, Jun. 3 2:00pm ‐ 5:00pm Introduction to Maya (Hands‐on)
- Wed, Jun. 10 10:00am ‐ 12:00pm Scientific Visualization Using MATLAB (Hands-on)
Register
BU Medical Campus (BUMC) Tutorials
- Research Computing Basics Tutorials
- Wed, May 27 1:00pm ‐ 3:00pm Introduction to BU’s Shared Computing Cluster (Hands‐on)
- Tue, Jun. 2 3:00pm ‐ 5:00pm Advanced Usage of the SCC
- Mathematics and Data Analysis Tutorials
- Mon, Jun. 1 3:00pm ‐ 5:30pm Introduction to R (Hands‐on)
- Thu, Jun. 4 3:00pm ‐ 5:30pm Graphics in R (Hands‐on)
- Mon, Jun. 8 3:00pm ‐ 5:00pm Programming in R (Hands‐on)
- Thu, Jun. 11 3:00pm ‐ 5:00pm R Code Optimization (Hands‐on)
You may register for as many tutorials as you like. Registration is required and is accessed with your BU Kerberos password.
All Charles River campus sessions will be held in MCS B27 at 111 Cummington St (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: taking the elevator immediately on your right; or descending 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 don’t have a Kerberos password, or if you find that a tutorial is full, or have any other questions, please send email to scv-tutorial@bu.edu.
Tutorial Descriptions and Times
Research Computing Basics Tutorials
Introduction to BU’s Shared Computing Cluster (Hands‐on)
Tuesday, May 26, 1:00pm – 3:00pm
Wednesday, May 27, 1:00pm – 3:00pm, BUMC L1110
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)
Wednesday, May 27, 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
Thursday, May 28, 1:00pm – 3:00pm
Tuesday, June 2, 3:00pm – 5: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.
Register
Computer Programming Tutorials
Introduction to Perl, Part One
Tuesday, May 26, 3:30pm – 5:30pm
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
Thursday, May 28, 3:30pm – 5:30pm
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
Tuesday, June 2, 3:30pm – 5:30pm
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
Thursday, June 4, 3:30pm – 5:30pm
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)
Tuesday, June 2, 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 three sessions to complete the tutorial.
Introduction to C Programming, Part Two (Hands‐on)
Wednesday, June 3, 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 Part One and Part Three.
Introduction to C Programming, Part Three (Hands‐on)
Thursday, June 4, 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 Part One and Part Two.
Introduction to Python for Non-programmers, Part One (Hands‐on)
Tuesday, June 16, 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)
Wednesday, June 17, 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)
Friday, June 19, 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, June 19, 1:00pm – 3: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.
Register
Mathematics and Data Analysis Tutorials
Introduction to SAS (Hands‐on)
Wednesday, May 27, 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)
Wednesday, May 27, 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)
Thursday, May 28, 10:00am – 12:00pm
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)
Monday, June 1, 3:00pm – 5:30pm, BUMC L1110
Tuesday, June 2, 10:00am – 12:30pm
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)
Thursday, June 4, 3:00pm – 5:30pm, BUMC L1110
Thursday, June 4, 10:00am – 12:30pm
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, June 8, 3:00pm – 5:00pm, BUMC L1110
Tuesday, June 9, 10:00am – 12: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 (Hands‐on)
Thursday, June 11, 3:00pm – 5:00pm, BUMC L1110
Thursday, June 11, 10:00am – 12: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
Register
High Performance Computing Tutorials
Introduction to MPI, Part One
Tuesday, June 2, 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
Wednesday, June 3, 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)
Wednesday, June 3, 3:30pm – 5:30pm
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.
Tuning MATLAB Codes For Better Performance (Hands‐on)
Wednesday, June 3, 10:00am – 12:00pm
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.
MATLAB Parallel Computing Toolbox
Wednesday, June 10, 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 Scientific Computing and Visualization 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 GPU Programming
Wednesday, June 10, 1:00pm – 3:00pm
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.
Introduction to CUDA
Wednesday, June 17, 1:00pm – 3:00pm
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.
Register
Visualization Tutorials
Introduction to Maya (Hands‐on)
Wednesday, June 3, 2:00pm – 5:00pm
Autodesk Maya 2015 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 unusual location for this tutorial. It will be held at the CAS Computer Lab, 685 Commonwealth Avenue, Room 327.
Scientific Visualization Using MATLAB (Hands-on)
Wednesday, June 10, 10:00am – 12: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.