CSL 201 - Data Structures
Course Information
Timings and Lecture Hall
Monday 9.55-10.45am
Tuesday 10.50-11.40am
Wednesday 11.45am-12.35pm
Lecture Hall L3
Lab hours - Thursday 9.00am-12.35pm
Description
Data structures are important for any computing application that handles data. Efficient data structures and algorithms are essential for most software systems, including the Web, Operating Systems, Databases, Computer Networks, Compilers, Computer Graphics Applications, and Artificial Intelligence Systems. This introductory course discusses some of the basic and widely used data structures. Theoretical analysis and application utility of different data structures will also be discussed in detail. For a comprehensive list of topics covered in the course and course schedule, please see the course calendar. Practical experience will be gained through implementing the data strucutures and algorithms for different applications in Java. For more details on lab assignments, please see the Labs webpage.
Reference Material
Primary textbook will be Data Structures and Algorithms in Java, by Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser, Sixth Edition, Wiley, 2010
Other reference books
- Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein
Instructor Details
Narayanan (CK) Chatapuram Krishnan
Office Hours: TBD
Office: 318
Phone: +91 1881 242273
Email: ckn@iitrpr.ac.in
Teaching Assistants Details
Yayati Gupta
Office Hours: During regular lab hours on Thursday
Office: 120
Email: yayati.gupta@iitrpr.ac.in
Students: All 2012 EE, 2013 EE, 2013 ME and 2014 CS (1001-1008)
Anoop Jacob Thomas
Office Hours: During regular lab hours on Thursday
Office: 120
Email: anoopjt@iitrpr.ac.in
Students: All 2014 ME and remaining 2014 CS
Academic Integrity
It is expected that students who are taking this course will demonstrate a keen interest in learning and not mere fulfilling the requirement towards their degree. Discussions that help the student understand a concept or a problem is encouraged. However, each student must turn in original work. Plagiarism/copying of any form, will be dealt with strict disciplinary action. This involves, copying from the internet, textbooks and any other material for which you do not own the copyright. Copying part of the code will be considered plagiarism. Lending the code to others will be considered plagiarism too, for it is difficult to investigate who copied whose code. Students who violate this policy will directly receive a failing grade in the course. Remember - Your partial submission can fetch you some points, but submitting other's work as your own can result in you failing the course. Please talk to the instructor if you have questions about this policy. All academic integrity issues will be handled in accordance with institute regulations.
Grading Policy
Grading Policy
Quizzes: There will be approximately 6-7 pre-announced quizzes during the semester. Check the course calendar to learn about dates on which a quiz will be held. The top 6 quiz scores will count towards the student's overall grade. The quizzes will account for 30% of the overall grade. The quizzes will be held on every alternate Thursday starting from August 6th, 2015 during the first hour of the lab in L2.
Labs: There will be approximately 6-8 labs. Each lab will have a major programming comonent and will span for approximately two weeks. The top 6 labs will account for 20% of the overall grade. Students having difficulty with the labs are encouraged to contact the TA for assistance. You are not required to be physically present in the lab during the lab hours. You can complete the labs at your convenience and turn it in by the deadline.
Exams: The mid and end semester exams together will account for 50% (25% each) of the overall grade.
Attendance: There is no mandatory attendance. However attendance will be taken in every class. This will consitute a bonus of 1% for the final grade and might be helpful for all border line students.
Passing Critera: A student must secure an overall score of 40 (out of 100) and a combined score of 60 (out of 200) in the exams to pass the course.
Tentative Grade Breakup*
Quizzes (6 out of 7) | 30% |
---|---|
Labs (6 out of 7) | 20% |
Mid-Semester Exam | 25% |
End-Semester Exam | 25% |
Total | 100 |
*This is a tentative breakup of the grades and can change at the discretion of the instructor. However, any change with respect to the grade break-up will be intimated in advance.
Grade Sheet:PDF
Lectures and Calendar
Tentative Schedule and List of Topics*
Week | Dates |
Topic | Readings | Quiz/Lab |
---|---|---|---|---|
1 | Jul27-Jul31 |
Introduction, OOP, Arrays and Linked Lists | Chapter 3 | |
2 | Aug3-Aug7 |
Analysis Tools, Recursion | Chapter 4 and 5 | Q1 (Aug 6) |
3 | Aug10-Aug14 |
Stacks and Queues | Chapter 6 | L1 (Aug 14) |
4 | Aug17-Aug21 |
Positions, Itertators, Tree Structures | Chapter 7.3, 7.4 and 8 | Q2 (Aug 20) |
5 | Aug24-Aug28 |
Heaps and Priority Queues | Chapter 9 | L2 (Aug 28) |
6 | Aug31-Sep4 |
Heaps / Maps and Hash Tables | Chapter 10 (10.1-10.3) | Q3 (Sep 3) |
7 | Sep7-Sep11 |
Hash Tables and Review Problems | L3 (Sep 11) |
|
8 | Sep14-Sep18 |
Exam week | ||
9 | Sep21-Sep25 |
No regular class | ||
10 | Sep28-Oct2 |
Search Tree Structures | Chapter 11 (11.1-11.3) | L4 (Oct 2) |
11 | Oct5-Oct9 |
Search Tree Strcutures | Chapter 11(11.3-11.6) | Q4 (Oct 8) |
12 | Oct12-Oct16 |
Strings | Chapter 12.1-12.3 | |
13 | Oct19-Oct23 |
Dynamic Programming | Chapter 12.5 | Q5(Oct 21) |
14 | Oct26-Oct30 |
Sorting | Chapter 13 (13.1-13.4) | L6 (Oct 30) |
15 | Nov2-Nov6 |
Graphs | Chapter 14 (14.1-14.3) | Q6 (Nov 5) |
16 | Nov9-Nov13 |
Graphs | Chapter 14(14.4-14.6) | L7 (Nov 13) |
17 | Nov16-nov20 |
Graphs | Chapter 14(14.7) | Q7 (Nov 18) |
18 | Nov23-Nov27 |
Exam week |
*This is a tentative list of topics that will be covered during the semester. The topics and schedule can change according to the need at the discretion of the instructor.
Labs
The following factors will be considered while evaluating the labs
- Correctness and Robustness of the software: Does the program execute correctly on a valid input. Is the output of the program correct with respect to the input. Does the program handle unusual or erroneous inputs gracefully, without abruptly crashing. Does the software meet the specifications defined in the problem?
- Quality of Solution and Documentation of the code: Is the software divided into logical parts? Are there sufficient comments through out the code to make it readable? Have the identifier names chosen to reflect their functionality?
- Java Tutorial by the TA Yayati Gupta on Thursday July 30, 2015 9.00-10.30am in L2 (Chapter 1 and 2 from the textbook)
- Lab 1 due on August 14th 11.55pm
- Lab 2 due on August 28th 11.55pm
- Lab 3 due on September 11th 11.55pm
- Lab 4 due on October 2nd 11.55pm
- Lab 5 due on October 18th 11.55pm
- Lab 6 due on October 30th 11.55pm
- Lab 7 due on November 13th 11.55pm