Module 1: Problem-solving and Python fundamentals
Contact hours: 7
-
Problem-solving strategies
- Trial and error
- Heuristics
- Means–ends analysis
- Backtracking (working backward)
-
Problem-solving process
- Computer as a model of computation
- Understand the problem and formulate a model
- Develop an algorithm and write a program
- Test the program and evaluate the solution
-
Python essentials
- Variables and numeric/string data types
- Math module and standard-library basics
- Input and output with
inputandprint - Operators and precedence
Module 2: Algorithms, flowcharts and control flow
Contact hours: 9
-
Algorithms and pseudocode
- Meaning and purpose of pseudocode
- Sequence, selection (
if–else,case) and repetition (for,while,repeat–until) - Practice problems: expressions, interest, comparisons, grades, loops, factorial and largest value
-
Flowcharts
- Start/end, calculation, input/output and decision symbols
- Module calls, loops, flow lines and page connectors
- Use flowcharts to visualize algorithm control flow
-
Selection, iteration and collections
if,elif,for,rangeandwhile- Lists, tuples, sets, strings and dictionaries
- Arrays using NumPy
Module 3: Decomposition, functions and recursion
Contact hours: 10
-
Decomposition and modularization
- Break complex problems into smaller parts
- Motivation for modular design
- Demonstrations using merge sort and finding the top three values
-
Functions
- Define and use functions
- Functions with multiple return values
-
Recursion
- Recursive calls and the call stack
- Avoid circularity
- Examples: Fibonacci numbers, GCD, factorial, addition and sum of digits
Module 4: Computational approaches to problem-solving
Contact hours: 10
-
Brute force
- Examples: padlocks and password guessing
-
Divide and conquer
- Merge sort
- Advantages and disadvantages
-
Dynamic programming
- Fibonacci series
- Recursion compared with dynamic programming
-
Greedy algorithms
- Task scheduling by completion time
- Motivation and characteristics
- Greedy methods compared with dynamic programming
-
Randomized algorithms
- Coupon-collector example
- Random hat-check example
- Motivation for randomized approaches
Course objectives
- Develop algorithmic thinking and apply it to practical problems.
- Explore problem-solving strategies and algorithmic approaches.
Course outcomes
- Use computing as a model for real-world problems.
- Describe a problem and form a clear model.
- Develop algorithms and implement them as programs.
- Apply problem-solving strategies and essential Python skills.
Assessment
Continuous Internal Evaluation (CIE)
-
Attendance — 5 marks
-
Programming-task continuous assessment — 5 marks
-
Two written internal examinations — 10 marks each
-
Laboratory examination — 10 marks
End-Semester Examination (ESE): 60 marks
-
Part A: Eight questions, two from each module, carrying 3 marks each (24 marks). Answer all.
-
Part B: Two questions from each module; answer one full question from each module. Each carries 9 marks (36 marks).
-
Examination duration: 2 hours 30 minutes.