##### About the course

In this course, you will learn about the components of a computer which includes Memory, processor, input and output devices along with storage and operating system. You will also understand the concept of assembler, compiler, interpreter, loader, and linker. Then you will be introduced to algorithms and flowcharts which includes representation of an algorithm, flowchart, along with the concept of pseudo code and its examples, converting algorithms to programs and writing source code.

After that, you will learn about the basics of programming which includes the structure of a C program, how to write and execute a C program. In addition to this, you will learn about the various types of errors such as logical errors and syntax errors. You will also learn about the components of the C language, variables, data types, memory locations, and storage classes. Then you will learn about arithmetic operators and their precedence, if-else, switch-case statements, for loop, while and do-while loops, break and continue statements. You will also learn about functions, arrays, basic searching and sorting algorithms in detail. The course will conclude with detailed coverage of pointers and file operations in C.

**Learning Outcomes**

After completing this course, you will be able to:

- Develop simple algorithms for arithmetic and logical problems.
- Translate the algorithms to programs in C language and execute them.
- Implement conditional branching, iteration, and recursion.
- Decompose a problem into functions and synthesize a complete program using the divide and conquer approach.
- Use arrays, pointers, and structures to develop algorithms and programs.
- 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:** Students: All students who are pursuing any technical/professional courses, and wish to enter application programming industry.

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

**Professionals:** All working professionals from the IT industry.

##### Why learn Programming for Problem Solving?

Problem-solving refers to your ability to solve problems in an effective and timely manner without any impediments. Whether you are a student, a parent, a businessperson, or the president of any country, you face problems every day that needs solving. For all these things, problem-solving is really really important. Especially when it comes to programming, problem-solving is the must. If you do not develop sound problem-solving skills, you will end up messing around with a given problem, and you would not be able to obtain a solution for ages.

##### Course Features

**24X7 Access:**You can view lectures as per your own convenience.**Online lectures:**10 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

There will be a final test containing a set of multiple choice questions. Your evaluation will include the scores achieved in the final test.

##### Certification

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

##### Topics to be covered

**Unit 1 : Fundamental Operations of a Modern Computer**

Von Neumann Architecture. Design of a computer. Basic hardware components (RAM, disk,

processor, keyboard, mouse). Basic Software components (applications, operating system, system

software, compiler, etc.). Basics of I/O and data transfer between I/O devices and RAM/variables

**Unit 2 : Basic programming constructs**

Basic Data types (Numerical, String).Variables. Expressions. statements. I/O statements for

keyboard handling. Editing, compiling/interpreting/running programs. Syntax errors and runtime

errors. Comparison of language model with Von Neumann architecture.

**Unit 3 : Introduction to problem solving using computers**

Manual solutions to real life problems. Algorithmic representation of the solutions. Basic

Problems. Variables. Expressions. Conditional statements. Multiplication. Exchange values

of two variables. Finding maximum of three numbers. What is problem?, Identifying problem,

Understanding a problem: Framing a problem in simple terms – mathematical, graphical, other

abstractions. Files. Files as an alternative I/O medium. I/O functions to transfer data from file to variables. Comparison of keyboard and file I/O functions. operations to read, write, close, open

files.

**Unit 4 : Iterative problems**

Problems without arrays. Introduction to iterative constructions in language. Find Sum, average

of a given set of numbers. Loop design techniques: While loop - body, iterative step, loop

condition. Emphasis on while loop against for loop. Factorial. Sine function computation.

Fibonacci sequence generation. Some problems to read data from files. Array techniques. Arrays

as homogenous collection of elements. Array properties. Reversing elements of an array. Finding

maximum. Finding second maximum. Algorithms for substring search. Search problems. linear

search. linear search in sorted array. binary search.

**Unit 5 : Modular solutions**

Functions Introduction to functions. Importance of design of functions. Rewriting earlier solutions using functions. Taking care of all possible values of arguments. Parameters, return values, signature, local and global scope. Modular code. Reusability. Recursion. Basic rules of recursion: recursive formulation, terminating case, handle all cases, recursion leading to terminating case. Factorial: iterative vs recursive. Recursive formulation for: multiplication, gcd, towers of Hanoi, binary search. Recursion vs iteration in general. When to use recursion.

**Unit 6 : Advanced Problems**

Convert a number into one with digits reversed. Convert decimal to binary. Generating prime numbers. Generating random numbers. Computing x power y. Partitioning an array. Finding the kth smallest element of an array. Sorting: Selection sort. Insertion sort. bubble sort.