Opportunity: NASA High Performance Fast Computing Challenge

NASA_logoFULL NOTICE HERE

Overview (from the site above)

Do you want to help aerospace engineers solve problems faster? Does the phrase “nonlinear partial differential equations used for unsteady computations” excite you? Do you want to try yourself with the complex computational software that NASA scientists use? This might be the challenge for you.

NASA’s Aeronautics Research Mission Directorate (ARMD) is responsible for developing technologies that will enable future aircraft to burn less fuel, generate fewer emissions and make less noise.  Every U.S. aircraft and U.S. air traffic control tower has NASA-developed technology on board. It’s why we like to say, NASA is with you when you fly!

We need to increase the speed of computations on the Pleiades supercomputer, specifically for computational fluid dynamics, by orders of magnitude, and could use your help!

This isn’t a quest for the faint of heart. As a participant, you’ll need to gain access to FUN3D software through an application process with the US Government.  Although this software usually runs on the Pleiades supercomputer, you can download and run it locally after applying HERE.

 

Background

NASA’s Aeronautics Research Mission Directorate (ARMD) is tasked with innovating at the cutting edge of aerospace.  Their work includes Innovation in Commercial Supersonic Aircraft, Ultra-efficient Commercial Vehicles and Transitioning to Low-Carbon Propulsion while also supporting the development of launch vehicles and planetary entry systems.  These strategic thrusts are supported by advanced computational tools, which enable reductions in ground-based and in-flight testing, provide added physical insight, enable superior designs at reduced cost and risk, and open new frontiers in aerospace vehicle design and performance.

The advanced computational tools include the NASA FUN3D software which is used for solving nonlinear partial differential equations, known as Navier-Stokes equations, used for steady and unsteady flow computations including large eddy simulations in computational fluid dynamics (CFD). Despite tremendous progress made in the past few decades, CFD tools are too slow for simulation of complex geometry flows, particularly those involving flow separation and multi-physics (e.g. combustion) applications. To enable high-fidelity CFD for multi-disciplinary analysis and design, the speed of computation must be increased by orders of magnitude.

NASA is seeking proposals for improving the performance of the NASA FUN3D software running on the NASA Pleiades supercomputer.  The desired outcome is any approach that can accelerate calculations by a factor of 10-1000x without any decrease in accuracy and while utilizing the existing hardware platform.

More info HERE.

 

 

A random walk toward a net positive

by Derek Kane, Deka Research and Development  dgkane64@gmail.com

Today, I am investigating whether magnetic resonance imaging can evaluate cell viability as we attempt to grow replacement organs: hearts, lungs, kidneys, etc., for patients who need transplants. I believe the child I was at five would approve. Of course, I also have a two hour meeting this afternoon to read C++ code to ensure that it not only performs its intended task, but also conforms to DEKA’s formatting standards. Even the coolest job, and I have a very cool job, includes drudgery and paperwork.

Avoiding boredom was my earliest career goal. My undergraduate degree was mechanical engineering, and my brother got me a job with him at Itek Optical Systems. Itek made cameras and telescopes, largely for the Department of Defense. The engineering challenges were fascinating, but the analysis and algorithm aspects of the work excited me much more than traditional mechanical engineering. However, my lack of deep mathematical training limited the analyses and algorithm development I could handle. At this job, I also noticed two career paths: one group of older engineers became middle managers whose work looked unbearably dull and who seemed very vulnerable to layoffs. A smaller group of engineers, including my boss, served as technical experts. When a new and innovative solution was required, or when a program stalled because a physical or computational challenge could not be overcome, these experts were consulted. I wanted this job.

I decided I also wanted to attend graduate school in mathematics. The deeper understanding of mathematics would enable me to comprehend and address a wider range of analytic and algorithmic problems. Additionally, a PhD provides gravitas when working with other engineers in industry. An engineer with a bachelor’s degree must have a large volume of high quality and high visibility work, before their opinions are considered seriously outside of the company where they work. While there are a great many fools who have doctorates, when you are sitting around a table with several PhDs, it is handy to have your own so you are part of the club.

To prepare for graduate school, I took one or two undergraduate math classes every semester for two and a half years while working. In the process, I discovered that math was beautiful as well as useful. The University of Michigan accepted me into their graduate program, and I studied algebraic group theory, intending to become a professor after graduation. Graduate school also proved an ideal environment to enjoy my two small children. However, as I approached my defense the academic job market was drying up. I could look forward to a series of one or two year positions before finding a tenure-track job. With two children, this prospect was unattractive, so I decided to return to industry.

My previous experience with optics enabled me to join a laser-based project at Lockheed Martin. This project offered the opportunity to work with inertial systems, and this experience made me attractive to Deka Research & Development. Deka was developing the iBot (an inertially stabilized wheelchair capable of traversing rough terrain, curbs and stairs) and the Segway (an inertially stabilized, two-wheel vehicle).

Dean Kamen, the founder of Deka, feels that we should only be working on jobs that are hard and that positively affect many people. The range of work I get to join is varied and exciting: mobility for people who can’t walk, prosthetics for people who have lost arms, clean water for people who will never get utilities from their governments, hearing improvement, safe delivery of drugs, improved dialysis for people with kidney failure, several projects I cannot talk about, and most recently growing new organs for people in need of transplants.

The range of disciplines this allows me to sample is equally wide ranging: thermodynamics, electro-magnetics, computer modeling of liquids, exotic signal processing, statistics, optics, big data analysis, synthetic biology, human-machine interfaces, colloidal flows, causality, complexity, numerical solution of differential equations, etc. Mathematical training allows me to move from discipline to discipline, because at its core, each of these topics depends upon a quantitative approach to understanding data, modeling relationships, and predicting outcomes. Grad school supplemented this flexibility by demonstrating that hard work and research can overcome difficult technical problems. You should leave grad school feeling that if another human has managed to solve a problem and write it down, then you can read their work and understand it.

Today, it is almost twenty-one years since I defended my thesis. I anticipate another twenty-one years of professional life, although I am aiming for at least forty more years. At the beginning of my career, my primary concerns were staying employed and working on exciting projects. Now, I am becoming concerned with why I do the work I do, and whether this work is a net good for the world.

I left the defense industry seventeen years ago, primarily for the selfish reason that it had become wearing and grating to put up with the intrusiveness of security clearances, and because commercial industry was tackling more interesting technical challenges than defense. It is absolutely true that there are sound moral arguments for working for defense, but I never really thought about the ethical justification of my work. I have been extraordinarily fortunate to land at a company where I am sure that my work is contributing to society.

I am largely comfortable with what I worked on, but I regret not seriously considering the moral implications of my early projects. Young mathematicians have complex lives; they need to support families, establish reputations and orient themselves in a world bursting with opportunities. However, it is also very valuable to develop an understanding of the non-technical world: history, culture and philosophy. This helps us avoid choices that make it hard to sleep as we get older. Older mathematicians have reputations, authority and time to reflect. It is morally incumbent that we provide opportunities for young mathematicians, guide them to interesting work, and protect them from external forces who would inappropriately exploit their talents.

CC BY-NC-ND

Academia trained me for a BIG career

 OLYMPUS DIGITAL CAMERA
by Peter D. Horn

I am honored to share some career advice with the young and mathematically-inclined. When I fit that description, I felt a lack of diversity in the opinions and advice I was hearing from my mentors. This wasn’t their fault, but mine. Classic case of selection bias, as I only sought advice from my professors.  My first recommendation is to connect with many math folks who have walked a variety of paths to get a sense of what is out there (reading the posts on this blog is a great first step!).

When I was finishing up my math major, I felt there was more math for me to learn, and I went on to get a PhD in low-dimensional topology. As a grad student, I was encouraged to pursue a postdoc. By the time I was deep into my postdoc, I had a tenure-track job in my sights. It wasn’t until my third year into a tenure-track position that I evaluated my career choice and realized I would be happier doing something else.

I reached out to a few friends from grad school who went into government and industry, as well as a couple former academics who transferred to tech and finance jobs.  I did a little research to see what was out there, and found “data science” to be a broad enough field to entertain my intellectual curiosities (e.g. machine learning algorithms) while providing plenty of job security (i.e. strong business demand).  Currently, I am a data scientist at the MITRE Corporation, a non-profit company that does R&D for many federal agencies.  I love working at MITRE because I get to define what type of data scientist I want to be.  In my first year, I worked on research projects involving machine learning and agent-based models to drive policy analysis, and I prototyped a web-based simulation tool to explore workforce strategies for the VA.  It’s great to be at a company where the work is challenging and impactful.

While in the transition to industry, I realized that much of my academic training and some of my hobbies positioned me to be an attractive candidate.  As a math major/PhD candidate/professor, I had accrued a ton of experience teaching myself complex, abstract concepts. Employers seek out job candidates who can demonstrate the ability to pick up new things quickly.  Working in help centers/recitations/lectures, I had accrued a ton of experience explaining deep, technical material to non-technical audiences.  Employers like to hire teachers because they can put you in front of customers or use you to mentor young staff.  As a mathematician, you have surely gained similar experience.  Find a way to brag about your superpowers!

You’re going to need programming skills.  In my journey, I was lucky to have learned to code.  In college, I learned a bit of Java in CS 101.  In grad school, the math department hired me by the hour to maintain their website.  I chose to write up my homework in LaTeX.  Frequently, I would need to do some computations in Mathematica, Maple, Matlab, or Sage.  As a postdoc, I got bored one summer and wrote a couple of card games in Objective-C.  For a research paper, I needed to diagonalize some matrices over a non-commutative base ring, and I wrote the code to do this from scratch in Python.  Before I had even heard of data science, I had ten programming/markup languages under my belt, and I put all of them on my resumé to show employers that I am comfortable writing code.  If you don’t have experience programming, I recommend you pick up Python. It’s a good general purpose language.  Pick a project and use Python to attack it (e.g. implement matrix multiplication from scratch).

The last piece of advice I have is to acquire domain knowledge and to network. The biggest hurdle I had in my journey was learning to communicate with potential employers.  I decided to take online courses in data analytics and machine learning, and these courses taught me what people in industry care about, how they talk, and what tools they use.  I also participated in some coding and data science competitions online.  Since I had a noticable lack of business experience, these competitions were something I could point to as proof that I could do data science.  I would also recommend attending meetups in your area. In my experience, meetup people are very friendly and helpful.

Transitioning out of academia was scary, but it has been one of my best decisions.  At first I was worried I wouldn’t be what employers were looking for, but I learned that many employers want to build companies with people from diverse backgrounds. Don’t worry about trying to fit the mold.  Reach out to friends, former classmates, and friends of friends, and you will find all the support you need.

5 CS skills I wish I learned in college

      

Lindsay Hall, Software Engineer (Google NYC)

I started working full-time as a software engineer Lindsay_Hall_1(SWE) at Google NYC in 2012, after graduating from Harvey Mudd College with a degree in Math and Computer Science. Prior to joining full-time, I did 3 SWE internships with Google, working at YouTube in the San Bruno office and with the Google Docs team in NYC.

By the time I did my first technical interview with Google, I was fortunate enough to have learned the skills and Lindsay_Hall_2topics usually covered in these interviews, which tend to focus on coding, algorithms, and data structures. In general, if you can pass a Google technical interview, you can learn the rest of the skills on the job, but there are some key areas where I wish I’d been better prepared in college.

A college degree is generally supposed to prepare you for a job in that field (hopefully we can all agree on that). Obviously, software engineering isn’t the only field you can enter with a degree in computer science, but there are over 1 million software engineers in the United States, and the field is expected to grow by almost 20% by 2024. Are college-level CS programs really teaching the skills required for students to become professional software developers? Well, yes and no. Here are some of the topics I think were covered well in my program, and some of the areas I think were lacking.

Things that my college program did well

Many of the skills I learned during my time at Harvey Mudd College continue to be invaluable to my job at Google. These include:

  • A rigorous background in algorithms and data structures
  • Coding knowledge, including experience coding in multiple languages (Python, Java, C++, and others) and an understanding of the difference between various types of programming languages
  • Experience working closely with other engineers to solve problems together
  • Practice explaining technical concepts to an audience, either in written or presentation form
  • An understanding of how computer science can be used to solve problems outside of purely technical fields

5 things I wish my college program had taught me

Despite all of the amazing, important things I learned in college, I spend most of my day doing things that I never learned how to do before joining Google. Here are 5 topics that are critical to my day-to-day job at Google that I think should be required learning for all college CS students.

1- Working in an existing codebase

Unless you’re founding your own start-up, it’s highly unlikely you’re going to be writing any significant code from scratch as a SWE. The very first skill I had to learn at Google was how to read and understand the existing code for my project, and how to integrate my changes into that codebase while adhering to the design patterns already in place.

College CS courses tend to focus on writing code from scratch, or implementing methods in an existing class. I’ve never heard of a class which required students to understand and make changes to an large, pre-existing codebase (although such a class might exist!). This is a crucial skill for future software developers and one that should be stressed in college curriculums.

2- Testing code

Writing automated tests for your code is a huge part of working in a large codebase. Tests help ensure the correctness of your code, provide information about the expected behavior of methods/classes, and protect your codebase against future regressions. Test-driven development is also a popular strategy for software development at many companies.

A few of my college courses required students to write unit tests for their code, although there was never any emphasis on testing strategies or best practices for writing unit tests. While unit testing is a big part of  the test suite at many companies, other types of testing are critical as well, including integration testing, screenshot testing, and automated testing of production code using a prober or a bot. Understanding testing practices and the importance of different testing approaches is critical to working as a SWE, especially at a large company.

3- Writing design documents

As I mentioned earlier, I was fortunate to attend a college that placed a strong emphasis on technical communication, both written and verbal. I would say the single most important thing I do in my day is communicate with my coworkers, whether it be about code that I’m writing, code that they’re writing, or a design that we’re working on together.

A design doc is a key component to working on a project at Google. Before you start writing code, you need to outline your proposed changes in a format that can be easily shared with your team members and reviewed by at least one coworker. Doing these reviews before you start coding saves a lot of time and energy, since you can iterate quickly on various design ideas without having to update your code each time. Learning how/when/why to write a design doc or proposal is a skill I wish I had learned before starting at Google.

4- Conducting code reviews

Many companies adhere to a code-review process where every line of code that’s submitted to the codebase is reviewed by at least 1 other engineer. This allows for a 2nd pair of eyes to catch bugs and suggest improvements, and also helps to spread knowledge among the team (so that at least 2 people know how all of the recently-submitted code works). Learning to review someone else’s code for correctness, style, and good design is an important skill. Also, it’s important to learn how to have your code reviewed, and how to take feedback and suggestions (and when to push back on those suggestions).

5- Working on large-group projects

At Google, there are often many working on a single project at any given time. In those situations, it is critical to break up the work in such a way that peoples’ changes don’t conflict with each other, and everyone can be productive without being blocked on someone else’s changes. Learning how to parallelize the tasks in a project and coordinate across a large number of engineers is a critical skill. While some college courses encourage or require group work, most don’t require students to work in groups larger than 3-4. Learning how to manage a long-term, multi-person project as part of a CS class would be a large benefit.

About the author:
Lindsay Hall is a software engineer at Google. She joined Google full-time in 2012, where she started working on the Google Docs web team. Since then, she has worked on Google Slides (both web and Android), the Docs performance team, and currently works on the Google Sites front-end web team. Prior to joining Google, Lindsay attended Harvey Mudd College where she gained a BS in Math and Computer Science. While at Mudd, she completed 3 software engineering internships with Google, working on YouTube and Google Docs. In her free time, Lindsay enjoys taking aerial silks classes and swimming on the Bearcat Masters swim team.

CC BY-NC-ND

Organization: European Consortium for Mathematics in Industry (ECMI)

The European Consortium for Mathematics in Industry (ECMI) is a consortium of academic institutions and industrial companies that acts co-operatively with the following aims:

  • To promote and support the use of mathematical modelling, simulation, and optimization in any activity of social or economic importance.
  • To educate Industrial Mathematicians to meet the growing demand for such experts.
  • To operate on a European scale.

Find out about European Study Groups with Industry and other opportunities on the website.

 

Study Groups with Industry: Mathematics meets the real world

A study group is a type of workshop which brings together mathematicians and people from industry. The meetings typically last for 5 days, Monday-Friday. On the Monday morning the industry representatives present problems of current interest to an audience of applied mathematicians. Subsequently the mathematicians split into working groups to investigate the suggested topics. On the Friday solutions and results are presented to the industry representative. After the meeting a report is prepared for the company, detailing the progress made and usually with suggestions for further work or experiments. Over the years they have proved to be an excellent way of building bridges between universities and companies as well as providing exciting new topics for mathematicians. Of course there is pressure involved in attempting to understand and solve a problem over a short time frame. This can often produce an exciting and intense atmosphere but, in general, a good time is had by all.

 

Meyers_Study_groups.jpeg

Experiments can often help guide a mathematical investigation (or cause even more confusion)

The original Study Groups with Industry started in Oxford in 1968. The format proved a popular way for initiating interaction between universities and private industry. The interaction often led to further collaboration, student projects and new fields of research. Consequently, study groups were adopted in other countries, starting in Europe to form the European Study Groups with Industry (ESGI) and then spreading throughout the world, regular meetings are currently held in Australia, Canada, India, New Zealand, US, Russia and South Africa. A vast range of topics have been covered in the meetings, including beer and wine bottle labelling, legal sale of rhino horn, spontaneous combustion, mortgaging of cows, building toys, city bike sharing strategies, determining fish freshness, etc. New forms of meeting have also evolved, such as the Mathematics in Medicine or Agri-Food Study Groups.

The popularity of study groups can be attributed to their mutually beneficial effects. For companies there is:

  1. The possibility of a quick solution to their problem, or at least guidance on a way forward.
  2. Mathematicians can help identify and correctly formulate a problem for further study.
  3. Access to state-of-the-art techniques.
  4. Building contacts with top researchers in a given field.

The academics benefit from:

  1. Discovering new problems and research areas with practical applications.
  2. The possibility of further projects and collaboration with industry.
  3. The opportunity for future funding.

An important feature of these meetings is that they can also highlight the talents of students, leading to employment opportunities with the companies. In South Africa, after attending a number of study groups, a group of students took a new direction. Noting the gap in the market for applying mathematics to real world problems they started their own company, Isazi Consulting. Now they return to the meetings this time posing their own problems, and looking for new recruits.

Information on the European Study Groups can be found on the website of the European Consortium for Mathematics in Industry. A good source of information for meetings in Europe and the rest of the world is the Mathematics in Industry Information Service, see

ECMI Study Groups https://ecmiindmath.org/study-groups/

MIIS Website http://www.maths-in-industry.org/

 

Tim Myers

Centre de Recerca Matematica

Barcelona, Spain

Blogpost: Parsa Bakhtary

fb_live

It is humbling to address future and current mathematicians, but as a former algebraic geometer myself, I will do my best to share with you my story. I work as a data scientist, which the Harvard Business Review in 2012 dubbed “the sexiest job of the 21st century,” at Facebook, which has been ranked by Glassdoor as one of the best companies for which to work. The path that led me from an eager math student who despised applications to where I am today has been a strange one, but the lessons I learned in my undergraduate and graduate math classes have had a profound impact on my ability to analyze concrete problems in industry.

After earning a B.S. in mathematics at UC Davis, I took a year off in which I decided to pursue a graduate education in the same subject. Seven years later, I finally received my doctorate from Purdue University, having written a thesis in the subject of algebraic geometry, and I was eager to take the path which would lead me towards a professorship somewhere. Unfortunately, I was unable to find a post doc in my home country of the US, so I took a position in Saudi Arabia at King Fahd University of Petroleum & Minerals, teaching calculus to aspiring petroleum engineers and occasionally publishing a paper. After three years there, I missed California and returned unemployed in the summer of 2012.

I quickly realized the job market for math professors wasn’t promising at the time, so I started looking for industry positions that would be suitable for someone with my background. After extensive Googling, I realized “data scientist” sounded like something I could do. I taught myself some Python and SQL, practiced analyzing and visualizing publicly available data sets in R and Excel, then started applying. After six months of unemployment, I caught a break and was offered a position at a startup in Chicago. The rest, as they say, is history.

My job at Facebook is unique in its flexibility and often quite challenging, though perhaps not in the same way as algebraic geometry. I have worked on game ranking, platform ecosystem health, comment ranking, celebrity usage patterns on Instagram, and discussion of TV show content on Facebook. I was lucky to be the first data scientist on Facebook Live when it launched, and our team helped grow it into one of the biggest live-streaming platforms in the world. The problems I work to solve can either be very technical, involving complex modeling and simulation, or it can be investigatory, requiring me to search for an explanation of an unusual phenomenon, or it can even be exploratory, such as trying to answer vague questions like “What makes a mobile game fun?”

The analytical training that we mathematicians receive put us at a unique advantage in the field of data science. The rigor we’re accustomed to help us break down a general question into concrete analytical pieces which we can answer with data. It is easy for us to spot errors in thinking, or situations where the evidence doesn’t actually answer the question. After learning some basic statistics and the familiarity with an analytical data manipulation environment (e.g. R or Excel), any mathematician can rapidly become a data scientist. The field of data science is also vast, as one can focus on subfields such as product analytics, visualization, or machine learning.

The biggest misconception people have about data science is that they think we all know how to program and have spent many years writing code. While some familiarity with SQL and analytical software is often desired, we are not programmers. We are, if anything, the voice of evidence at a company. We are there to help shape our colleagues’ understanding and intuition based on the data that we see, and to give actionable recommendations that will improve existing products and help define the appropriate strategies. It’s a fun job, and a great option for all mathematicians interested in industry.

parsa_thumbsup

CC BY-NC-ND