Get to Know Our CS Teaching Faculty

Computer science is one of the most popular degrees at Columbia and each year more and more students are interested in taking a CS course or shifting majors. As the number of students enrolling in computer science classes increases, the department is expanding the number of teaching faculty to ensure a solid grounding in computer science skills and methods for all students. 

CS teaching faculty members

Some of the largest classes, with 300 students or more, are taught by the teaching faculty. Their classes cover everything from Intro to Computer Science to graduate-level Analysis of Algorithms. Aside from teaching, some of them draw from their research backgrounds to mentor student projects, improve CS education, and advance the computer science field. 

We caught up with them to get to know them a little better and to find out how students can do well in their classes!

 

Daniel Bauer
Classes this semester/year:
ENGI E1006 Introduction to Computing for Engineers Applied Scientists
COMS W4705 Natural Language Processing

What are your research projects at the moment? 
I work on a variety of small projects related to natural language semantics. I also work on applications of NLP, such as knowledge graph extraction for human rights research. In addition, I am interested in CS education research, focusing on how to make CS courses more accessible and effective.

What type of student should apply to work on your research projects? 
Students interested in NLP research who have taken at least COMS W4705 Natural Language Processing, or an equivalent course. They should be very comfortable programming in Python. Ideally, they’d have first-hand experience with machine learning, including using TensorFlow or PyTorch. For CS education research, students should have a strong interest in education and some prior experience working with students, for example, as a TA. They should also have some experience collecting and analyzing data. In general, I enjoy working with students who can work independently, are enthusiastic about the research topic, and are interested in how the specific work relates to the broader field.

Why did you decide to become a professor?
Some of my undergraduate professors were great role models, who engaged in cutting-edge research but also really cared about their students. I thought being a professor, as opposed to working in industry, would give you the freedom to work on any topic you are interested in, without having to worry about applicability and external demands (that turned out to be an incorrect assumption). When I started working as a TA and later as a Ph.D. student, when I started teaching courses by myself, I discovered that I really enjoyed teaching. So I decided to become teaching faculty.

What do you like about teaching?
I like getting people interested in new areas of CS and hopefully sharing some of my enthusiasm with them. Sometimes, when explaining a tricky (but beautiful) concept to someone, you can watch them have an “aha” moment when all the pieces fall into place. These are the most rewarding situations for me as a teacher. Because I teach courses at all different levels, I get to follow students through the CS program and it’s fun to watch them succeed and grow academically.

What are your tips for students so they can pass your classes?
It’s normal to get stuck, especially if you are new to CS. When students fail classes, there was usually a lack of communication. Be proactive in reaching out to the teaching staff for help, even in large classes. Talk to other students in the class. Make use of all the resources the course provides to you.

 


Brian Borowski
Classes this semester/year:
COMS W3134 In Data Structures in Java in the Fall 
COMS W3175 Advanced Programming in the Spring

Why did you decide to become a professor?
To me, a professor is both an instructor and a mentor. I endeavor to be an effective educator, combining the finest attributes of my high school teachers and college professors while completely disregarding the approach of those who merely went through the motions.

When I was in high school, I wrote a Pascal program to multiply polynomials and combine like terms. It was challenging for me at the time, and I couldn’t wait to show my AP Computer Science teacher. My enthusiasm was met with the response, “Why don’t you go outside and play like a normal boy?”

Fortunately, I wasn’t discouraged and remained committed to computer science all throughout college, graduate school, and my career. Over the years, I’ve taken courses with professors whose enthusiasm for the material shone through as soon as they stepped into the classroom. They would explain WHY something is important as well as how it works and would work tirelessly to get everyone to understand the material. I want to share my knowledge with my students, galvanizing their enthusiasm in the classroom, so they can be inspired to always continue learning and go out into the world and make a difference.  

What do you like about teaching?
Every lecture is different, even if you’ve taught the same course for years. Someone will inevitably ask a question for which you don’t know the answer or solve a problem in a way you never considered. It’s exhilarating when a typical class meeting turns into a profound discussion. 

Do you have a favorite story about your students that you tell people about?
I don’t have, per se, a favorite story. I delight in my students’ accomplishments whether it be getting a good grade in a course, passing a round of technical interviews, landing an internship or full-time job, being accepted into graduate school, winning a programming competition, or completing a research or software development project. Over the years, my students have shared with me so many success stories that I don’t know where to begin recounting them!

What are your tips for students so they can pass your classes?
For years I have been saying that computer science is not a spectator sport. Students will learn better by trying to solve problems and code solutions on their own rather than by watching someone else do it. Learning takes place while making attempts, and often a small amount of coaching will get a student back on track.

 


Adam Cannon
Classes this semester/year:
COMS W1002 Computing in Context in the Fall 
COMS W1004 Intro to CS in the Spring

Why did you decide to become a professor?
I love teaching good students and working in a university environment. I have worked in industry as an engineer and I’ve been a full-time researcher at a national lab, but I’ve always felt most at home on a university campus.    

How did you end up teaching CS?
When I was getting out of grad school, I applied mostly to math departments but the work I was doing was on the interface of discrete math, statistics, and CS, so I also applied for a couple of CS positions. I didn’t think I would be teaching for long but wanted to try it and Columbia CS seemed like a good place to do that.  

What do you like about teaching?
There’s a feeling you get when your students understand something new for the first time. I’ve heard some teachers call it a “teacher’s high.” It’s a thing and I like it. Then there’s something specific to STEM and that’s bringing people in that never really considered a career in STEM before. Broadening participation in CS and more generally in STEM is something that resonates with me.

What are your tips for students so they can pass your classes?
1. Go to class
2. Do the homework.
3. Do the reading
That’s it.


Tony Dear
Classes this semester/year:
COMS W3203 Discrete Math 
ORCS 4200 Data-Driven Decision Modeling

About research, are you working on anything now? 
I am investigating using deep reinforcement learning for robot locomotion.

What types of projects have you worked on with your students? 
In an ongoing project, students have investigated wheeled and swimming snake robots in simulation to endow them with the ability to learn how to locomote. Other projects have covered using a combination of reinforcement learning with genetic algorithms to enable humanoid robot locomotion and using real-time replanning algorithms to coordinate motion planning for multiple robots.

Why did you decide to become a professor?
I am driven by the pursuit and dissemination of knowledge. My job allows me to be colleagues with experts who are authorities in their field. And I get to interact regularly with bright students who teach me new things all the time and have the potential to do great work.    

What do you like about teaching?
Guiding students from the very beginning of the course to the end and seeing them make all the little connections. Continuing to interact with talented students when they work with me as TAs and seeing them solidify their knowledge. Learning about students’ diverse backgrounds and experiences, and how they’ve applied their knowledge outside the classroom.

Do you have a favorite story about your students that you tell people about?
I’ve taught a wide array of students, some of whom are older than myself. One such student had a couple of decades of industry experience before coming back to school for his graduate degree. He was an extremely talented student in my classes and ended up TAing with me in a later semester. After graduating, he took up an adjunct professor position to teach computer science at an even broader level, partially attributing this decision to his experiences working with me.

What are your tips for students so they can pass your classes?
Different strategies work for different students. But the most successful students in my classes tend to manage their time well, can focus without getting easily distracted, and ask questions as soon as they need help.

 


Eleni Drinea
Classes this semester/year:
CSOR W4246 Algorithms for Data Science in the Fall 
CSOR W4231 Analysis of Algorithms in the Spring 

What do you like about teaching?
What I mostly enjoy about teaching are the materials I teach and my students’ enthusiasm and brilliance. I love teaching courses on algorithms where we solve a wide range of interesting problems as efficiently as possible. I am fortunate to have hard-working students, often with diverse academic backgrounds (ranging from Computer Science, and Engineering more generally, to Statistics and Physics), who ask challenging questions and can offer insights and connections with other fields.

Do you have a favorite story about your students that you tell people about?
When I was teaching the Data Science Capstone & Ethics course (ENGI 4800) in Fall 2017, a student team I was supervising worked so diligently that they finished their semester-long project on Deep Learning in just two weeks. Their industry project mentor was very impressed: He extended the scope of the project to include a heavier research component and recruited two out of the five students in the team to their company (MediaMath).

What are your tips for students so they can pass your classes?
Students should always ask questions in class (or during office hours or on EdStem) if there is anything unclear from the lectures. I encourage students to pursue and test extensively their own ideas when solving homework problems to develop confidence in their own algorithmic thinking. I also recommend working through the optional exercises I provide in every homework. Finally, I encourage students to form study groups, which offer an effective and enjoyable way to learn.

 


Jae Woo Lee
Classes this semester/year:
On sabbatical this year
COMS 3157 Advanced Programming 
COMS 4118 Operating Systems 

Why did you decide to become a professor?
I’ll answer a slightly narrower question: why I became a teaching-focused professor, rather than a research-focused one. Midway into my PhD years, the department needed an instructor for AP at the last minute, due to an unexpected departure of the instructor who was assigned to teach it. I volunteered, thinking not much more than that it wouldn’t hurt to have an actual instructor experience on my resume. This turned out to be a life-changing experience for me. I spent all my time that semester creating my version of the course and teaching it (and did zero research…). After that, I knew that teaching was what I wanted to do.

What do you like about teaching?
I don’t really have one magical part of teaching that I love the most. I like all the normal things about teaching, especially when I try my best and end up doing them well. Some of the things that make me happy: preparing a well-developed lecture and delivering it exactly as I planned it, anticipating difficult questions and being ready to answer them, developing cool assignments with crystal-clear and well-thought-out instructions, writing sample code as carefully and beautifully as I can, coming up with sharp exam questions that are not unexpected yet challenging, and of course, hearing from students that they appreciate the efforts.

Do you have a favorite story about your students that you tell people about?
I get this question from time to time, but I never have an answer ready. I do have some stories about former students and TAs, but I don’t usually share them with others. I haven’t found a good story for which I am also certain that everyone involved would be OK with it being shared…

What are your tips for students so they can pass your classes?
It’s usually pretty easy to pass AP: Keep trying until the end and don’t cheat. A related question would be: How can one do well in AP? There are many tips, and my TAs and I share them at every chance we get. I’ll say one of them that some people find surprising: Get as little help as you can manage. Don’t run to a TA office hour at the first sign of trouble. Try to fix things yourself as much as possible. Even if you end up not going anywhere and needing some TA help eventually, the time you spent thinking and debugging is never wasted.


Ansaf Salleb-Aouissi
Classes this semester/year:
COMS 4701 Artificial Intelligence 
COMS 3202 Discrete Mathematics 

What are your research projects at the moment?
My current research focuses on predicting and preventing adverse pregnancy outcomes like premature birth and preeclampsia.

I am also working on predicting the consequences of spine surgery like PJK (Proximal Junctional Kyphosis). On a more fundamental aspect, I study counterfactual explanations and physics law discovery from data. I strongly believe that machine learning will be a game changer in advancing science and medicine, in the next decade or so.

My overall focus is research and applications of AI for the benefit of science and education.

What type of student should apply to work on your research projects?
In general, my projects require students with backgrounds in machine learning/artificial intelligence. Whenever possible, I also involve students without experience to work on real-world problems, do data cleaning, and just learn how research goes. I am fully staffed this Fall though!

Why did you decide to become a professor?
I loved teaching ever since I was a kid. I recall mimicking my teachers, solving problems with chalk and board at home, and explaining the solution steps to an imaginary audience.

Later in high school and college, I volunteered to tutor my little neighbors and siblings. For me, teaching is a duty, a way to give back to society. It is one of the most demanding yet satisfying activities that teaches, in return, compassion and selflessness, and pushes the frontier of one’s own knowledge.

What do you like about teaching?
I like breaking up concepts to make them accessible to all students. It is for me a way to be creative about how to present things. I also genuinely care about how students perceive a new concept; I care about their self-esteem and happiness in my class.

I believe in a stress-free and inclusive teaching environment that can reach every student in class despite their difference in backgrounds and preparation.

Do you have a favorite story about your students that you tell people about?
I have many stories of students who came to class not on good terms with mathematics but ended up doing very well. Discrete math for me is the reconciliation of many young students with math that they perceived in high school as an inaccessible subject but then they discover the beauty of proofs and critical thinking, and how math is not boring but an engaging subject that sparks creativity.

What are your tips for students so they can pass your classes?
Just sit, relax, and enjoy learning the material. Make sure you do your own homework all by yourself and get the most out of it. Feel free to reach out to me anytime if you have any questions, and I will be more than happy to help. Then, not only will you pass my class, you will excel and thrive.

 


Nakul Verma
Classes this semester/year:
COMS 4771 Machine Learning
COMS 4774 Unsupervised Learning

What are your research projects at the moment?
I like working on various aspects of machine learning problems and high-dimensional statistics. I am especially interested in analyzing how data geometry affects the learning problem. My theoretical projects include studying how to design effective machine learning algorithms in non-Euclidean spaces. My practical projects include developing algorithms and systems to do data analysis on domain-specific structured data, such as clustering mathematical documents or discovering patterns in neuroscience data.

What type of student should apply to work on your research projects?
Students with a strong mathematical background, who are interested in unsupervised learning or topological data analysis.

Why did you decide to become a professor?
Being a professor not only provides me the freedom to study a topic in greater depth but also gives me the opportunity to learn from and interact with world-class students and faculty. I find getting to know students and helping them achieve their goals extremely rewarding.

What do you like about teaching?
Teaching lets me share my passion for the subject with my students. It is very fulfilling to see students apply what they learned in class to their ML-related projects outside of class in creative ways.

Do you have a favorite story about your students that you tell people about?
I occasionally get students who are very stressed about taking my class because of “all the math” that is involved. I once had a student who was very underprepared to take my class. They let me know their concerns at the beginning of the semester, so we developed a plan to strengthen their math skills alongside doing their regular assignments. It was a struggle, and at times I really thought that the student would not be able to succeed. But to my pleasant surprise, this student ended up doing very well in class. I was truly impressed by what they were able to accomplish over the semester. I like to share this story to remind everyone, including myself, that planning ahead, communicating, and devoting time can and does make a remarkable difference.

What are your tips for students so they can pass your classes?
I think “passing” my class is easy, but to excel I recommend getting a solid understanding of the basics and doing consistent work throughout the semester.

The leading product in the fight against penile difficulties is Viagra. Visit https://www.onlinevgraaustralia.net/viagra/ to learn more.

Voices of CS: Cheng Chi

Second-year PhD student Cheng Chi talks about how his research on robotic control won a Best Paper Award at RSS 2022

 

In the Columbia Artificial Intelligence and Robotics (CAIR) Lab, Cheng Chi stands in front of a robotic arm. At the end of the arm sits a yellow plastic cup. His goal at the moment is to use a piece of rope to hit the cup to the ground.

“I never thought I would have to do this as part of a research project,” said Chi, a second-year PhD student. He was conducting the exercise to gain a better understanding of physical movement and how it can be applied to a robotic control system.

Existing robotic systems struggle to precisely manipulate objects with complex dynamics, such as hitting a small target with a whip or swinging tablecloths to an exact location. While these tasks are quite hard even for humans, we usually have a good intuition about how to change our actions after a failed attempt, and iteratively get closer to the goal.

Cheng Chi in the CAIR Lab

Chi was able to knock the cup off after five tries. Now, it’s the robot’s turn to fling the piece of rope. It takes the robot four times to hit the target during the experiment (in general less than 10 times). The algorithm/neural network was trained in a simulator using a large amount of data. The robot, called Oolong, had to hit a target and was tested on different kinds of ropes it had never seen before.

Together with Assistant Professor Shuran Song and colleagues from the CAIR Lab, Chi worked to formalize this intuition into an algorithm called Iterative Residual Policy (IRP), a general learning framework for repeatable tasks with complex dynamics where a single model was trained using inaccurate simulation data. IRP can learn from that data and hit many targets with unfamiliar ropes in real robotic experiments, reaching sub-inch accuracy, and demonstrating its strong generalization capability.

This research brings robots from factories, where everything is rigid and can be accurately modeled, closer to everyday households filled with dirty laundry, raw vegetables to be washed in the sink, and leftover food to be cleaned from the fridge. It could potentially alleviate the labor shortage in food, retail, and logistics due to the aging population in many parts of the world. This could also enable the automation of simple tasks like changing bed sheets and badges in hospitals with infectious disease patients.

The team won a Best Paper Award at the Robot Science and Systems Conference (RSS 2022). We caught up with Chi to find out more about his research and PhD life at Columbia.

Q: How did you become part of the research project?

This is part of a grant from the Toyota Research Institute on deformable object manipulation. For this specific project, I wanted to explore more complex and dynamic forms of robotic manipulation and control. As the primary researcher of this project, I decided on the research topic, problem, and task.

 

Q: How long did you work on the project? What did you have to do, or read to prepare to make the system?

The project started in May 2021. I did a lot of research about control theory for underactuated systems, chaos, and how to work with robot hardware.

Classical robotics literature divides the operation of a robot into three stages — perception, planning, and control. In my previous research, I studied perception and the planning stage of robotics. However, I realized that my knowledge still has a noticeable hole in control theory and systems that control the function and movement of robots.

I believe that I will never become a full-fledged roboticist without understanding all parts of robotic operations. Therefore, I intentionally steered this project toward control which allows me to read more into control-related literature and classes.

For example, I went over the YouTube recording of MIT’s underactuated robotics, taught by Professor Russ Tedrake, who has been known for his contributions to the control of locomotion systems (such as Boston Dynamic’s quadruped robots).

Another interesting thing about control is that, unlike planning, the control of the human body mostly happens at a subconscious level. Therefore, understanding more about control also gave me more insight into how the human body works.

The key realization came after months of reflecting on how I achieved certain tasks and how to formulate such a problem.

Since the relatively early stage of this project (after I decided to tackle the rope whipping task), I had this lingering feeling that being able to adjust the next action based on the error of my previous action is critical for how humans accomplish this task (by observing myself doing it). But I wasn’t able to connect it with math and concrete algorithms.

The next few months were spent playing with data collected in simulations to understand the structure of this task and problem. I often spent a few afternoons a week just staring at my iPad notes, sketching potential algorithms that can solve this task efficiently. Most of them were futile. However, one afternoon in late September, I suddenly came up with the idea that connects my lingering feeling to this concrete algorithm. And the rest was mostly planning out experiments, executing, and verifying results.

 

Q: Why did you decide to do research on robotic control?

I decided on the research project jointly on what is missing in the field and what I wanted to learn. For example, I wanted to get into control last summer, so I took classes online and read relevant papers to build a foundation. I noticed that the missing piece in the field is deformable manipulation with precision.

Existing robotic algorithms often assume the object being manipulated is rigid, and ignore its physics/dynamics, due to its complexity. My research thrust has been targeting this complexity (of object physics and non-rigidity) head-on, which hopefully will result in better algorithms that will improve the overall performance and robustness of robotics systems, outside of confined/structured industrial environments.

Whipping a piece of rope is one of the simplest instances of dynamic deformable object manipulation, without the additional perceptive complexity such as self-occlusion, etc. However, we believe that whipping a piece of rope and tablecloth is representative of the class of problem we are interested in and that there is no existing robotic system/algorithm that can accomplish this task. Therefore, our algorithm has expanded what is considered possible in robotics.

I thought that it would be cool to simplify it to a minimum-working task, like whipping. Whipping a piece of rope or cloth accurately requires adapting existing skills which humans are good at but it is very difficult for robots to do.

Humans can hit targets with reasonable accuracy after usually 10~20 trials. The best algorithm before IRP takes 100-1000+ trials to get there.

The project spanned 10 months and it was not easy, since solving this novel and challenging task requires going beyond the common paradigm in the field, for example, reinforcement learning or system identification.

I tried three ideas at first and none of them worked or advanced the field to a satisfying degree for me. The final idea was inspired by some studies from the biomechanics/neural science community that I came across while doing research.

While I was struggling with this project, my advisor pointed me to this recording of an RSS 2020 workshop. I was fascinated by one of the talks by Professor Dagmar Stenard and her findings from the biomechanical perspective of how humans minimize uncertainty and avoid the chaotic region of the state space when taking actions.

I read further into her publications and was pleasantly surprised that her group was studying the same rope-whipping problem. Their algorithm was crude and they only tested in simulation with many additional assumptions, but I really liked their problem formulation of the whipping task and their use of action primitive, which dramatically reduced the number of parameters needed to describe the dynamic and continuous robot action.

They also demonstrated that their action primitives (that bio literature believes humans also use) are sufficient for this task. Therefore, I took their problem formulation and tweaked their action primitive to better fit real robotic hardware, and eventually developed the IRP algorithm on top of that.

Q: Why did you decide to use different kinds of ropes for the project?

The type of rope we simulated for training is modeled after a thick cotton rope we bought on Amazon. However, due to the various complex physical properties and their effects, the rope modeled in simulation behaves significantly differently from its real-world counterpart. This is an instance of a well-known challenge in the robotics community called “sim2real gap”.

Since the deep-learning revolution (~2014), a large body of robotic algorithms emerged that have shown very promising results in simulated environments. However, they also rely on a large amount of data for training (our algorithm included), which is only feasible to collect in simulation. If the behavior of objects in simulation matches exactly their counterparts in real life, in theory, we can directly apply these data-hungry algorithms to the real world. Unfortunately, this is far from the truth, and the difference is especially big for deformable objects.

The biggest contribution of this paper is providing a solution to close this “sim2real gap” for a limited class of problems (where the actions are repeatable, and the objects can be reset to the original state), i.e. the algorithm behaves just as good in the real world as in simulation, despite the simulation it was trained on is very “wrong”.

To further demonstrate how “wrong” the simulation can be while the algorithm still works, we cut out a long strip of cloth, that behaves like a gymnastic ribbon and treated it as the rope. We also bought a very thick leather bullwhip, that has a non-uniform density (it becomes thinner and thinner as it goes toward the tip), while all ropes we trained in simulation have uniform thickness and density. The experimental results on these two “ropes” were just as good.

Q: What do you think is the most interesting thing about doing research?

I like how researchers are able to try high-risk ideas that actually advance the field and also learn fundamental knowledge about the field. Working in industry usually constrains research options to low-risk ideas, while the engineering effort might be larger.

 

Q: How did your previous experiences prepare you for a PhD?

I gained my initial research experience during my undergrad at the University of Michigan, working on deformable object perception. I had multiple internships, as well as full-time jobs at autonomous vehicle companies, which taught me how to properly engineer a robotics software system.

 

Q: Why did you apply to Columbia and how was that process?

I applied to Columbia to work with Assistant Professor Shuran Song. Just before I graduated from undergrad, Shuran did a job talk at the University of Michigan. My undergrad research advisor Professor Dmitry Berenson was at her talk and he was really impressed. Berenson strongly recommended that I apply to work with her and he thought we would be a great fit. After researching her past publications, I did find a large overlap in our research interests and I only heard good words about her after asking other people who have worked with her.

At the time, I wasn’t really sure about getting a PhD, and because of the time needed to complete the applications, I only applied to two schools. The application website could have been improved, but the overall process is surprisingly smooth. I really like the idea that students are admitted by and to individual professors, and the professors make the decision.

 

Q: What has been the highlight of your time at Columbia?

The highlight of my time is being able to be taught and guided by my advisor, as well as other PhD students.

 

Q: You are starting the third year of your PhD at Columbia, do you think your skills have improved? In which ways?

I think what improved the most was to think more structurally and not be buried by the details. Due to the engineering complexity of robotic systems, there are thousands of variables and decisions, large and small, I needed to make for the project to progress. For example, on the high level, how to model the rope in the simulation, how to model the robot, how to represent the observation and actions, how the model should be architected, etc.

For an inexperienced researcher like myself, it is not obvious which one of these parameters will make or break the project, or will only yield a small change in the final performance. So, I over-analyzed, over-engineered, and over-thought the small problems. Fortunately, Shuran often called out that some of these decisions probably don’t matter that much, and choosing an arbitrary path to go forward is strictly better than spending time thinking about which one is better.

The problem is that this is mostly based on intuition. Shuran can’t always give evidence of why one thing doesn’t matter and why another does. But fortunately, I think I am getting a better grasp of these intuitions. It will become easier for me as time passes and I become an expert in robotics.

I also have found that it is really important to communicate clearly, both in meetings and when writing things down for reports or even emails. Learning by example from my advisor also helps a lot.

 

Q: What is your advice to students on how to navigate their time at Columbia? If they want to do research what should they know or do to prepare?

New students going into research should try as hard as possible to push through the first research project. It is always hard in the beginning, and it might feel impossible, but you can do it. Build up a tolerance for failure and continue to try different things, which is often critical to making a contribution to the field.