I ended up cancelling this class due to low enrollment. I will try offering it again next year. Please let me know if you are interested in taking it in the future.
Course Date: April 9 – May 28th, 2015 Registration Fee: $650 (Regular), $325 (Student) Early Bird Rate: $550 (Regular), $225 (Student) Early Bird Deadline: February 28th, 2015 20% discount to all former students! Register Now!
Overview
Have you ever considered using a web-browser as the computational platform for your next code? Perhaps not. Yet, browser-based scientific computing is a real possibility thanks to recent adoption of SVG (Scalable Vector Graphics), introduction of the HTML5 <canvas> element, and general improvements in JavaScript performance. In fact, some of these technologies have been used regularly on the PIC-C blog. There are many benefits to developing browser-based simulation codes, including interactivity, data visualization, 3D rendering, and cross-platform support. In this course you will learn how to develop scientific applications that run in a web-browser, either as local files, or served from a web-site.
Course Objectives
This eight-week online class will introduce you to developing scientific codes using web technologies. We will cover the following:
Scalable Vector Graphics (SVG): SVG allows us to include shapes such as circles, polygons, and lines that can be easily manipulated with the mouse and modified with Javascript. We will use SVG to develop an interactive finite-element mesher (example).
2D Canvas: Canvas is a new element introduced in HTML5 that defines an area into which we can paint directly with Javascript. Unlike SVG, painting into canvas does not create new elements. Canvas can thus be used for rapid visualization of simulation results. We will use canvas to visualize results from an interactive solver of the diffusion equation (example).
WebGL: Canvas also supports 3D rendering with WebGL. We will learn how to create and manipulate 3D objects. Later on, we will use a server-based technology to reduce a 3D data set into isosurfaces that can be visualized on the client side.
Server Access: We typically utilize computational clusters for running large simulations. We will learn how to communicate with a server to launch a simulation, and how to use monitor and visualize the results on the client side.
Course Format
The course will consists of eight weekly sessions conducted through a mix of pre-recorded video and live “hands-on” sessions. All registered students will receive access to a student area where the course materials will be posted. These materials will include PDF slides, video lecture, and example source code. The live sessions will tentatively take place on Thursdays from 6:10 – 8:40pm US Eastern Time (GMT-5 hours) and will be conducted via Citrix® GoToMeeting. The first hour of each session will be devoted to a review of the lecture, and the rest will be used to answer your questions or to demonstrate more concepts. Recordings of these sessions will also be posted to the student area. The course will also include optional weekly homework assignments, which will need to be completed in order to receive a certificate of completion.
Course Outline
Thursday, April 09, 2015 (Javascript/HTML Review): We’ll start the course by reviewing HTML and Javascript concepts such as element ids, CSS style sheets, classes, and closure. We’ll develop a simple HTML/Javascript based GUI consisting of several tabs and form elements and we’ll learn how to interact with them using mouse or touch events.
Thursday, April 16, 2015 (Introducing SVG): In this lecture we’ll see how SVG (Scalable Vector Graphics) can be used to add arbitrary shapes to a webpage. We’ll develop a demo consisting of circles and lines that can be dragged around.
Thursday, April 23, 2015 (Interactive Mesh Generator): We’ll apply our newly-acquired SVG skills to develop an interactive, web-based 2D mesh generator. With this we’ll also introduce file input/output.
Thursday, April 30, 2015 (Introducing Canvas): Next we’ll switch to canvas, a new element introduced with HTML5 that also allows us to paint shapes on a webpage. We will see how to interact with a canvas, and how to use it show contoured field data.
Thursday, May 7, 2015 (2D diffusion solver): We will continue working with canvas, and will use it to develop our second scientific application. This one will solve the diffusion equation, allowing you to interactively introduce sources.
Thursday, May 14, 2015 (Rendering 3D objects with webGL): The canvas can also be used to show 3D objects using webGL. We will see how this works, and we’ll also see how to add a drag/drop area for visualizing VRML files.
Thursday, May 21, 2015 (GPU access): The HTML5 webGL canvas basically allows you to write code that will be executed on the graphics card. This means you can actually use this technology to shift some computations to the GPU. We’ll see how this is done.
Thursday, May 28, 2015 (Interacting with a web server): Until now, everything was done on the client side. In this lecture we’ll see how to interact with a web server. We’ll use our GUI from lecture 1 to develop a front-end allowing the user to submit and monitor jobs running on a computational server. We’ll also see how to generate charts with PHP and how to use VTK to process 3D data that can then be interactively visualized on the client side.
Instructor
The instructor, Dr. Lubos Brieda, is the founder and president of Particle In Cell Consulting, LLC, a Virginia-based company specializing in providing tools and services for the plasma physics and rarefied gas communities. Dr. Brieda has over 10 years of experience developing scientific simulation codes in fields such as electric propulsion, spacecraft contamination, space environment interactions, surface processing, and plasma medicine. His teaching experience includes the position of a Lecturer at the George Washington University.
Requirements
Since this is, after all, a programming course, all students are expected to have a working knowledge of programming concepts such as loops and if-statements, functions, and classes. The first seven lectures will utilize JavaScript and HTML. PHP will be used in the final lecture to demonstrate server-side scripting. The examples will be tested using Mozilla Firefox. Computer with internet access will be needed to access the lecture and course material. The videos will be posted as .mp4 files. The course will be conducted in English.