Task-Parallelism: partitions the work to be done by dividing the various tasks to be done onto separate cores.
Data-Parallelism: partitions the work to be done by dividing the various problems to be done onto separate cores where each core carries out the same or similar operations on that core's data.
Example from Pancheo: A professor has 100 students take a 5 question exam. The professor, assisted by her 4 TAs, can grade the exams either using a task or data parallelism approach. A task-parallel approach would be if each grader were to take one question and grade only that question on all 100 exams (each core has a specific task to focus on). A data-parallel approach would be if each grader took 20 exam and graded all 5 questions (each core takes an equal amount of data and performs the same tasks).