Ali Erkan

Associate Professor and Chair, Computer Science

Data Structures

This course is a continuation of "Introduction to Computer Science" but the emphasis is now on data structures, their implementation, application, and (informally) their efficiency. Goals include: learning dynamic allocation and templates; comparing alternative implementations of user-defined data structures in terms of use, complexity, and practical performance; choosing appropriate data structures to represent the data for intermediate-level programs/problems; exploring recursion, particularly with sorting and tree traversal algorithms.

The following are a few of the more memorable moments from the class:

 

---

  • Ali: Whoever answers this question correctly will get a candy bar.
  • Class: What if more than one person answers it correctly?
  • Ali: Hmm, in that case, they will be fun-sized. 

 ---

  • Ali: [Reluctantly gives a Milky Way to Madeline] Here...
  • Madeline: Thanks.
  • JingRu: I am still waiting for my candy bar.
  • Ali: Really?
  • JingRu: Yes. When can I have it?
  • Ali: When did you answer one of my difficult questions to claim one?
  • JingRu: I didn't. I just want it.
  • Ali: Fine! Here, you can have mine.
  • Corey: What, you walk around with these things in your pockets?
  • Ali: No, when I bought one for Madeline, I bought for one myself too. [Gives his Milky Way to JingRu]. This means that you'll have to answer a lecture question sometime from now till the end of the semester.
  • Jingru: Oh... Then I don't want it.

---

[For those of you who do not watch the Family Guy, the following was an excellent reference (by Juan) to Stewie playing Pictionary in one of the episodes]:

  • Ali: [Wanting to make a profound statement about APIs, talking to the whole class] See if you can figure out what I'm drawing [starts to draw a three dimensional wall along the lines of Walls and Mirrors but no one gets it, of course, since he is actually using a different textbook]
  • Juan: It's jackal! Jackal! It's a jackal! Is it a jackal? It's a jackal! JACKAL!
  • Madeline: Time!
  • Ali: IF IT WASN'T "JACKAL" THE FIRST TIME, WHY THE HELL WOULD IT BE "JACKAL" THE NEXT 10 TIMES?!?
  • Evan: Why didn't you just draw a blackbox?
  • Ali: GA!

---

  • Ali: So, by swapping just one pair of numbers in the array, we can bring bubble sort down to its knees.
  • Todd: Yes, because if the smallest one is now at the end, it'll take forever for it to bubble back to the beginning.
  • Ali: That's right. This called an adversarial argument. It is the algorithmic equivalent of kicking someone in the crotch.

---

  • Jared: I missed you Ali.
  • Ali: Yeah? What do you want?
  • Jared: Can I have a hug?
  • Ali: No, thank you, I don't want to be sued.
  • Evan: That's OK, I can give him a hug.

---

  • Ali: In the simplest case, a field can be private or public.
  • Some student: So, if I am an object of one class, can I access the private fields of another object of the same class?
  • Ali: Yes. So the rule is, you cannot touch each others' private fields unless you are from the same class. [People laugh] Oh, come on, there is nothing wrong that. I said "fields" not "parts".

---

  • Ali: Jared, why do you look annoyed?
  • Jared: I am just mad at myself. So I could have implemented the dot product with just one line of code?
  • Ali: Yes. You do understand how it works, right?
  • Jared: Yes.
  • Ali: Good. I don't care if you hate yourself as long as you understand basic vector algebra.

---

  • Ali: I will give anyone a Dollar who answers that questions correctly.
  • Jared: Is it [says the right thing]?
  • Ali: There you go [hands him a Dollar] You are a dollar richer for taking CS220... Minus the money you spent to take the class.

---

  • Ali: [Having issues while trying to compile his code] Oh, I forgot that. [More errors] Yes, yes, I need to change this too. [More errors] That's a typo right? [More errors] Crap! [Finally gets it right] VICTORY IS MINE!

---

  • Ali: Today, we will write a program to check if a given expression is balanced. The expression can be arbitrarly long. And it can be arbitrarily deep. And there are four types of parentheses. We have the normal one, we have the bracket, we have the angle bracket, and, last but not least, we have the curly brace. [Notices no one is listening] That's the sort of knowledge that will make you a hit at frat parties. Just tell everyone the names of the four types of parentheses.
  • Chris: [Whispering to Zack] Might even help to get laid.
  • Ali: I HEARD THAT! [more quietly] And, no, it does not.

---

  • Ali: [Trying to clarify things, after noticing that the shape hierarcy example for inheritance has not worked out well] If the shapes are compatible, then they will fit together, even if you have not seen that piece before. Insert table A into slot B.

---

  • Ali: How do you spell "bollean"?

---

  • Ali: Does anyone know what a functor is? [No one says anything] It is one of the coolest names in programming. It sounds like name of a new phaser blaster but it actually means an object with only methods and no data.

---

  • Ali: So, you can pass the question to someone else if you don't know the answer.
  • Todd: I think I am going to go with Chris...
  • Chris: [Unaware of what's going on, since he is not listening] ...
  • Ali: His name is Chris, but I call him Potter.
  • Todd: Potter!
  • Chris: 'Sup?