First of all, I want to mention that I really love data structures. The 'Data Structures And Algorithms' class, which I took in the summer quarter here at DePaul University, changed how I think so much. Now I always analyze any code I write in the back of my mind. Asking myself questions as:
- Is it efficient enough?
- Is this the best way to store the data?
- What are the operations that I will need to do quite often on these data? Maybe I can focus on optimizing those more?
It was a fun and challenging course that I really enjoyed. Yet, I'm quite sure that there's still so much to learn. There's no single class that will give you everything. There're people who spent years and years of research to come up with maybe slightly better solutions than existing ones for certain problems. I believe that as much as this field is a science, it is also an art and an intelligence.
Now back to the 'Search List' data structure that we had to design for this project, so that another team in the class will implement it. Everybody, gave it a bit of thought, and came up with his own idea. I spent a whole night working on it to present my idea to the team during our Skype meeting that we arranged the next day.
My design idea to implement it as a binary search tree was welcomed by the other guys, and they thought it was the best approach. Now it was my responsibility to write the design document for the other team. Everyone thought that I would come up with a single-page document that has some general design decisions that I made. Well, that's not how I think! Whenever I'm assigned a task, I believe I'm 100% responsible for it and I must be fully committed to produce the best output that I can. For me, and that's something I learned from my previous work as a Telecom Engineer, being a team member means lifting your team up on your shoulder if you can. It's not like just do your part and that's it. It's more like do your part and help others do theirs as well. It's exhausting sometimes I have to say, but it's very rewarding when you see your team appreciates you and the team itself is prospering. This is what I came up with:

They were surprised that I wrote a 5-page well-formatted design document, with examples, sample code, diagrams and UML. I felt really happy that they liked it.
I also took the challenge of implementing my design just as a coding exercise. I wrote the whole data structure in Java, and then tested it, and it worked. Well, we're using C# for this class, and I could have definitely written it in C#, but here's why I wrote it in Java:
- While C# and Java are quite similar, I haven't used Java for a while, so I thought this is a good time to practice a bit.
- I love Eclipse, more than Visual Studio.
There's something disappointing though. While we all thought that this was the best easiest approach, the professor told us yesterday that he has a better and an easier solution for this data structure than the complex binary search tree, and he will show it to us next week.
I can hardly wait!! It is very interesting and very exciting to know how much I still need to learn. I really believe in this saying: "The more you learn, the more you discover how less you used to know". This is absolutely true! And above anyone endowed with some knowledge, another who knows more!
Back to the love of data structures, I really thank Mr. Keenan for forcing us to write our own whenever we need any. I'm sure we'll reap the rewards of this later on. I think I already started to reap some of these rewards now, by feeling so much comfortable with data structures. I also had to send a thank you e-mail to my data structures class teacher, Mr.
Jonathan Gemmell, for being a great teacher. We have this saying in Egypt, "I'd become a servant for whoever teaches me a single letter!" That's why I felt grateful, and had to thank him. Here's what he said when he replied back to my e-mail:
"Thanks, but it's really not hard to teach a student as motivated as you. Good luck in your degree!"
I'm really happy that I made the decision a year ago to come to DePaul University. So far, it's been a great place to learn.