# Programming, Data Structures And Algorithms Using Python

- Institution: Chennai Mathematical Institute
- Department: Computer Science and Engineering
- Teacher: Prof. Madhavan Mukund
- Level: Undergraduate
- Language: English
- Subjects: Computer science, Engineering
- Source: [NPTEL](https://nptel.ac.in/courses/106106145)
- Licence: [CC BY-NC-SA](https://nptel.ac.in/faq) (Non-commercial use only.)
- Syllabus: [at the source](https://nptel.ac.in/courses/106106145)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

This course is an introduction to programming and problem solving in Python. It does not assume any prior knowledge of programming. Using some motivating examples, the course quickly builds up basic concepts such as conditionals, loops, functions, lists, strings and tuples. It goes on to cover searching and sorting algorithms, dynamic programming and backtracking, as well as topics such as exception handling and using files. As far as data structures are concerned, the course covers Python dictionaries as well as classes and objects for defining user defined datatypes such as linked lists and binary search trees.

Intended audience: Students in any branch of mathematics/science/engineering, 1st year

Prerequisites: School level mathematics.

## Lectures

1. [Lecture 1: Algorithms and programming: simple gcd](https://invisiblenetwork.ai/learn/nptel/106106145/0e9c8f9ce9dd) (YouTube)
2. [Lecture 2: Improving naive gcd](https://invisiblenetwork.ai/learn/nptel/106106145/4a404ebabd66) (YouTube)
3. [Lecture 3: Euclid's algorithm for gcd](https://invisiblenetwork.ai/learn/nptel/106106145/06a0c5e488a1) (YouTube)
4. [Lecture 4: Downloading and installing Python](https://invisiblenetwork.ai/learn/nptel/106106145/1b3af739d34c) (YouTube)
5. [Lecture 1: Assignment statement, basic types - int, float, bool](https://invisiblenetwork.ai/learn/nptel/106106145/c69a49f66d04) (YouTube)
6. [Lecture 2: Strings](https://invisiblenetwork.ai/learn/nptel/106106145/86ad44898f31) (YouTube)
7. [Lecture 3: Lists](https://invisiblenetwork.ai/learn/nptel/106106145/106dd4de4450) (YouTube)
8. [Lecture 4: Control Flow](https://invisiblenetwork.ai/learn/nptel/106106145/fedb1e4972f1) (YouTube)
9. [Lecture 5: Functions](https://invisiblenetwork.ai/learn/nptel/106106145/b4f8a2e5a29c) (YouTube)
10. [Lecture 6: Examples](https://invisiblenetwork.ai/learn/nptel/106106145/9859b4d58a8d) (YouTube)
11. [Lecture 1: More about range()](https://invisiblenetwork.ai/learn/nptel/106106145/f8d46b174375) (YouTube)
12. [Lecture 2: Manipulating lists](https://invisiblenetwork.ai/learn/nptel/106106145/faec60f45f53) (YouTube)
13. [Lecture 3: Breaking out of a loop](https://invisiblenetwork.ai/learn/nptel/106106145/94bb11963e99) (YouTube)
14. [Lecture 4: Arrays vs lists, binary search](https://invisiblenetwork.ai/learn/nptel/106106145/b1201b764d50) (YouTube)
15. [Lecture 5: Efficiency](https://invisiblenetwork.ai/learn/nptel/106106145/e71b0b894a0f) (YouTube)
16. [Lecture 6: Selection Sort](https://invisiblenetwork.ai/learn/nptel/106106145/ea89284b80e8) (YouTube)
17. [Lecture 7: Insertion Sort](https://invisiblenetwork.ai/learn/nptel/106106145/c317cc4a7939) (YouTube)
18. [Lecture 8: Recursion](https://invisiblenetwork.ai/learn/nptel/106106145/75d8545228dc) (YouTube)
19. [Lecture 1: Mergesort](https://invisiblenetwork.ai/learn/nptel/106106145/c8c221a44af4) (YouTube)
20. [Lecture 2: Mergesort, analysis](https://invisiblenetwork.ai/learn/nptel/106106145/056926526e28) (YouTube)
21. [Lecture 3: Quicksort](https://invisiblenetwork.ai/learn/nptel/106106145/b7c35d31a9f4) (YouTube)
22. [Lecture 4: Quicksort analysis](https://invisiblenetwork.ai/learn/nptel/106106145/0296728a38b6) (YouTube)
23. [Lecture 5: Tuples and dictionaries](https://invisiblenetwork.ai/learn/nptel/106106145/57f4c3798da9) (YouTube)
24. [Lecture 6: Function definitions](https://invisiblenetwork.ai/learn/nptel/106106145/2da8a3ffdd42) (YouTube)
25. [Lecture 7: List Comprehension](https://invisiblenetwork.ai/learn/nptel/106106145/b47b81d987dc) (YouTube)
26. [Lecture 1: Exception Handling](https://invisiblenetwork.ai/learn/nptel/106106145/acef5a7de7d4) (YouTube)
27. [Lecture 2: Standard input and output](https://invisiblenetwork.ai/learn/nptel/106106145/547c77936d1a) (YouTube)
28. [Lecture 3: Handling files](https://invisiblenetwork.ai/learn/nptel/106106145/f5c23956af3d) (YouTube)
29. [Lecture 4: String functions](https://invisiblenetwork.ai/learn/nptel/106106145/6e2d98099284) (YouTube)
30. [Lecture 5: Formatting printed output](https://invisiblenetwork.ai/learn/nptel/106106145/83b9bb6af21f) (YouTube)
31. [Lecture 6: pass, del() and None](https://invisiblenetwork.ai/learn/nptel/106106145/886937184424) (YouTube)
32. [Lecture 1: Backtracking, N queens](https://invisiblenetwork.ai/learn/nptel/106106145/f817f4ec15cd) (YouTube)
33. [Lecture 2: Global scope, nested functions](https://invisiblenetwork.ai/learn/nptel/106106145/ecaf05776bc4) (YouTube)
34. [Lecture 3: Generating permutations](https://invisiblenetwork.ai/learn/nptel/106106145/b8b12bfec939) (YouTube)
35. [Lecture 4: Sets, stacks, queues](https://invisiblenetwork.ai/learn/nptel/106106145/52596738aca4) (YouTube)
36. [Lecture 5: Priority queues and heaps](https://invisiblenetwork.ai/learn/nptel/106106145/af2494fc99e2) (YouTube)
37. [Lecture 1: Abstract datatypes, classes and objects](https://invisiblenetwork.ai/learn/nptel/106106145/3ef677039ac6) (YouTube)
38. [Lecture 2: Classes and objects in Python](https://invisiblenetwork.ai/learn/nptel/106106145/84074dca0718) (YouTube)
39. [Lecture 3: User defined lists](https://invisiblenetwork.ai/learn/nptel/106106145/8ad07fbd895e) (YouTube)
40. [Lecture 4: Search trees](https://invisiblenetwork.ai/learn/nptel/106106145/1213add76cdc) (YouTube)
41. [Lecture 1: Memoization and dynamic programming](https://invisiblenetwork.ai/learn/nptel/106106145/2b4272423328) (YouTube)
42. [Lecture 2: Grid paths](https://invisiblenetwork.ai/learn/nptel/106106145/b47d30cdab7a) (YouTube)
43. [Lesson 3: Longest common subsequence](https://invisiblenetwork.ai/learn/nptel/106106145/44175459c683) (YouTube)
44. [Lecture 4: Matrix multiplication](https://invisiblenetwork.ai/learn/nptel/106106145/bfb7832943cd) (YouTube)
45. [Lecture 5: Wrap-up, Python vs other languages](https://invisiblenetwork.ai/learn/nptel/106106145/67a96419a244) (YouTube)
