Get Help

Scientific Computing and Visualization Tutorials

Summer 2012 Tutorial Series

June 11, 2012 – June 29, 2012

The Scientific Computing and Visualization (SCV) 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 Scientific Computing Facility and its related scientific visualization resources.

Some tutorials have prerequisites. When applicable, these are listed in the course description. Many of the tutorials are hands-on, and are noted as such.

Registration is required, and free of charge. You may register for the entire series, or for only those tutorials which are of interest to you. Registration will require your BU Kerberos password; if you don’t have one and wish to attend please email us (scv-tutorial@bu.edu). Most sessions will be held at 111 Cummington St., Room B27, but “Introduction to Maya” will be held at the CAS Computer Lab, 685 Commonwealth Avenue, Room 327.

Please note that B27 is in the basement of 111 Cummington Street. We recommend entering through the door labeled “College of Arts & Sciences – Department of Computer Science – Department of Mathematics & Statistics” and then either: taking the elevator immediately on your right; or descending via the stairs down the hall to your right.

If you have questions about the tutorials, please contact us (scv-tutorial@bu.edu).

If you try to sign up for a tutorial and find that it is full, please send email to scv-tutorial@bu.edu and we will do our best to accommodate you.

 

Tutorial Descriptions and Times

Computer Programming Tutorials

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

Monday, June 11, 10:00am – 12: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. Prerequisite: knowledge of a Unix editor (emacs, vi, etc.). If you are not familiar with an editor but would like to take this tutorial, please contact Robert Putnam (putnam@bu.edu) to arrange for a brief editor tutorial.

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

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

This tutorial is a continuation of Introduction to C/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.

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

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

This tutorial is a continuation of Introduction to C/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 MATLAB (Hands‐on)

Tuesday, June 12, 2:00pm – 4: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. However, basic knowledge of linear algebra, such as matrix operations, is required.

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

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

This tutorial is primarily aimed at those people who have some experience programming in another language, such as MATLAB, and want to learn to read, write, and modify Fortran 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. Prerequisite: knowledge of a Unix editor (emacs, vi, etc.). If you are not familiar with an editor but would like to take this tutorial, please contact Kadin Tseng (kadin@bu.edu) to arrange for a brief editor tutorial.

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

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

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

Introduction to Fortran Programming, Part Three (Hands‐on)

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

This tutorial is a continuation of Introduction to Fortran 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.

High Performance Computing Tutorials

Tuning MATLAB Codes For Better Performance (Hands‐on)

Thursday, June 14, 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 (Hands‐on)

Friday, June 15, 2:00pm – 4:00pm

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 Katana Linux Cluster 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 MPI, Part One

Monday, June 18, 2:00pm – 4: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.

Introduction to MPI, Part Two

Tuesday, June 19, 2:00pm – 4: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 register for both sessions.

Code Tuning (Hands‐on)

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

We all hate waiting, whether it’s standing in line at the grocery store or trying to get our code to finish running before the paper deadline. In this tutorial we won’t tackle the grocery line problem, but we will examine methods to evaluate and improve codes’ performance. In the first part of the tutorial we will look at a variety of timers and profilers for determining where the CPU-intensive parts of the code lie. Methods for improving code performance will then be examined. The second part of the tutorial will be a hands-on session in which we will take a sample C or Fortran code and evaluate and improve its performance. Prerequisite is some working knowledge of C or Fortran. Basic knowledge of Unix/Linux will also be helpful.

Visualization Tutorials

Introduction to Scientific Visualization

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

This tutorial gives a brief introduction to techniques and issues involved in scientific visualization, followed by information on graphics software and hardware resources administered by BU’s Scientific Computing and Visualization Group.

Graphics Programming in C/C++: OpenGL (Hands-on)

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

OpenGL (Open Graphics Library) is a software interface to graphics hardware. The interface consists of over 250 different function calls which can be used to draw complex two and three-dimensional scenes from simple geometric primitives such as points, lines, and polygons. There are also routines for rendering the scenes with control over lighting, object surface properties, transparency, anti-aliasing and texture mapping. OpenGL is designed as a streamlined, hardware-independent interface to be implemented on many different graphics hardware platforms. It is the most widely used, supported, and best documented 2D/3D graphics API.

This hands-on tutorial will give an introduction to graphics programming using OpenGL, We will cover the basics of: interfacing with the windowing system, color, lighting, surface properties, texture mapping, and transforms. Working knowledge of C or C++ in a Linux environment is required to attend this course.

Scientific Visualization Using ParaView (Hands‐on)

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

ParaView is an open‐source, multi‐platform data analysis and visualization application built on top of VTK. ParaView offers non‐programmers much of the capability of VTK without requiring them to write programs. Through exploration and interaction users can quickly build visualizations to analyze their data using qualitative and quantitative techniques.

This tutorial will present a hands‐on introduction to ParaView. Attendees will get started using this powerful interactive visualization package, and will be guided through the most commonly used visualization techniques.

During this tutorial we will cover the ParaView visualization pipeline, ParaView data types, the ParaView user interface, and common visualization techniques such as Color Mapping, Cutplanes, Contours/Isosurfaces, Hedgehogs, Oriented Glyphs, and Streamlines.

Graphics Programming in C/C++: OpenSceneGraph (Hands-on)

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

OpenSceneGraph (OSG) is a well-established open source scene graph toolkit supporting high-performance 3D graphics, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modeling. Written entirely in Standard C++ and OpenGL, it runs on a variety of operating systems including Microsoft Windows, Mac OS X, Linux, IRIX, Solaris and FreeBSD. It supports large databases, particle effects, shadows, texture map font rendering, bulk culling and many other advanced rendering functionalities.

This tutorial will present a hands-on introduction to OpenSceneGraph. We will learn how to draw basic geometric objects, load a scene from a file, manage the scene with transformations and apply various rendering effects. Working knowledge of C or C++ in a Linux environment is required to attend this course.

Scientific Visualization Using VTK (Hands‐on)

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

The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization. VTK consists of a C++ class library and several interpreted interface layers including Tcl, Java, and Python.

This tutorial will present a hands‐on introduction to the Visualization Toolkit (VTK) using C++. Attendees will get started using this powerful scientific visualization development software and will be guided through the most commonly used visualization techniques.

During this tutorial we will cover the VTK visualization pipeline, VTK data types, the basics of VTK scripting, and common visualization techniques such as Color Mapping, Cutplanes, Contours/Isosurfaces, Hedgehogs, Oriented Glyphs, and Streamlines.

Diagrams, Graphs, and PowerPoint: How to Create an Effective Presentation (Hands-on)

Monday, June 25, 2:00pm – 4:00pm

This hands-on, tools-based tutorial is oriented toward researchers and covers common topics and techniques used in creating PowerPoint presentations. Creating content such as simple diagrams, plots, and annotation will be covered as will the procedure for including video and audio.

Scientific Visualization Using MATLAB (Hands-on)

Tuesday, June 26, 2:00pm – 4: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)

Wednesday, June 27, 4:00pm – 6:00pm

Autodesk Maya 2013 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.

Graphics and Images for Publication and Presentation

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

This tutorial will introduce you to the tools and topics to consider when you are preparing graphics and images for your professional publications, presentations, and/or the web. You will be shown some of the important considerations to think about when generating and submitting images. Topics will include image quality, resolution, raster and vector file formats, and others. Requirements from scientific publications and conferences will be addressed.

Practical examples using scientific visualization, plotting, and image manipulation software such as MATLAB, Excel, and Photoshop will be demonstrated.