Columbia University Graduate Engineering Distance Learning
COMS W3137 Data Structures & Algorithms

   COMS W3137 Data Structures & Algorithms

View a video preview of this course
Course Description: Data types and structures: arrays, stacks singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Design and analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following four courses: COMS W3133, W3134, W3137, and W3139.

Main Topics to be Covered:
-Recursion
-Algorithm Analysis
-Linked Lists
-Stacks, Queues
-Trees
-Heaps
-Graphs
-Hashing
-Sorting
-Cheating
Faculty/Manager: Peter Allen/Ben Shababo
Contact Information: Please contact the course manager Ben Shababo at bms2156@columbia.edu with any questions concerning this course.
Class Homepage:TBA
Credits for Course:4
Viewing Schedule: 3 lectures per week
Prerequisites:Computer Science W1004, Introduction To Computer Science And Programming In Java
Computer Science W1007, Object-oriented programming and design in Java
Computer Science W3203, Discrete Mathmatics (corequisite)
Required Text(s):Data Structures and Algorithm Analysis in Java, 2nd Edition by Mark Allen Weiss, Addison Wesley, 2007.
Reference Text(s):Java Language References - any Java book is fine, here are some choices:
Horstmann, Cay, Computing Concepts in Java 2, John Wiley, 2000
Horton, Ivor, Java2, Wrox Press, 1999
Lewis and Loftus, Java Software Solutions,Addison Wesley, 2001
Homework:There will be about 5 homework assignments with the possibility of an optional sixth due on a regular basis.
Midterm Exam:There will be a closed book midterm
Final Exam:There will be a closed book final
Grading:Homework assignments 40%, Midterm 25%, Final 35%
Notes: Course Structure:
There will be 2 required lectures each week, and 1 required recitation section attendance. There will be about 6 homework assignments on a regular basis, an in-class midterm (closed book and notes) and a 3 hour final exam (closed book and notes). The language used for this class is JAVA version 1.6 as implemented on the CUIT Cunix machines. You may use another machine if you wish with the caveat that it must have a standard Java compiler and that you do not use any extensions on the machine beyond those available here at Columbia. Your programs eventually must be run on our system when you hand them in, so make sure the code you write is portable and compatible with our systems. The only acceptable running programs are those on our machines here at Columbia. Programs will be submitted electronically.

* The information contained in this syllabus is subject to change at any time.