Syllabus available here

Important information is also available about: how and when to contact your instructor, labs, etc.

This course is a survey of classic algorithms and data structures, useful for sorting, manipulating graphs, storing data collections and mappings. Students will acquire an understanding of generalization techniques for evaluating the complexity of these algorithms, and they will be able to apply these algorithms to a wide range of computer science problems. Introductory techniques for determining correctness and evaluating complexity will be presented. Students are expected to master basic skills and to develop an intuitive understanding of how the surveyed analysis techniques are commonly used. The main objective is that students develop their critical thinking skills and become able to make an appropriate choice of data structures given any problem, and to justify their choice in an articulate explanation.

As far as assignments and exams , there will be:

  • reading assignments, and homework assignments (randomly checked);
  • (announced AND un-announced) quizzes throughout the semester;
  • programming assignments: 4 or 5 of them (most probably 5) — turning all of them and making at least a C at each of them are required to pass the class;
  • 3 mid-terms;
  • 1 final exam.

Teaching Assistant
The labs will be held by a teaching assistant. Name and e-mail address of your TA: Jaime Nava,

Peer Leading Sessions
Peer Leading sessions will be held each week during half of the lab times. Two peer-leaders are in charge of those sessions: Cesar Chacon,, and ??, ?? For more information about peer-leaders and peer-led team learning, go to this website.

Textbook: Data Structures outside in, with Java, by Sesh Venugopal, Eds. Pearson Prentice Hall.

This class will meet every Tuesday and Thursday, from noon to 1:20pm in room 308.

The content of classes is (tentatively) expected to be as follows:

  • week #1: Presentation of syllabus. Introduction to algorithm analysis.
  • week #2: Algorithm analysis
  • week #3: Algorithm analysis
  • week #4: Stacks
  • week #5: Queues / Discrete Event Simulation / MT1
  • week #6: Discrete Event Simulation / Hash tables
  • week #7: Hash tables / Trees: general trees, traversals / Binary trees
  • week #8: Trees: binary trees, binary search trees, algorithms, classical problems and algorithms
  • week #9: Balanced trees: AVL, heaps
  • week #10: Trees: cont’d / MT2
  • week #11: Review of sorting algorithms: analysis, purpose, problems -> mostly about heap sort
  • week #12: Graphs: definition, use
  • week #13: Graphs: classical problems and algorithms / MT3
  • week #14: Advanced topics
  • week #15: General reviews
  • week #16: week of the final exam