Friday, October 9, 2009

Grace Hopper Celebration Post 2

The Grace Hopper Celebration was amazing and life changing. I absolutely loved being there and meeting so many other women who are interested in computer science. I believe that this is a MUST attend conference for any woman interested in computer science. Go at least least once! It is a mix of academic and industry topics.

The first reason this conference is so great is the mirroring. I can not explain why seeing someone who is like you is so important but I can tell you first hand that it is key. For some reason, seeing other women who are successful and interested in computer science is just very motivating. I came back from the conference very energized.

Another aspect of the conference that is life changing is the casual mentoring. It is easy to meet people further along on similar paths and it is easy to ask questions and get help and mentoring. I talked to several people who ran workshops and talks and they were very helpful. I received a lot of advice.

Lastly, the conference is great for networking. I have made a lot of connections with people. I usually meet people at conferences as I am very outgoing and friendly. However, this was by far the easiest conference to meet people. Everyone was so friendly and I left with 3 to 4 times the number of connections as compared to a typical conference.

I am used to going to conferences where I am one of a few women. This conference is mostly women and only a few men. That fact alone makes it an interesting experience, but the mirroring, mentoring, and networking are the key reasons why this conference more than any other is a must attend conference for every woman in computer science. Like I said, go atleast once!

Here is a great posting about specific events at Grace Hopper this year.
kd-PhD's Post on Grace Hopper

Lastly, my friends and I did a workshop at the conference on Origami and deltahedron. The name of the workshop was Computational Geometry with Origami, A Computer Science Circle. I have been learning how to run math circles for a few years but this was the first computer science circle I have done. More information about math circles can be found here:
The Math Circle
For the computer science circle at Grace Hopper, we made various deltahedron and explored the mathematical properties. It was a huge success and a personal milestone. 75 women and a few men showed up for the workshop. I'll write up the details of the material for this workshop in my next posting.

Tuesday, September 29, 2009

Grace Hopper Celebration Post 1

Tonight I am going to the Grace Hopper Celebration of Women in Computing.
GHC09

I will blog about my experience. The first thing that is completely awesome about this conference is the CONNECT program. CONNECT

I submitted a profile and I listed out who I wanted to meet. Others did the same and then matches were sent to me. I have sent off a bunch of emails to the matches and a few people have already responded. So, I already have plans to meet someone tomorrow morning at registration. We are both interested in algorithms. This is already an amazing experience. I have never made friends before I actually hit the conferece! I predict that my facebook number goes up by at least 20 after this conference! I wish all conferences had a CONNECT program. It is very helpful when you are new to a conference.

Saturday, September 26, 2009

Advice for Newbies at conferences

I learned a lot going to the Graph Drawing Conference that I want to share. So, I am an expert in another field. I'm 38 years old and have worked in IT in industry since 1994. I know a lot of information. I have given talks and taught classes. I have been hounded by people wanting to get information about what I do so they can learn about it and advance their careers. I get emails from strangers asking for advice.

However, in the world of Theory of Computer Science, i am new. I went to the conference on Graph Drawing and I was pretty much lucky to understand parts of the talks. I was lucky to recognize certain words. But, for the most part, it was over my head. There was a part of me that wanted to leave. I'm busy and overtired and I need to do my homework!

However, I know better. I am a newbie to this world but i have the experience from other worlds that tells me what to do. Here is what i know is the right thing to do at a conference where you are a newbie.

1. Going to talks and just listening even if you are completely lost is part of the learning process. You will hear words and concepts and they will go into your head and sit there until years from now when you hear them again. It is all related. It will come up again.

2. Have something to say when you meet someone. Have an "elevator speech" ready. You are going to meet people at the conference. The first thing people tend to do is try to figure out who you are and what you are doing in your work. An elevator speech is a concept where if you are in an elevator with someone "important" that you have something to say prepared so that you make your pitch in that time. At a conference where you are a newbie, basically everyone is someone who knows more than you. When you meet someone, give your elevator speech in 2 mins and then ask them about themselves and have questions ready about the material. Try to get information from them. Be interested and engaged in the material.

3. Be respectful to yourself and others. At conferences we all get tired. Try to let things flow naturally and don't try to hard. Just relax. if you need a break from talking to people, then go walk outside or skip a talk break. It is better to be "on" when talking to others than to be checked out and half engaged when talking to others. Be respectful to yourself and get the rest for socializing that you need.

4. Help out. Ask the people running it if they need any help breaking things down or carrying things around. This is a great way to meet the conference organizers and the professors involved.

5. Follow up. So, after the conference, if a talk interested you then follow up on the material. Ask a professor for more info or a book to read. Email the people who did the talk for advice. Tell them you heard the talk and found it interesting but are a newbie and did not understand it. However, (and this is KEY) when you email someone ahead of you in any knowledge thing, be very short with your email. Often they are very busy and want to help but the emails people write are too filled with information for the person to digest. Make it short and to the point and VERY clear about what you need.

Hope this helps others. I also hope I can follow my own advice! Numbers 2, 3 and 5 are the hardest for me!

Wednesday, September 23, 2009

Graph Drawing Conference - Post 1

I am attending the 17th International Symposium on Graph Drawing in Chicago this week.

Graph Drawing 2009

DePaul University is hosting the event.

GraphDrawing Organization

Basically, Graph Drawing is about the visualization of graphs. There is a mix of topics including making software to implement graph drawing and pure theory topics regarding what sorts of graphs can be drawn and why.

This topic is a cross over topic between math and computer science, so the conference sees a mix of both.

The first talk I will attend today is titled "Why are String Graphs so Beautiful?" by Janos Pach.

"In graph theory, a string graph is an intersection graph of curves in the plane; each curve is called a "string". Given a graph G, G is a string graph if and only if there exists a set of curves, or strings, drawn in the plane such that no three strings intersect at a single point and such that the graph having a vertex for each curve and an edge for each intersecting pair of curves is isomorphic to G." - Wikipedia

I will be blogging about the conference this week.

Saturday, September 12, 2009

Exactly what math background is required for theory material?

I am about dive into theory. I have taken the undergraduate intro to theory class and now I am going to take the graduate level classes. First stop is the Theory of Automata which begins Monday night. We will cover finite state automata/regular languages and pushdown automata/context-free languages. We are using Elaine Rich's text.

As a beginning theory student one thing that I find difficult is knowing exactly what math background I need in order to be strong in my theory classes. Elaine Rich has an appendix that provides a review of math material.

Some of that topics in the appendix:
Logic
Sets
Relations
Functions
Closures
Proof Techniques
Mathematical Induction
Pigeonhole Principle
Complexity of Algos

What classes was I supposed to take to learn the necessary mathematics needed for mastery of theory of computer science, I wonder? Do a lot of theory folks have a few undergrad mathematics classes on their transcript? It seems like logic, discrete math, set theory, combinatorics, and classes that demand proof writing are needed. This isn't a huge deal, but to take 4 undergrad math classes, including the calculus I,II,and III in addition to the other required undergrad computer science classes for your undergrad seems like a lot. Is this what most theory people have done before hitting the theory material at the masters level? What other math classes are required to master theory? Which are more important?

This is a question that keeps me up at night as I scramble to get the math background and level of sophistication required to figure out theory and be a strong student of the topic.

Saturday, August 29, 2009

Theory of Computer Science - what is that?

We all know that computers solve problems. However, computers can only solve certain kinds of problems. They can't solve all of our problems! Even if we have unlimited processor speed and memory, there are still problems that can not be solved by a computer.

The Theory of Computer Science is the study of problems and the solutions to problems. The first line of business is to provide a set of mathematical abstractions for classifying and solving problems.

Let me clarify what I mean by a mathematical abstraction. One example is a PDA (Pushdown Automaton). Another example is a FSM (Finite State Machine). Here is a picture of a FSM.



This FSM is taken from Elaine Rich's book, Automata, Computability, and Complexity. If you look at the picture you will see some circles. These are states. We have state 1, 2, and 3. Some of the circles are two circles in one. These are acceptance states. As input the FSM takes a string. For example, lets put abbba into the FSM. The start state is state 1, because it has an arrow pointing into it that does not come from another state. So, the input {a} causes us to stay at state 1 because the arrow leaving state 1 with an {a} on it points back to state 1. The next input is a {b}. This causes us to move to state 2. Then we enter two more {b's} causing us to loop back to state 2 a few times. Lastly, we enter a final {a}, which causes us to move to state 3. State 3 is not an accept state. Recall that only the states with two circles are accept states. So, this means that the FSM above does not accept the string abbba. What strings would it accept? What strings would it not accept? Basically, this FSM accepts any string that does not have the pattern {ba} in the string.

I want to return to my point that FSM's are mathematical abstractions. There are many of these sorts of mathematical abstractions introduced in the theory of computer science. I wanted to give you a concrete example, but my main point is that the theory of computer science gives readers a set of mathematical abstractions for classifying and solving problems. The FSM is one and their are others. TCS (Theory of Computer Science) splits problems into groups based on which mathematical abstraction can be used to solve the problem.

Each mathematical abstraction (also known as a machine) coresponds to a language class. A language class is a grouping of strings that are members of the language. So, in our example above, the language accepted by the FSM are all strings that do not have a {b} that is followed by an {a}. Examples of strings that are accepted are: aaaaaabbbbbbbb, ab, bbbbbb, ab and the empty string. The empty string is accepted because state 1 is an accept state. The strings aba, abbbbabbbb, bbbba, and ba are all rejected by the FSM above.

Machines and languages are in a hierachy. FSM's are the most basic. For more intense problems, a Pushdown Automaton must be used. For problems too complex for a pushdown automaton a Turing machine must be used. If a language can be accepted or decided by a certain machine (aka mathematical abstraction) then it is placed in that category of languages. Regular languages can be accepted by FSM's. Context-free languages can be accepted by Pushdown Automatons. Decidable languages can be decided by turing machine's that always halt. Lastly, Semidecidable languages can be semidecided by turing machine's that halt on any string from the language.

The main idea for this post is to introduce the topic of the Theory of Computer Science. In conclusion, problems are classified into groups. This is accomplished by encoding individual problems into specific languages of strings. Mathematical abstractions are created and the languages are either able to be accepted by the machine or not. If a problem is able to be accepted by a certain machine then the problem is classified in that category of languages. Finally, some problems can not be solved by any of the theoretical machines. It can be shown that if a problem can not be encoded into a language of strings that can be accepted by a turing machine then it can not be solved by a computer.

I will write more posts soon to explain these different machines and languages.

Note: I am reading Elaine Rich's book, Automata, Computability, and Complexity. These are some of my notes and thoughts after reading chapters one, two, and three. All credit goes to her book for these notes.

Wednesday, August 19, 2009

Theory of Computer Science and mathematics Blog

I'm going to change the focus of this blog to Theory of Computer Science and math.

I am getting ready to start taking TCS classes exclusively and to really pour a lot of my time into learning the subject. So, i just want to focus my efforts there for now.

Cheers,
alex