Comp 15: Data Structures

Fall 2009

Course Syllabus



Course Overview: This course is intended as an introduction to data structures, algorithms, and more advanced programming techniques. Some topics covered include recursion, linked lists, trees, graphs, sorting, hashing, and the analysis of algorithms. The main objective of the course is to give students exposure to more advanced programming tools. We hope to achieve this goal by presenting higher level concepts in lecture and hands-on computer practices in the lab. The programming assignments will use C++.

Meeting Times: The class will meet on Mondays and Wednesdays 10:30-11:45 in room 106 for Section 1, and 1:30-2:45 for Section 2 in room 111B. You will be assigned to a one-hour lab session either on Wednesday or Thursday later afternoons or early evenings.

Topics Covered: Pointers, Linked Lists, Templates, Stacks, Queues, Trees, Heaps, Sorting Algorithms, Graphs, and Hashing, with exposure to complexity and algorithm analysis.

Prerequisites:  COMP 11 (Intro to Computer Science). COMP 10 is not enough! Knowledge of C++ or Java.

Textbook: The required text book for this course is "Data Structures and Algorithm Analysis in C++" by  Mark Allen Weiss, (Pearson/Addison-Wesley) 2006. Third Edition.

Instructor:
Professor Soha Hassoun
Office: Room 232, Halligan Hall
e-mail:  soha@cs.tufts.edu
Telephone: 627-5177 (email will work better!)
Office hours: see the web site

Teaching Assistant:
Head TA: Nauman H. Khan
e-mail: nauman@cs.tufts.edu
Office hours: see the web site

Course web page:  All assignments, handouts, and announcements will eventually be posted on the class' web page.  A pointer to this web site will be available from http://www.cs.tufts.edu/comp/15/

E-mail List: We will use your email posted on the official SIS mailing lists to contact you or post announcements.  Please make sure you read this email regularly.

Lectures: Lectures in the course will include higher level design of algorithms and data structures (abstraction), the specific details of implementation choices (implementation) and the mathematical skills to evaluate specific implementations (analysis).  Examples will be presented in both pseudo code and C++.

Labs: The labs are intended to reinforce ideas presented in lecture.  Students will practice the concepts by implementing actual algorithms and data structures using C++. It is imperative that students attend the lab sections in order to do well on homework assignments and exams.  The lab work will be mostly completed during the lab hour, and it is submitted using provide by Friday 5pm. For the first two labs you will need to find two different partners. The instructor will assign you a partner if you cannot find one.

Homework: It will be assigned regularly in the course, it will come in three forms:
Reading Assignments: It is important that students use the textbook to supplement their understanding of the material presented in the lecture and the lab.

Written Assignments: This homework will consist of mostly programming assignments.  Typically, a homework will be handed out on Wednesdays, and due on the following Tuesday at midnight. 

Projects: This homework will extend the programming work done in the lab. You will have two (mini) projects that will emphasize design, analysis, and implementation.  The projects are essentially long programming assignment that span two weeks.  During the first week, you will be required to design your data structures and your algorithms, and in the second week do the implementation.  These assignments will be done on the computer and checked via the computer. It is important to repeatedly test your code before submission, all programming projects will be tested on the sun cluster. These assignments will be submitted using provide.

Late Homework Policy:  Because we want you to do the work, late assignments are penalized at 15% per 24 hours. No homework will be accepted after 5 days as we want to provide solutions in a timely manner.

Exams: 
There will be two exams during the course: exam I that will cover material from the first half and a exam II (the final) will be weighted toward material covered after the first exam.

Attendance:
  Although classroom attendance is not mandatory, it is highly recommended.  Please note that you are responsible for all material covered in class and lab. If you have to miss class, please check with the instructor, TA, or fellow students to figure out what you missed.

Feedback:  Your thoughts and concerns on this course are important. You are encouraged to give feedback to the instructor and teaching fellows throughout the term.

Course Grading: Please get back to the instructor or TA regarding any disputes for grades within a week of handing out the grades. 
100-90% = A, 90-80% = B, 80-70% = C, 70-60% = D, <60% = F.

Labs 5%
Written Assignments 35%
Projects 20%
Exam I 20%
Exam II 20%