Course Description
Completion requirements
Course Objectives
The objectives are to:
- Introduce students to core concepts of computing and problem-solving processes.
- Develop students' ability to identify and classify routine and non-routine problems.
- Provide foundational knowledge of algorithms, heuristics, and solution techniques for problem-solving.
- Equip students with skills to design solutions using flowcharts, pseudocode, decision tables, and trees.
- 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:
- Explain the processes involved in problem-solving.
- Demonstrate effective problem-solving skills.
- Describe algorithm development and its properties.
- Discuss various techniques for solving problems.
- Solve computing problems using algorithms, flowcharts, pseudocode, and decision-making tools.
- 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
- Dromey, R. G. (2017). How to Solve It by Computer. Pearson Education.
- Downey, A. B. (2016). Think Python: How to Think Like a Computer Scientist (2nd ed.). Green Tea Press.
Supplementary Texts
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press.
- Forouzan, B. A. (2019). Foundations of Computer Science. Cengage Learning.