Teaching Science to Kids Part I: Women in Engineering

Some background

I’ve worked with students since I was a researcher in high school. I held a year-long stint with Dr. C. Ted Lee, Jr. in chemical engineering. As part of the STAR program at Bravo Medical Magnet High School and the University of Southern California, I was able to reach out to students at Murchison Elementary School where I taught the youngsters about blood flow through the human body, measurement, and the fascinating mechanics of our eyes. At Arizona State University, where I did my undergrad, I continued my outreach whenever possible. I enjoyed volunteering for FIRST LEGO League, the National Science Bowl Arizona Regional, the National Science Bowl in Washington D.C., and other various workshops held by ASU and the Fulton School of Engineering that pain me not to remember! But the focus has always been on inspiring the next generation of scientists, entrepreneurs, and leaders in this beautiful world. My dream is to inspire a generation of scientists and engineers and make a positive difference in their lives.

Outreach at the University of Maryland College Park

For a few, very interesting sessions this summer I was able to talk to students of elementary school (grades 4 and 5) and high school ages (grades 11 and 12). These students had various grasps on what “engineering” was. Some students thought that engineering was being “creative”. Some thought that it was “working in teams”. These were my favorite students. The first session was with Women in Engineering at UMD.

Women in Engineering:

I really liked this group of 30 female high school students. They were quiet, but they ended up being one of the most vocal groups by the end of the session. They grew confident because I developed a friendly atmosphere. I joked around. As a presenter, you need to be interesting. I tried to relate my own personal experiences to what they’re going through now. If you’re authoritative and just describe “here’s what your next 4 years are going to be like” they will lose interest or get the wrong message. The idea was to get a good group vibe while addressing the reality of studying engineering in college, and being aware of how to handle it all. They will have their own unique experiences and follow their own paths. Some will not even major in engineering while in college. So it’s good to give young students information that will not only benefit them when moving ahead in engineering, but any subject in college.

I’m very excited about Women in Engineering (both the group, their sponsors and volunteers, and the participants in their outreach programs).  I gave a one-hour lecture where I talked about the importance of several topics. I let them know straight. College, but especially engineering, is going to be difficult. It’s going to be stressful, exciting, and rewarding. There is an endless list of things I wish I knew when I finished college, more than can be conveyed in an hour lecture. So the next best thing is to talk about the essentials, and convey a feeling about college. An idea, that hopefully sticks.

Digression

We have a serious problem in engineering. It separates males and females at face-value. This is a finely drawn line in engineering that hard-working female engineers have spent decades attempting to erase. I’ve heard males at all levels of my education speak candidly about this topic in a very sexist manner. We’ve certainly made a lot of progress, but there is more progress to be made than has been achieved. Engineering is a white male. Work needs to continue to change that reality. As a perception, it’s changing. There is proper etiquette in the workplace. Minorities are treated as equals, given great responsibility. But there are severe wage disparities. There still exists discrimination and until that reality changes (and until we see equal representation and salaries in our field), we have a problem.

I digress! But as a Mexican-American engineer, it means a lot to me. And that’s part of the reason why I volunteered to speak for Women in Engineering. So I digress intensely.

Questions, please

There were some good questions after my presentation. The girls did want to know about classroom ratios. I said it varies from one engineering specialty to another. But it’s typical to have a first year calculus class with a 3:2 male to female ratio. I emphasized that it’s important to try different things that they’re interested in, whether it’s research, a project, or a class. When you try new things you learn more about yourself.

Was the class engaged? Absolutely. My favorite part about this group is that they took notes. This is another quality of young students that I greatly admire! Documentation is essential. They asked questions during the presentation. One pet peeve of presenters is their lack of willingness to take questions mid-presentation. I agree that it can derail a well-timed presentation. But with young students, I highly recommend allowing for questions DURING your presentation. They may hesitate to ask later, or simply forget. Encourage questions during presentations so that it feels like a discussion, not a lecture. Engineering is more of a discussion than a lecture.

Let’s do this again!

I hope WIE has me back for another talk. I’d love to talk to other students about engineering (or current undergraduates about the reality of graduate school). From this presentation I learned that I need to keep the talks short, to the point, and allow room for many questions. What’s important is to increase awareness of engineering, and it starts with a conversation.

Advertisements

Installing Numpy in Ubuntu 11.04 From Source

Download

In order to obtain the Numpy package, you’ll want to go to their website. Once you’re there you can download the source files. It’s also important to note that there are detailed Numpy installation instructions here. I’m just describing my experience.

Prerequisites

Because Numpy is a tool that requires Python…you’re going to need Python. If you’re using Ubuntu 11.04 and have not yet installed Python (or want to re-install a different version), I have a guide for that here.

Unpacking

I moved my source file to a place where I wanted to unpack it. In my case, I’ve made a local installation of Python, and I plan on making a local installation of Numpy. So let’s say I’m unpacking in:

$ mv numpy-1.6.1rc1 ~/opt
$ tar -xzvf numpy-1.6.1rc1.tgz
$ rm numpy-1.6.1rc1.tgz

What this will do is move my Numpy source tarball into my desired source directory, unpackage it, and then remove the undesired source tarball. I usually keep a back-up of my source for a while. You can always download the source again later if you want, I just like having it in case I can’t access the internet for some reason, or if I’m installing on a machine that I’m accessing through ssh.

Building

Here is where your installation of Python will service you. Python takes setup.py files that you’ll typically see in source directories and executes the code. In the case of Numpy, you’ll issue this command from the source directory.

$ python setup.py build

Now here’s where the fun starts. Numpy has a lot of options. I’m only going to address a select few and make you aware of others. If optimization is your interest, you’ll want to check out the options in the site.cfg file so that you can configure ATLAS or BLAS. They’re not necessary and I have not tested their effectiveness. But they are widely used in the field of scientific computing and I highly recommend them!

I’m also going to be using the Intel compilers. That’s a link for instruction provided by the SciPy folks themselves! I chose these options when configuring my build:

$ python setup.py build –fcompiler=intel –compiler=intel build_clib –compiler=intel build_ext

I specified both the Intel C and Fortran compilers. There are two steps to this process. The first is the build, the second is the install.

Installation

Once you have completed your Numpy build, it’s time to install. This is the command I used.

$ python setup.py install –prefix=/home/ben/opt/Python-2.7.2./

This is curious for several reasons. As a new user, when I’d typically run configure (from the world of make files), I felt that setting prefixes (which set the installation directory) would go into the configure step. But python does things a little differently. The ‘configure’ step doesn’t really have a true analog with Python build and install. We specify the installation directory during install!

Notice that I also installed Numpy in the location of my Python installation. The binaries from the installation end up joining my Python binaries. Now, if you followed this tutorial, you’ll notice that you can just type

$ which f2py

from the command line after installation and see that it is in your path! This is because I installed Numpy where Python is installed. Similar to Python, the Numpy executable ‘f2py’ is in $INSTALL_DIR/bin. If you didn’t use the tutorial, no worries! You would adjust your PATH variable similarly as I described in the tutorial, regardless of your installation directory. There is a lot of documentation out there on modifying your PATH if you still have questions. But I highly recommend using the same location as your Python installation. You may have to make some path adjustments if they are different!

Now that f2py is installed and your PATH is configured, try running Python.

$ python
>>> import numpy

If you can successfully import Numpy, you’re almost in business! Start looking for examples to run and get started! If you can pass tests, you can start the really exciting stuff!

Installing Python 2.7.2 in Ubuntu 11.04

Preface: In this example, $ is the prompt. So you don’t type the dollar sign. It’s just a sign that precedes “this is what I typed into my computer terminal”. These instructions are for beginners. Experts are welcome to chime in.

What’s nice about this guide is that because I specify instructions for a local installation, it can be applied to many types of machines (like compute clusters where you do not have root access).

Beginning the Installation

I just installed the Python 2.7.2 software package locally on my desktop. I’m running Ubuntu Natty Narwhal 11.04. I say “locally” because I’m installing it in my home directory, not system-wide. This is useful when you’re not root on your machine or do not have root authority.

Because Python is already installed on my machine, when I issue the command:

$ which python

to find the directory where Python is executed from, I get something like

/usr/bin/python

But I want to install Python in a new, local directory. So I created a directory.

$ mkdir ~/opt

Then I extracted my Python tar.gz file into this directory.

$ tar -xzvf Python-2.7.2.tgz

I went into this directory to poke around.

$ cd ~/opt/Python-2.7.2

Customizing Your Installation

I read the INSTALL.txt file for information about how to customize my installation. I found the options I want. In order to install Python locally, I specify my “prefix” during the configure step. Prefix is basically the location of the installation directory. Right now you’re in the source directory because that’s where the source code is located. I also want to specify my custom C compiler. I use the Intel compiler because it is pretty awesome. Its location on my machine is:
/opt/intel/composerxe-2011.4.191/bin/ia32/icc
Let’s not confuse the two different locations on my machine. Ubuntu has already set up an /opt directory. But I later created a /home/ben/opt directory because that’s what I wanted. You’ll notice I like to use the ‘~’ symbol to represent $HOME. You can find your value of $HOME by typing:

$ echo $HOME

Configure Python

Anyway, it’s time to configure Python. I had two goals: 1) Install it locally and 2) Specify my C compiler (so it doesn’t default to gcc). Experts know there are several ways of doing this without what I’m about to show you. This tutorial is not for experts. In your terminal you’ll need to be in the Python installation directory where you unpackaged your files to issue this command.

$ ./configure –prefix=~/opt/Python-2.7.2 CC=/opt/intel/composerxe-2011.4.191/bin/ia32/icc

Now your machine should configure Python. This may take up to a few minutes. The next step is exciting. Your version of Python will be compiled when you issue the next steps.

Python Make

$ make && make install

Now be aware that ‘make’ and ‘make install’ are two separate commands. I just used ‘&&’ to issue them on one line for convenience, so they execute back to back without my further instruction (because ‘make’ and ‘make install’ can sometimes take a while).

*NOTE* If you previously attempted this step and screwed up, or wrote something you didn’t want to in the configure step, you’ll have to reissue your ‘configure’ with the appropriate options and then:

$ make clean

before you continue with ‘make’ and ‘make install’.

Assigning Your PATH to Find Python

After you finish ‘make install’, Python should finish its compilation. Now I want to do a little organizing. I’d like to be able to execute Python by typing:

$ python

from a fresh terminal window. Right now, if I try to execute Python that way, it launches from /usr/local/bin as I mentioned earlier. This is not what I desire! We can change this by adjusting our path. We’ll go into the .bashrc file and edit with vim. Of course, you’re free to edit with whatever editor you like.

$ cd ~
$ vim .bashrc

Now once we’re viewing the file, get in insert mode and scroll down to assign your path. My path line looks like this after my edits:

PATH=”/home/ben/opt/Python-2.7.2/bin:$PATH”

I put my installation directory that I specified during prefix into my path. It’s represented by /home/ben/opt/Python-2.7.2/. But what’s ‘bin’ have to do with this (very few of you ask…but some may)?

Two important things to note. If I put $PATH at the beginning of my quoted statement, it wouldn’t have found my desired Python. That’s because your machine searches for the first result in your path. That would have been in /usr/local/bin (or whatever else you previously specified). So I had to drag $PATH to the rear of my line. Also, Python is not executed from the directory

~/opt/Python-2.7.2

but from

~/opt/Python-2.7.2/bin

The $INSTALL_DIR/bin is where the Python binary is located. That’s the typical location for binaries.

Final Steps

Now save your .bashrc file. Close your terminal window and open a new one. Type:

$ which python

It should be the location of the Python you just installed.

$ python -V

This will tell you the version of Python you’re running. Now just type ‘python’ to get started!

$ python

Lessons Learned in Graduate School vol. 1

I finished my first semester of graduate school in the Department of Aerospace Engineering in May of 2011 (I started in January) at the University of Maryland College Park and I can summarize it in several bullet points.

  • Graduate school coursework is much more demanding than undergraduate. This is obvious to many, but it must be stressed that you cannot let your guard down in any class because it will hit you square between the eyes. Do every problem with intensity. Give yourself time to check and double check your work.
  • Being a graduate research assistant places special emphasis on getting your hands dirty early…and if you don’t, you suffer the consequences of being labeled a simpleton. It will take a very long period of hard work to shake this label. I’m still wiggling.
  • Working with other graduate students is a privilege that many students will take for granted. Once we graduate, we’re going to be leaders in our respective fields.
  • Developing a good relationship with your advisor, mentors, and instructors is essential to your development. Almost everyone you interact with wants to help you become a better performing student. It’s in the best interest of the school to make you better.

My experience at UMD has been compelling. When I arrived in Maryland, I called Bowie my home. It’s about 13 miles from my campus, so it wasn’t a wise decision to live in Bowie. But it looked reasonable on Google Maps.

  • LIVE CLOSE TO YOUR SCHOOL

I didn’t have any friends when I arrived. I didn’t know anyone in the College Park area. I had no money (and not much has changed) and I had no furniture. I shipped most of my clothes and books from Arizona across the country. I had no bed for two weeks and slept on a couch, sometimes on the floor with cushions.

  • COME PREPARED

I ate bread, McDonald’s hamburgers, and macaroni and cheese every day until my first paycheck (a month after my arrival thanks to prerequisite paperwork). I did buy a jar of peanut butter after my first week. There wasn’t anything productive about being miserable. It was cold. Snow was on the ground and there was more waiting to fall from the sky. I’ve never been in temperatures like this, I thought, as I was metaphorically buried deeper and deeper each day. But I wasn’t depressed. I was still happy that this change in scenery had happened.

  • A LITTLE MONEY TO GET YOU STARTED RIGHT

I don’t know what it is about minority engineering students, but we’re poor. Our families rarely have financial infrastructure and while we may end up getting very generous research assistantships, it’s not really enough after taxes. And the family can’t help out. In fact, I’ve actually had to help my family out this year. It can get tough.

  • EXERCISE

While graduate students are hard workers who appear to never leave their offices, they’re usually pretty fit. Taking some time to exercise is the best physical activity you can perform to boost your metabolism and mental health. A little will go a long way, but a good, steady amount (3x a week) will give you the energy to take on every day and all it throws at you. I ran between classes every day for a semester. I worked my way up to a really good pace and ran a 5k. I ran instead of studying before one of my finals. I was very relaxed and did well. Exercise is essential.

  • MAKE FRIENDS

Make friends as fast as you can. There will be a lot of people who care about the same things that you do. Enjoy their company and work with them toward a common goal.

  • EVERYONE IS SMART

When you’re in graduate school, everyone around you is smart. They’re as smart as you or smarter in a different way. The difference is working hard. The hardest workers will look like the smartest.

I’ve made a lot of observations after 1 semester (and a summer of research) and I did not list them all here. I owe a lot of thanks to students I’ve had conversations with that have motivated me to work harder. I look forward to next semester (which will surely be challenging). I look forward to reflecting in 5 months.