Students must uphold IISc’s Academic Integrity guidelines. One Mid-term (200 points) and one Final (300 points) exam. Self-selected programming assignments on online coding website (CodeChef) (100 points) Of this, the weightage to different activities will be as follows: 40% HomeworkĪbout 7 programming assignments of 50-100 points each (400 points) The total assessment score for the course is based on a 1000 point scale. So the pre-requisites are minimal - knowing to operate a computer, preferable Linux, using the commandline, installing packages, using SSH, using a text editor or IDE - but students are expected to pick up the skills rapidly as part of the lab sessions. This is an introductory course on data structures and programming. Students already familiar with data structures and programming may prefer those rather than this introductory course. This course is a precursor to more advanced courses like E0 251: Data Structures and Algorithms, E0 225: Design and Analysis of Algorithms, DS 292: High Performance Computing, DS 295: Parallel Programming, and DS 256: Scalable Systems for Data Science. Topics in this course are loosely based on IEEE and ACM’s Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering, a draft of which is available online. There will be periodic programming assignments to validate these concepts. These lectures will be complemented by lab sessions that introduce object oriented programming with C++, implementing the data structures using C++, and also using standard data structure libraries present in the language. Algorithmic strategies such as greedy Algorithms, Dynamic Programming and Divide and Conquer will also form part of the learning. A overview of parallelism and concurrent data structures will also be given toward the end of the course. We will also briefly explore more advanced data structures such as graphs and graph algorithms, balanced trees, tries and heaps. It will also discuss sorting and searching techniques, and their complexity. It will review elementary data structures such as Arrays, Stack, Queues, Maps, and related algorithms for manipulating the data structures. The course will introduce of problem solving using programs and design of algorithms and their complexity. This is an introductory course in data structures and programming, meant for students who have not had a formal course in programming, algorithms and data structures as part of their undergraduate program. Teaching Assistant: Prateeksha Varshney ( email).Instructor: Yogesh Simmhan ( email | www).Department of Computational and Data Sciences Data Structures and Programming