##### About the course

In this course, the detailed study of algorithms and data structures will be done using the Python platform. 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 to 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 data types such as linked lists and binary search trees.

##### Learning Outcomes

After completing this course, you will be able to:

- Write algorithms and use data structures effectively.
- Develop effective problem-solving skills.
- Formulate the solution to any computational problem.
- Get hands-on in Python Programming language.
- Boost your hireability through innovative and independent learning.
- Get a certificate on successful completion of the course.

##### Target Audience

The course can be taken by:

**Students:** All students who are pursuing any technical/professional courses related to computer science.

**Teachers/Faculties:** All computer science teachers/faculties.

**Professionals:** All working professionals from IT - Application programming domain.

##### Why learn Programming, Data Structures and Algorithms in Python?

Almost any job requires some problem-solving skills, but certain occupations revolve around workers’ ability to solve problems.Some jobs involve high levels of problem-solving - anything technical involving IT or engineering will require you to be an expert problem solver. Being able to implement solutions in the form of algorithms which are capable of addressing the issues helps an individual to perform exceptionally in this field. Knowledge of data structures also plays a vital role in addressing the issue with the help of robust computer programs, which require a lot of programming practice and skills. Employers are looking for people who can come up with creative and effective solutions, recognize what needs to be done and take action. This course helps you gain the ability to provide solutions to problems.

##### Course Features

**24X7 Access:**You can view lectures as per your own convenience.**Online lectures:**13 hours of online lectures with high-quality videos.**Updated Quality content:**Content is latest and gets updated regularly to meet the current industry demands.

##### Test Evaluation

Each lecture will have a quiz containing a set of multiple choice questions. Apart from that, there will be a final test based on multiple choice questions.

Your evaluation will include the overall scores achieved in each lecture quiz and the final test.

##### Certification

Certification requires you to complete all the lectures, quizzes, and the final test. Your certificate will be generated online after successful completion of course.

##### Topics to be covered

**Module-01 Algorithms and programming: simple gcd**- What is an algorithm and what are its benefits?
- What is the Greatest Common Divisor (GCD) and how it is computed?
- What is the basic GCD algorithm?

**Module-02 Improving naive gcd**- How to improve the basic GCD algorithm?

**Module-03 Euclid's algorithm for gcd**- What is Euclid's algorithm for computing GCD?
- How Euclid's algorithm is implemented using Python?
- How to improve Euclid's algorithm and its efficiency?

**Module-04 Downloading and installing Python**- What are the various aspects of Python, how it can be downloaded and how interpreters are different from compilers?
- Is Python an interpreted language? What are the resources to learn to programme?

**Module-05 Assignment statement, basic types - int, float, bool**- What is the basic program structure of Python?
- What is a statement and what are numeric type values in Python?
- What are Boolean type values in Python?

**Module-06 Strings**- What is the different type of values and importance of text processing?
- What is String and how it is useful in manipulating text?
- What are the different operations performed on Strings?

**Module-07 Lists**- What are the different types of values and what is a List?
- How List is different from String and What is Nested List?
- What is the difference between mutable and immutable strings?
- How to copy the Lists?
- How to add two Lists?

**Module-08 Control Flow**- What is the basic Python program structure and what is the control flow?
- What is a conditional expression?
- What are loops and its examples?

**Module-09 Functions**- What is a Function and how value is passed to a function?
- What is the scope of names and how a function is defined and what are recursive functions?

**Module-10 Examples**- How to find factors and all prime numbers in Python?
- How to find first n prime number and how for loop is different from a while loop?

**Module-11 More about range()**- What is a range function?
- How is range function expressed as lists?

**Module-12 Manipulating lists**- What is a list and how it is manipulated?
- What are the different List functions?
- How are names initialized in Python?

**Module-13 Breaking out of a loop**- What are the different types of Loops in Python and how they work?

**Module-14 Arrays vs lists, binary search**- What are the different ways of Storing Sequences?
- What is the problem associated with searching a value in an unsorted sequence?
- What is the problem associated with searching a value in a sorted sequence and what is an Abstract view of python list or arrays??

**Module-15 Efficiency**- What is the efficiency of an algorithm and what is Big-O-notation?
- How is efficiency measured using different values of input (n)?

**Module-16 Selection Sort**- What are the advantages of sorting and how sorting is done?
- What is Selection Sort?

**Module-17 Insertion Sort**- What is Insertion sort and how insertion sorting is done?

**Module-18 Recursion**- What are the Inductive definitions of Recursive function and List?
- What are the Recursive definition of Insertion sort and its complexity?

**Module-19 Mergesort**- What is Merge Sort?
- What are the various operations in Merge Sort?
- How is Merge Sort implemented in Python?

**Module-20 Mergesort, analysis**- How the Algorithm for Merge and Merge Sort are analyzed?
- What are the variations and Shortcomings of Merge Sort?

**Module-21 Quicksort**- What are problems with merge sort and How Divide and conquer is done without using merging?
- What is Quicksort and how it is implemented in Python?

**Module-22 Quicksort analysis**- How is the Quicksort algorithm analyzed?

**Module-23 Tuples and dictionaries**- What are the Tuples?
- What are a list and its keys and what are dictionaries?

**Module-24 Function definitions**- What are the different features of Python?
- What is a function in Python?

**Module-25 List Comprehension**- What are the various operations performed on List?
- How map and filter-functions are combined to generate the list?

**Module-26 Exception Handling**- What is exception handling and what are the types of errors?
- What is the positive use of exceptions and what is the flow of control?

**Module-27 Standard input and output**- What is Standard I/O & basic command in python for reading from the keyboard?
- How a message is displayed on the screen (standard output printing on the screen) and how the formatting of print is done?

**Module-28 Handling files**- How are reading and writing operations performed in a text file?
- How closing, processing line by line and copying a file is done and what is a strip newline character?

**Module-29 String functions**- what are the different operations performed on strings?

**Module-30 Formatting printed output**- How to use the format method for printing a string and display each placeholder?

**Module-31 pass, del() and None**- How to read a number from a keyboard by making a Python program?

**Module-32 Backtracking, N queens**- What are Backtracking and Eight Queen problem?
- How to solved Eight queen problem with different board representation?

**Module-33 Global scope, nested functions**- What is the scope of a name in Python with an example?
- Does Python allow function within a function (Nested function)?

**Module-34 Generating permutations**- How to generate permutations?

**Module-35 Sets, stacks, queues**- What are specialized data structures and what is a set and its operations?
- What are Stacks and Queues?
- What is the use of Queue?

**Module-36 Priority queues and heaps**- What is the practical example of a problem in the data structure and its solution?
- What is Heap?
- How is Heap implemented with Arrays and what is Heap sort?

**Module-37 Abstract data types, classes and objects**- What are Data Structure and its operations and what are the different datatypes?
- What are OOPs and its use?

**Module-38 Classes and objects in Python**- What are a Class and Object and what are their examples?
- What are OOPs terminology and its example?
- What is the default argument function and what are the different "Special Functions" in Python?

**Module-39 User-defined lists**- What is a List and how it is created?
- What are the different list operations and their examples?

**Module-40 Search trees**- What are a Binary Search Tree (BST) and its various aspects?
- What are different operation in BST with example and its complexity?

**Module-41 Memoization and dynamic programming**- What are Inductive Definitions, Functions and its Benefits?
- What is new recursive implementation in Inductive definition with an example?
- What is Dynamic programming and why it is used?

**Module-42 Grid paths**- What is Grid path problem and how it is solved?
- What is the Combinational solution of Grid path problem?
- What is an Inductive solution of Grid path problem?
- How Is Grid path problem solved by Memorization and Dynamic programming?

**Module-43 Longest common subsequence**- What is Longest Common Subword(LCW) problem and what is Brute Force Algorithm?
- What is an Inductive structure in LCW?
- What are the Longest common subsequence(LCS) problem and its applications?
- What is an inductive structure in LCS?

**Module-44 Matrix multiplication**- What is Matrix multiplication(MM) problem and how matrices are multiplied?
- What is an Inductive structure of MM problem and subproblem?
- Implementation of MM, DP and MM complexity

**Module-45 Wrap-up, Python vs other languages**- What are the advantages and disadvantages of Python in comparison to other languages?
- How is memory space allocated and deallocated in Python?
- What is Functional Programming?

**Programming, Data Structures and Algorithms in Python - Final Quiz**