Laboratory of Statistical Artificial Intelligence and Machine Learning

Data Structures and Algorithms for Data Science DS2030 Fall 2023

Description

Data structures and algorithms play a crucial role in computing applications that involve data management. They are particularly vital for data-driven decision systems, such as the Web, Databases, Machine Learning, Computer Vision, and Artificial Intelligence Systems. In this introductory course, we will explore fundamental and commonly used data structures. We will delve into theoretical analysis and practical application of these data structures, gaining hands-on experience by implementing them in Python for various applications.

Lecture Timings

TBD

Reference Material
  • Primary Textbook : Data Structures and Algorithms in Python, by Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser, First Edition, Wiley, 2013

  • Other Reference Books :

    • Introduction to Algorithms by Cormen, Leiserson, Rivst, and Stein

    • Fundamentals of Data Structures by Horowitz and Sahani

Academic integrity

Students enrolled in this course are expected to exhibit a strong desire to learn, rather than just fulfilling a requirement for their degree. Engaging in discussions that help students better understand concepts or problems is encouraged. However, all submitted work must be original. Plagiarism, including copying from the internet, textbooks, or any other source for which the student does not hold the copyright, as well as sharing code with other students, will not be tolerated and will result in strict disciplinary action, including a failing grade in the course. If you have any questions about this policy, please contact the instructor. All academic integrity violations will be handled in accordance with institute regulations.

Grading Policy
  • Theory

    • Quizzes Four pre-announced quizzes will be conducted during the semester. The quizzes will account for 20% of the overall grade. Check the course calendar for the quiz dates.

    • Exams There will be an end-semester exam that will account for 30% of the overall grade.

  • Labs

    • Graded Labs There will be eight graded lab assignments during the semester. The labs will account for 30% of the overall grade. Each lab assignment will have two components - take home and in person. The students may take a few days to complete the take home component, while the in person component needs to be completed during the lab hours.

    • Lab exams Two pre-announced lab exams will be conducted during the semester (one each towards the middle and end of the semester). These lab exams will account for 20% of the overall grade.

    • 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?

Attendance

This course follows the attendance criteria mandated by the institute.

Tentative Course Schedule

week 1 - Introduction OOP, Arrays, and Linked Lists
week 2 - Analysis Tools and Recursion,
week 3 - Stacks and Queues, Quiz 1, Lab 1
week 4 - Tree Structures and Heaps, Lab 2
week 5 - Sorting and Priority Queues, Lab 3
week 6 - Maps, Hash Tables, Quiz 2, Lab 4
week 7 - Search Tree Structures I, Lab Exam 1
week 8 - Search Tree Structures II, Lab 5
week 9 - Search Tree Structures III, Lab 6
week 10 - String Processing, Quiz 3
week 11 - Dynamic Programming, Lab 7
week 12 - Graphs I, Lab 8
week 13 - Graphs II, Quiz 4
week 14 - Graphs III, Lab Exam 2

Lecture Material

Students enrolled in the course can access the lecture material from LMS Link