Cyber-physical systems and smart cities

Today, I am in Seattle attending a National Science Foundation (NSF) workshop for early career investigators on Cyber-Physical Systems (CPS) in Smart Cities (link). There are 2 main purposes of this workshop:

  1. to share, develop, propose new research directions for smart cities, and
  2. to get to know the other early career researchers working in related areas.

Present at this workshop include people with funding power (NSF) and industry (Amazon), and we had the opportunity to see invited talks from non-profits (US Ignite, 100 Resilient Cities), city government (City of Seattle), and research groups (Netlab at Caltech, Urban@UW). It has been great to learn about efforts towards smart cities from all sorts of perspectives, from foundational research, funding calls, and knowledge transfer, to hackathons, city challenges, and creating environments for more collaboration.

Some insights I liked from today’s invited talks:

  • One key aspect to remember about cyber-physical systems is that there are underlying physical laws that cannot be designed away in these systems; and this leads to our key challenges of non-convexity, large-scale, uncertainty, and multi-timescales. — Steven Low, Netlab, Caltech, on designing controllers for power grids
  • “Inclusive innovation” is key to developing our urban systems, and it’s not just about supporting diversity; the greater the diversity in human specialization, the greater the potential value of exchanges in a system. — Vikram Janhdyala, University of Washington, Urban@UW
  • Think about the communication requirements of your work in CPS; how much bandwidth do you need for your work to affect real people in real cities? Our use of resources is way unsustainable. Now we want to see sensors, government data, open data, etc. used intelligently for providing transparency, changing behavior, and optimizing our resource use. We’re interested in applications for cities operating at 10 Mbps to 100 Gbps. — Glenn Ricart, US Ignite, on the science of smart cities
  • Shocks and stresses like natural disasters, industry collapse, disease outbreak, etc. can bring opportunities for cities to evolve and in some circumstances transform, so how to best use the opportunities is something to plan for. — Jose Baptista, Rockefeller Foundation, 100 Resilient Cities Project, on designing for… resilient cities
  • City government can move fast and break things. By trying a lot of different programs and efforts, by providing government data openly, Seattle was able to demonstrate the potential of collective brainpower for improving city services, e.g. crime prediction, green commuting, stolen vehicle tracking, computer literacy programs, service requests, etc. We often want to move fast, but we also need to make sure we’ve got good brakes, so we can slow down if needed. — Michael Mattmiller, CTO of Seattle

A theme among the invited speakers was an impatience for our research to reach people. There was a clear emphasis from NSF for research to have shorter-term impacts, e.g. 3-5 years, which they called “technological off-ramps.”

Among the lightning talks, I also noticed a few motifs in the ideas:

Addressing the lack of guarantees for CPS

  • Danielle Tarraf (Johns Hopkins) — certification for systems with limited alphabet and memory
  • Dong Wang (Note Dame) — how to provide data correctness guarantees from humans as sensors
  • Vasumathi Raman (Caltech) — providing control as a service via synthesizing correct CPS
  • Sam Coogan (UC Berkeley) — scalable formal methods for transportation systems

Addressing security of CPS

  • Lillian Ratliff (UC Berkeley) — mathematical foundations for the efficiency-vulnerability tradeoff in societal-scale CPS
  • Tamara Bonaci (UW) — cyber-security for teleoperated robots

Addressing neat new CPS applications

  • Tam Chantem (Utah State University) — CPS techniques for a semi-automated emergency response system
  • Min Kyung Lee (CMU) — studying how people react and respond to automated and algorithmic systems
  • Charlies Mydlarz (NYU) — full-scale CPS for acoustic map and noise mission control for New York City

Addressing challenges in the smart grid

  • Baosen Zhang (UW) — powering smart cities through highly decentralized controllers
  • Mahnoosh Alizadeh (Stanford) — coupling power and transportation networks via electric vehicles

With these themes and fresh ideas in mind, I look forward to all the groundbreaking research this week at CPSWeek 2015.

Special thanks to Jaime for feedback on the article!

Data science interviews

The aim of this guide is to provide the “delta” between a software engineering interview and a data science interview, for a mathematically-oriented researcher. This guide is suitable for researchers well-versed in some combination of statistics, probability, machine learning, optimization, and related areas.

If you don’t already have software engineering interview skills, I recommend looking additionally at guides for building those skills. Almost all of those skills (writing code live, designing algorithms, etc.) and good interviewing practices (asking good questions, showing interest, communicating well) still apply here, except there will be fewer computer systems questions and less emphasis on best practices in software engineering.

Anyway, here is how I prepared for my data science interviews.

Step 0: what is data science?

Learn your audience. It’s good for context to know what exactly people mean when they are talking about data science. it’s sufficient to read the top articles from google, and I’ve provided some here.

Step 1: imagine the problems that the company will ask you

What are the questions that the company would like to know from their data? What kind of data do they have? How can the data be related to the company’s mission / bottom line / target audience? How can their data affect their day-to-day operations? How can it affect their longer-term business decisions? What kinds of methods would you use to solve these problems? What kinds of visualizations would be appropriate? How do some of these questions then translate into products or features?

Step 2: pseudo-structured wandering through wikipedia++

The goal here is primarily to familiarize oneself with the terminology of data mining, with an emphasis on the high-level concepts and what people tend to use in practice. I’ve listed a bunch of topics I reviewed below, and the goal is to develop the following for each area:

  • Have an intuitive understanding (and way to explain) the concept / technique / method
  • Be able to write the (main) relevant equations; know the key properties
  • Have an example at hand to demonstrate usage/understanding
  • Understand when it is used and why; know related tools and when it is better to use one vs the other; what are considered “good” values and how to determine/assess/validate them



  • Learning rate (machine learning) == step size (convex optimization)
  • Spectrum analysis == frequency domain analysis == spectral density estimation
  • Predictive analytics == predictive modeling and forecasting
  • Multinomial logistic regression == softmax regression == multinomial logit == maximum entropy (MaxEnt) classifier == conditional maximum entropy model

Step 3: okay, what do other people do for interview prep?

Additionally, there is an explosion of data science books (e.g. this or this) and blogs that I’m sure are also very useful for data science interviews.

If you are a grad student in a technical field, leave a comment with your interview preparation techniques!

Insightful advice for academia from WICSE

Today I attended the WISCE Berkeley-Stanford annual meetup and there was quite a bit I learned that I think applies to anyone in the field, so I wanted to share it here (along with more women-specific things). In particular, I found the academia panel to be very insightful and wise. Here were the key points.

First off, there are lots of resources specific to women + careers in EECS from an annual conference called Rising Stars in EECS. It’s neat because the talks are all online and the advice is quite specific to EECS and covers both academia and industry.

The panelists

The first invited panelist is Professor Ruzena Bajcsy (Berkeley), who has been in the field for 40+ years and thus has been through many of the shifts through the generation. The second panelist is Professor Tsu-Jae King Liu (Berkeley, current EECS department chair). She was immediately asked a bunch of questions about time management, chair responsibilities and whatnot, to which she says that of course being chair is a lot of work and easily takes up half of her time. The third and last panelist is Dr. Sadia Afroz (Berkeley, current postdoc).

Shifts in academia

When asked about what the biggest changes in academia have been, Ruzena commented that she’s noticed almost an obsession with money among young researchers… people are always talking about their salary, grant funding, etc. She cautioned (and reminded) us that she chose academia because she wanted to do her own projects, to think independently… not to be led where the money lies.

Advice for new faculty

Ruzena, now 80+ years old, still advises a full lab, comes to work every day, stays fully engaged in the community and the field. I find it remarkable and admirable and awesome. When asked the question “What advice would you give a new young faculty?” she gave the advice: you really want to have a job where every day you are happy to go to work. She commented that she is literally happy to come into the lab every day, including weekends (our meetup was on a Saturday). Specific to academia, she advised that if you are not curious, don’t like teaching, don’t like exploring wild ideas (and keep in mind that many of those ideas won’t work out), don’t do it.

A lot of these qualities actually ring true with me. I love teaching, mentoring; I like exploring new ideas, I like thinking about the future, and certainly I’m curious. But at the same time, it’s really important to me that the things that I work on see the light of day and actually make a real difference in people’s lives. So I asked the question: is curiosity in conflict with broad impact? It seems clear to me that, at some point, if you want to carry an idea out further and broader, then you need to spend the time and effort to invest in that single idea… which of course detracts from other curiosities. So then is academia still suitable if your life drive is the impact and results rather than the curiosity?

Ruzena’s response was actually unexpected but heart-warming and wise. So, Ruzena had just seen the talk I presented at this meetup, which was focused on developing large urban systems. In my particular context, she agreed that academia is probably best suited for this type of work because it can connect me with a wide group of people in many different related fields, and this is necessary since urban systems touch on so many different studies, e.g. EECS, civil engineering, urban planning, economics, public policy, etc. But more generally, she advised that everyone take advantage of the breadth of courses and resources that are available to us (at a top school); to explore a bit because anything narrow that we learn now will become out of date. And so it is prudent to pick up a breadth of skills.

Nice gals lose?

Often times, women (and actually many people in EECS) feel like they need to be more aggressive in order to succeed, but feel conflicted because it is counter to their personality. When asked the question of “Should I be more aggressive if I want to attain professorship?”, Liu responded that confidence is everything; that the key is to develop confidence in your own abilities, over time and to recall that often times people are just curious… there’s no need to get defensive. In order to have people recognize you as an individual rather than as a woman is to have confidence from within, display that confidence, and engage in conversations.

Advice for yourself?

The next question was: now, putting yourself back in your own shoes as a grad student, what’s one piece of advice that you’d give yourself, in order to succeed in academia? Ruzena responded succinctly: learn as much mathematics as you can. Liu’s advice was to really get to know your classmates; in fact, that also helps with building confidence. Sadia’s response was to not be afraid to ask questions, make the critical comments about other people’s work — to not assume that other people know better — because often times, you will be right. And I full-heartedly agree with all of the responses. The bottom line is really to gradually build up your own confidence.

Relatedly, what’s one thing you did right?

To this, Liu responded with seeking out a good mentor, one who is separate from your academic advisor. This person should believe in you, be able to provide emotional support. Ruzena, being the only female in robotics at the time (eeeesh) and immersed in a somewhat WASP-y culture (white anglo-saxon protestant), simply tried to make friends, looking for those (male) colleagues who were open to equality. She slowly built up a network and community for herself, slowly but surely. It wasn’t revolutionary by any means, she commented, but she was really supported by this network despite the opposing culture. What we have here now with WISCE is not far off. It’s a great community of like-minded people, and it’s really important that we stick together and support one another.

Thanks to Alex Lee for feedback on this article!

Adventures in Hydroponics (Weeks 23-26)

Automation edition

Well, another semester has gone by (time flies!). Let’s see what happened to the garden!

Day 163 (Nov 28, 2014)
Things got busy and winter came! Wind and temperature weren’t being super kind to my plants, so they took refuge in our living room. Which might turn into a permanent home — we’ll see. Anyway, the semester rolls along and the plants continue to get bigger.

But the question is: where is the promised automation? Wasn’t that the point all along? So, here’s the start of the water automation. First step: water drainage from the trays. Look, a first water test!

Day 178 (Dec 13, 2014)
First things first: prepping the system.

Fixing the drainage tubes to the trays resembles good soldering practice: a solid mechanical connection, along with good electrical connection (with solder). Here, that means, respectively: physically putting the 0.25″ tube through a hole in the tray and splitting the top end, and then attaching the tube from both top and bottom to the tray (with glue).

My system consists of one feeder tube per plant. With so many feeder tubes, it’s important to maintain sufficient pressure inside each tube. These fittings restrict the outflow, which did the trick. The long pieces are stakes, which position the feeder tubes.

Day 179 (Dec 14, 2014)
The water automation system itself is an open loop closed system. That is, water pumps out of this 20 gallon reservoir into a main 0.5″ tube, which runs out to 0.25″ feeder tubes to each plant. The extra water sinks to the bottom of the tray, which drains back into the reservoir. Remember: safety first!

Day 181 (Dec 16, 2014)
With 7 hours before I take off for Seattle, there are two outstanding issues: the system needs a timer and sometimes the trays don’t drain. Eep!

Good thing duct tape fixes many things. When the drainage tubes are submerged in the reservoir and there is air sitting in the tube, there is simultaneous atmospheric pressure from both the reservoir and the plant tray. The pressure from the plant tray is insufficient for forcing the water out of the drainage tube, so the water does not drain (thanks Joey, for the explanation!). Solution? Don’t submerge the drainage tubes in water in the first place.

The timer was easy enough too to set up. 1 minute watering, twice per day is what we decided.

And last but not least, I filled up the reservoir, dumped in some nutrients, and it’s ready to go!

Until next year, plants! I’m leaving you in good hands with Philipp, in case the system decides to take over the house! (Thanks Philipp!)

Adventures in Hydroponics (Weeks 6-13)

Wildlife edition

In which my plants meet wildlife or just naturally fail to grow.

Day 44 (July 29, 2014)
When I go away on vacation, some opportunistic caterpillars visit and eat all of the watercress. Like, all of it. Ma’ayan snaps up some evidence! (Also super special thanks to Ma’ayan for babysitting while I am away!!) I expect that the watercress is mostly done for, but I keep watering it anyway.
Yes, I’m approximating the day count at this point.

Day 48 (Aug 03, 2014)
I’ve return to Berkeley to living and well plants, except for the poor watercress. (Yayyy basil and parsley growing up.)

Day 60 (Aug 15, 2014)
Dear cilantro, I really insist you stand up straight. (Spoiler alert: they die. Turns out cilantro is notoriously difficult to grow.)

Day 75 (Sep 01, 2014)
I’m learning all about Berkeley wildlife, which is pretty exciting. My basil plant is attacked by what I suspect to be a squirrel. It dug up the rockwool, leaving a mess and the roots of the plant exposed. I promptly stick the rockwool back into the cube as best I can and proceed to wait and see what happens.


Day 89 (Sep 14, 2014)
Oh dang, it’s the return of the watercress, 1.5 months after the ravaging. No special treatment, just water and nutrients at normal intervals (and the Bay Area climate).

Parsley and basil are doing well too.


Cilantro still struggling though. They realllllly want to reach the sun. I believe these are attempt 35 or so to grow cilantro (which also fail).

5 years at MIT: post mortem

I wrote most of this 1.5 years ago, but for some reason never published it. This is a super condensed summary of my experience at MIT, written a few months before leaving the Institvte.

Each year in two sentences or so

Year 1 – I experience college real quick — social butterfly Cathy makes friends all over campus, attends frat parties, joins a ton of activities, takes part in a bunch of freshman programs. I also take too many classes and do not get enough sleep, but life is great and college is fun.
Year 2 – I explore the breadth of EECS — I start taking foundational classes and doing *real* research, I go to fewer parties but I continue to make friends, and I also try sleeping regularly, which is wonderful. MIT and life are dandy.
Year 3 – Then, in an attempt to not sacrifice depth while going after breadth, I hit a brick wall, crash and burn, become perpetually stressed, and withdraw from most people. I feel simultaneously empowered yet crushed, and MIT has not quite been the same place since; I am grateful to my friends who kept me alive and sane. I feel ready to leave MIT, for better or for worse. (But I don’t, despite company offers urging me to leave early.)
Year 4 – I essentially take this year off, at least technically, indulging myself with growing URGE, taking less technical classes, teaching computer architecture and ESL, and contemplating my future. I gain a ton of unexpected skills, experiences, and friends; this year is immensely rejuvenating and convinces me to stay at MIT for one more year, for the MEng.
Year 5 – I broaden my horizons by immersing myself in academia, and along with it, the adventures of rushing to my first conference deadline, agonizing over PhD programs, understanding advisor relationships, and working my butt off to make it to Germany. This year is marked first by the fear that the best days of my life have already passed and my unwillingness to grow up from being an undergrad, and second by the gradual realization that life can be better–more free, more engaging, more intellectually rich–in the future.

My main technical interests also morphed over the years

Year 1 – “durrr, what is EECS?”
Year 2 – signal processing (6.003) → speech recognition (UROP/6.345)
Year 3 – vision (MASLAB + 6.869)
Year 4 – vision (UROP) → autonomous robotics/vehicles (6.UAT)
Year 5 – autonomous vehicles → distributed control of agents + transportation

What I learned from MIT

There are no rules. There is no box to think outside of, anything could be possible.
To think further, broader. In some sense, I feel that every year I have spent at MIT has allowed me to think 5 years further out.
To go for it. In the words of my former advisor Professor Seth Teller, if you think something might be your life passion, go at it as hard as you possibly can. Otherwise, you might never find your passion. Become the world’s foremost expert in what you love.
To not be afraid to ask. I have earned and spent tens of thousands of dollars for student groups, by asking. By asking, I learned more about robotics during my CMU visit (Robotics Institute) than in a year working in a robotics lab. At the Berkeley visit (EECS), several professors remembered who I was because of my questions.
Having money is very nice. Having a department rolling in money makes wonderful things like URGE, Maslab, 6.570 possible (with just a little bit of student motivation).

How to Berkeley: Linear System Theory Prelim

Having just spent the last 3.5 weeks doing not much other than prepare for prelims, I thought I would summarize my experience and give some insights.

For starters, prelims are short for preliminary examination, an oral exam that is one of many requirements in your PhD journey at Berkeley (in EECS). The pass rate for this exam is on the order of 70-85%, though you are allowed to take it twice (or thrice, with a petition), and the overall pass rate is about 95%. [Disclaimer: these numbers are 2nd hand. They are approximate.] The exam takes place over 1 hour, with 3 professors. Each professor gives you 20 minutes (though it has been 16 minutes the last couple years) to solve some problems on the board. The topic of my prelim exam was linear system theory, meaning linear algebra and linear control theory. The highest order bit for success on this exam is taking EE221A (or already knowing the material).

Why take the prelim? What is it useful for?
Here are some perspectives I found interesting from some of the older (and wiser) students.
– “You’ll never feel as smart as you did when you took your prelim. That is the culmination of your expertise.” – Roy Dong
– “There is almost no correlation between how much of the question you get through and whether or not you pass. The thing to keep in mind for how they determine your score is ‘would you benefit from taking the prelim again?'”
In some sense, the prelim is as much testing your mastery of the content as it is testing how much you can think on the spot (and take hints/guidance from the committee), explain concepts, and present on the board.

Focused learning
Never in my life have I been so free for so long to focus on one thing. There have always been extra curriculars, homework, classes, social obligations, miscellaneous other responsibilities that chip away at life, hour by hour. 4 weeks ago, I wondered: “how long can you focus?” And it is amazing how much you can do and learn when you put your heart/mind into something. So, what can I accomplish if I put the same amount of focus into something else? I don’t know that a pure focus approach is suitable always, but it really is a key part of grad school and doing research.

Being healthy
This is actually just a continuation of things I’m learning after college. 🙂 Oddly, there was never much incentive in my life to be healthy. Over the last month, I was healthier than I ever was. I took the time to eat enough, sleep enough, relax enough, and even exercise! I told most people ‘sorry, I’m MIA this month, poke me in September?’ There was nothing but prelims and me time (okay, and also a journal paper deadline 3 days after the prelim). Pushing everything else aside, reminded that I can be free (aside from prelims).

Now, without prelims, can I still be free?

How do you prepare for the prelim?
I stumbled around a bit at the beginning, not knowing quite where to start, how to split my time between the paper and studying, and being irked by the typeset of the Callier and Desoer book. Eventually (by the last week), I fell into a nice routine of:

  1. Do old prelim problems.
  2. Note down confusions. Note down topics to learn/review.
  3. Discuss confusions with study group.
  4. Read/review topics.
  5. Repeat.

I recommend getting into that routine sooner. I also spent the last 2 days before the exam going through the lecture notes from EE221A, to pick up anything I might have missed in ad hoc studying, which I also recommend. Preparation will vary from person to person, but the general advice for preparation seems to be:

  • Get a good study group and study with them. Early and often.
  • Ask older students for help, e.g. through mock exams.
  • Relax the day before the exam. (And have great friends who convince you to do so. 🙂 )

The actual prelim
You study for a few weeks, discussing question after question, reviewing topic after topic. It all seems to be building up to something grand. You calm yourself the couple hours before the exam with some hot tea and a good book, unsure how you’ll perform when it matters. But then you go in to the examination room, a professor hands you a question and tells you you have 16 minutes, and you get started just like that. You cite theorems, sketch some proofs, and describe your intuition. You remain brief because there’s a lot to get through. You work out small examples when you are unsure of the full approach. Along the way, the professors attempt to hint you along. And you chug chug chug along. 48 minutes later, you thank the committee and leave the room. That’s it. The prelim exam itself is fully expected, almost routine. The bulk of the gains (learning, making friends, etc.) happen beforehand. So, don’t have too high expectations for the prelim exam itself. 🙂

Additional study references
– Modern Control System Engineering, in particular Chapters 3,5,10 [link] — great for perspective on modern vs classical control, control tools
– Linear Algebra Done Right — self-explanatory

Special thanks to Eric Kim for feedback on this post. Also thanks to all the friends who helped us prepare!

Update: average rating of the overall prelim experience this year is 7.8/10. Caution: statistics is dangerous, sample may be biased.

Professor Seth Teller

seth teller - shrinkrob

Professor Seth Teller, my former advisor (as an undergrad researcher), mentor, and academic role model, passed away earlier this month. He truly and passionately worked towards addressing important problems (with autonomous vehicles, assistive technologies, and robotics for disaster recovery at least!), somehow with both vigor and patience; he has done so much, and yet there was so much more to do and more to come. The situation is entirely shocking to me, and I wanted to share some words.

On 7/12, I was reminded of how compassionate of a community MIT is. I woke up to an email with the subject line “Call me ASAP” from my former grad student supervisor David Hayden. It had been more than 1.5 years since we were last in touch, but he wanted me to hear the sad news from a person and not from something less personal (i.e. email, internet). (Thank you, David, I really appreciated it!) And it’s a great reflection of the warm person that Seth was (and the people around him!). No matter how busy he was, he would smile and greet me in the halls, and always made time to meet with me when I asked. Throughout the day, friends messaged me, and I messaged friends, to make sure that everyone was doing alright. A couple years out of MIT now, I am reminded that Seth has touched so many people, so many lives. Even friends who did not know him except as a professor reached out to say a few kind words.

I want to share one small anecdote, which has affected me to today.

About 2.5 years ago, having very little clue about what I wanted to do/achieve with my life (what some of us fondly call the quarter-life crisis), I went to Seth Teller at a loss and told him the executive summary of my vague interests: “I think self-driving cars are pretty cool.” Seth had co-led the MIT DARPA Urban Driving Challenge team back in 2006, but at this point, it was mostly a past project. He told me the following: “If you have an idea of what your passion in life is, then you have to go after it as hard as you possibly can. Only then can you hope to find your true passion.”

Anyone can tell you to go after your dreams. Seth’s insight is that dreams and ambitions are not always clear from the start — they may be hidden, they may manifest themselves in several forms. He knew that hard work is required to find them, extract them from the mess of school and experience and daily life, pursue them, and achieve them.

Shortly after, I left his group and joined the Distributed Robotics Lab (under Daniela Rus, MIT), where I started studying transportation problems from a computational/robotics perspective and did my Masters thesis on algorithms for automatic mapping (“GPSZip: semantic representation and compression system for GPS using coresets”). And now I have moved on to Alex Bayen’s group at Berkeley to continue studying the problems of estimation, prediction, and control/automation of current and future transportation systems.

In short: When I grow up, I want to be like Seth Teller. I want to work on important problems, and I want to help people. I want to support the people around me, and I want to help people find and go after their dreams. And I want to always take the time to smile and say hello.

I am grateful for every short minute I spent with Seth. For more information, here is the initial press release, the investigation update, and his personal website. I do not know the circumstances for his death, but I am very sorry for the world (and especially those closest to him) for the loss.