- Computer Components:
- CPU: architecture, registers, instruction execution
- Memory hierarchy: cache, RAM, virtual memory
- Storage devices: characteristics and differences
- I/O devices and system bus
- Operating System Fundamentals:
- Process and memory management
- File system organization
- User and kernel space
- OS roles in program execution
- Compiler Operation:
- Preprocessing, compilation, assembly, linking
- Interpreter vs compiler differences
- GCC command line options and usage
- Program Execution Process:
- Memory layout (code, data, stack, heap)
- Loading and execution sequence
- Runtime environment
- Algorithm Concepts:
- Definition and characteristics
- Complexity and efficiency basics
- Problem-solving methodology
- Flowcharting Techniques:
- Standard symbols and conventions
- Decision structures and loops representation
- Practice Problems:
- Develop flowcharts for:
- Finding maximum of three numbers
- Calculating factorial
- Testing primality
- Converting temperature units
- Develop flowcharts for:
- Implementation Practice:
- Convert 3+ flowcharts to pseudocode
- Translate pseudocode to working C programs
- Development Lifecycle:
- Problem analysis to implementation
- Testing and debugging strategies
- Memory Concepts:
- How variables are stored in memory
- Address space and memory allocation
- C Data Types:
- Primitive types with ranges and memory sizes
- Type modifiers (signed/unsigned, short/long)
- Type conversion rules
- Error Types:
- Syntax errors: identification and fixing
- Runtime errors: handling and prevention
- Logical errors: debugging techniques
- Arithmetic Operators:
- Basic operators:
+,-,*,/,% - Integer vs floating-point division
- Modulus operator limitations
- Basic operators:
- Operator Precedence:
- Complete precedence table
- Associativity rules (left-to-right, right-to-left)
- Expression Evaluation:
- Step-by-step evaluation of complex expressions
- Type conversion in mixed expressions
- Practice Problems:
- Evaluate expressions without calculator
- Create expressions that yield specific results
- Debug incorrect expressions
- Basic Conditionals:
-
ifstatement: syntax and usage -
if-else: binary decision making - Nested
if-else: multiple conditions -
else ifladder: multiple alternatives
-
- Switch Statement:
- Syntax and execution flow
- Case labels and break statements
- Fall-through behavior
- Default case handling
- Operators for Conditions:
- Relational operators (
==,!=,>,<,>=,<=) - Logical operators (
&&,||,!) - Short-circuit evaluation
- Relational operators (
- Practical Applications:
- Input validation
- Menu-driven programs
- Classification algorithms
- Multi-condition problems
- Loop Types:
-
forloop: components and execution -
whileloop: pre-test condition -
do-whileloop: post-test condition - Choosing the appropriate loop type
-
- Loop Control:
-
breakstatement: immediate exit -
continuestatement: skip iteration - Infinite loops and their uses
-
- Nested Loops:
- Structure and execution flow
- Loop variable scope
- Common applications
- Loop Practice:
- Sum and average calculations
- Sequence generation (Fibonacci, etc.)
- Pattern printing (pyramids, diamonds)
- Digit manipulation (reverse, sum, count)
- Prime number detection algorithms
- Array Fundamentals:
- Declaration and initialization syntax
- Memory representation and addressing
- Array bounds and access patterns
- Array Operations:
- Traversal using loops
- In-place modifications
- Insertion and deletion techniques
- Common Array Algorithms:
- Finding minimum/maximum elements
- Array reversal and rotation
- Filtering and transforming elements
- Frequency counting and histograms
- Matrix Concepts:
- Memory layout and access patterns
- Row-major vs column-major storage
- Matrix Operations:
- Addition and subtraction
- Matrix multiplication
- Transpose operation
- Determinant calculation (basic)
- Specialized Operations:
- Diagonal operations
- Finding saddle points
- Spiral/zigzag traversal
- Row and column manipulations
- String Basics:
- Null-termination concept (
\0) - Declaration and initialization methods
- Memory representation
- Null-termination concept (
- Input/Output Techniques:
-
scanf()with format specifiers -
gets(),fgets()and their differences - Safe string input practices
-
- String Manipulation:
- Character-by-character processing
- Standard library functions (
strlen,strcpy, etc.) - Custom string functions implementation
- String Algorithms:
- Palindrome checking
- String reversal
- Case conversion
- Word counting and tokenization
- Pattern matching basics
- Linear Search:
- Algorithm and implementation
- Optimizations (sentinel value, etc.)
- Performance analysis
- Pointer-based implementation
- Binary Search:
- Algorithm prerequisites and steps
- Iterative implementation
- Recursive implementation
- Time complexity analysis
- Applications and limitations
- Bubble Sort:
- Basic and optimized implementations
- Pass-by-pass visualization
- Time complexity analysis
- Insertion Sort:
- Algorithm walkthrough
- Implementation strategies
- Best/worst case scenarios
- Selection Sort:
- Algorithm and implementation
- Comparison with other methods
- Stability and performance
- Algorithm Analysis:
- Big-O notation understanding
- Space vs time complexity
- Best/average/worst case analysis
- Mathematical Algorithms:
- GCD and LCM calculation
- Prime number generation (Sieve)
- Quadratic equation solver
- Data Processing:
- Array partition techniques
- Sliding window algorithms
- Prefix sum applications
- Function Structure:
- Function signature components
- Return type selection
- Parameter definition
- Function Management:
- Function prototyping
- Multiple file organization
- Header files and inclusion
- Variable Scope:
- Local vs global variables
- Block scope
- Static and automatic variables
- Standard Library:
- Key functions from
stdio.h,stdlib.h - String functions from
string.h - Math functions from
math.h
- Key functions from
- Call by Value:
- Mechanism and memory implications
- Appropriate use cases
- Limitations with complex data
- Call by Reference:
- Using pointers as references
- Dereferencing and modification
- Safety considerations
- Advanced Parameter Techniques:
- Const parameters
- Variable argument lists
- Function pointers basics
- Array Parameters:
- Array decay to pointers
- Size parameters
- Multi-dimensional array passing
- Pointer Operations:
- Pointer arithmetic in functions
- Returning pointers safely
- Dynamic memory in functions
- String Handling:
- String parameter conventions
- String modification techniques
- String return values
- Implement Common Functions:
- Array utilities (sort, search, reverse)
- String utilities (custom versions of standard functions)
- Mathematical functions (power, factorial, etc.)
- Advanced Function Exercises:
- Recursive implementations
- Higher-order function concepts
- Callback pattern implementations
- Dynamic Memory:
-
malloc,calloc,realloc,freeusage - Dynamic arrays and matrices
- Memory leak prevention
- Debugging memory issues
-
- Advanced Pointers:
- Pointer to pointers
- Function pointers and applications
- Void pointers and type casting
- Data Structures:
- Linked list implementation
- Stack and queue using arrays
- Binary search tree basics
- File Operations:
- File modes and access
- Text file processing
- Binary file handling
- Random access operations
- Preprocessor:
- Macro definition and usage
- Conditional compilation
- Include guards
- Built-in macros