Introduction to Problem Solving in Computer Science

CS 2104

I -- Catalogue Description

This course introduces the student to a broad range of heuristics for solving problems in a range of settings that are relevant to computation. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems "in the small" (classical math and word problems), generating potential solutions to "real-life" problems encountered in the profession, problem solving through computation, and problem solving in teams. Pre: MATH 1205 or MATH 1526; ENGE 1024 or programming experience (3H, 3C)
Course Number: / 2104
ADP TITLE: / Intro to Problem Solving in CS

II - Learning Objectives

Having successfully completed this course, the student will be able to:
·  Identify skills and personality traits of successful problem solvers.
·  Apply standard problem-solving heuristics to aid in problem solving related to computer science.
·  Apply problem-solving techniques to programming activities.
·  Apply problem-solving techniques to school and personal interactions.
·  Apply pair and team problem-solving techniques.
·  Generate potential solutions to problems with standard heuristics.
·  Formulate and successfully communicate problem solutions.

III - Justification

Computer scientists are problem solvers, not just programmers. CS undergraduates will benefit from a better understanding of abstract reasoning and the experience gained from centuries of problem solving in a scientific context. This course will serve both as a non-programming introduction to what it means to think like a computer scientist, and also prepare CS undergraduates to apply problem-solving skills in subsequent courses.
The course is offered at the 2000 level since it presumes students have successfully completed freshmen level courses, including MATH 1205 and ENGE 1024, and it better prepares students to take 3000 and 4000 level courses in CS.

IV - Prerequisites and Corequisites

Students need the mathematical maturity of having completed college calculus at the level of Math 1205 or 1526 to be able to handle the emphasis on abstraction found in this course. Similarly, they need some small experience with programming, as provided by ENGE 1024 or prior experience with a high-level programming language.

V - Texts and Special Teaching Aids

·  Levine, Marvin. EFFECTIVE PROBLEM SOLVING. Englewood Cliffs, NJ: Prentice Hall, 1994, 148.

In addition, books and papers such as the following will be used as supplemental references:

·  Whimbey, Arthur and Jack Lochhead. PROBLEM SOLVING AND COMPREHENSION. London: Lawrence Erlbaum Associates, 1999, 390.

·  H.S. Fogler and S.E. LeBlanc. STRATEGIES FOR CREATIVE PROBLEM SOLVING (2nd Edition). Englewood Cliffs, NJ: Prentice Hall, 2007. 320.

·  R.M. Felder and B.A. Soloman, "Learning Styles and Strategies," available at http://www4.ncsu.edu/unity/lockers/users/f/felder/public/ILSdir/styles.htm

·  L.R. Capretz, "Personality types in software engineering," International Journal of Human-Computer Studies, Volume 58, Issue 2, February 2003.

·  L.R. Capretz, "Implications of MBTI in software engineering education," ACM SIGCSE Bulletin, Volume 34, Number 4, December 2002.

·  Da Cunha and Greathead, "Does Personality Matter? An Analysis of Code-Review Ability,” Communications of the ACM, Volume 50, Number 5, May 2007.

VI - Syllabus

Heuristics for problem solving:
·  Externalize
·  Deduction
·  Symmetry
·  Simplify
·  Go to extremes
·  Penultimate step / 25%
Communicating problem solutions: argument & proof, presentation (written and oral) / 20%
Problem-solving in the large: generating potential solutions, evaluating solutions, working in teams / 15%
Human aspects: self assessment, succeeding as a student, inter-personal problem solving / 15%
Problem-solving for computer scientists: programming and problem solving, computation in problem solving / 15%
Skills for problem types: verbal reasoning, analogy, comprehension, trends, deduction / 10%
100%

VII - Old (current) Syllabus

Not applicable.

VIII - Core Curriculum guidelines

Not applicable.