Course Objectives

The objectives are to:

  1. Introduce students to core concepts of computing and problem-solving processes.
  2. Develop students' ability to identify and classify routine and non-routine problems.
  3. Provide foundational knowledge of algorithms, heuristics, and solution techniques for problem-solving.
  4. Equip students with skills to design solutions using flowcharts, pseudocode, decision tables, and trees.
  5. Foster programming proficiency in solving problems using languages such as C and Python.

Overall Learning Outcomes

At the end of this course, students should be able to:

  1. Explain the processes involved in problem-solving.
  2. Demonstrate effective problem-solving skills.
  3. Describe algorithm development and its properties.
  4. Discuss various techniques for solving problems.
  5. Solve computing problems using algorithms, flowcharts, pseudocode, and decision-making tools.
  6. Apply programming knowledge in solving problems using languages such as C and Python.

Detailed Course Content

Module 1: Core Concepts and Types of Problems

  • Core concepts of computing and problem identification
  • Classification of problems: Routine and non-routine

Module 2: Problem-Solving Approaches and Techniques

  • Problem-solving methods and strategies
  • Algorithms and heuristics: Definition and examples
  • Solvable and unsolvable problems

Module 3: Solution Techniques

  • Abstraction, analogy, and brainstorming
  • Trial and error, hypothesis testing, and reduction
  • Literal thinking and means-end analysis
  • Other techniques: Morphological analysis, root cause analysis, divide and conquer

Module 4: General Problem-Solving Process

  • Solution formulation and design
  • Tools for solution design: Flowcharts, pseudocode, decision tables, decision trees

Module 5: Programming for Problem Solving

  • Introduction to programming languages (C, Python)
  • Writing and debugging simple programs
  • Applying algorithms in programming solutions

Lab Work

  • Utilizing tools for algorithms and flowcharts
  • Writing pseudocode for basic problems
  • Implementing assignment statements, input-output statements, and conditional statements
  • Developing and debugging simple programs using programming languages such as Visual Basic, Python, and C

Teaching/Learning Methods

  • Interactive lectures with real-world problem-solving examples
  • Laboratory exercises for hands-on experience
  • Group assignments and collaborative coding projects

Modes of Assessment

  • Continuous Assessment: 40% (assignments, quizzes, lab work, and participation)
  • Final Examination: 60%

Reading List/References

Primary Texts

  1. Dromey, R. G. (2017). How to Solve It by Computer. Pearson Education.
  2. Downey, A. B. (2016). Think Python: How to Think Like a Computer Scientist (2nd ed.). Green Tea Press.

Supplementary Texts

  1. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press.
  2. Forouzan, B. A. (2019). Foundations of Computer Science. Cengage Learning.