Describe how concurrent processing can be used to solve a problem.


Teaching Note:

For example, building a house, production lines, division of labour.

Students will not be expected to construct a flow chart or pseudocode related to concurrent processing.


Sample Question:


JSR Notes:

Non-Computer Examples

Where the first of the Concurrency assessment statements was simply "identify" parts of a problem that can be implemented concurrently, this is more "describing" how concurrency works. And really, the point is that because things can be done independently, they can be done at the same time, and this makes the whole process go more quickly. So with the house example, there are indeed a bunch of different things that can go on at the same time; they therefore should be done at the same time.

You could even think of what goes on in a school as being a combination of sequential and concurrent processing. In any given school year, you study a bunch of different subjects concurrently. Your study of IB SL Math can occur without you first having completed IB SL French, for example; the two subjects can be studied concurrently. Though within each subject, the order of learning must be sequential.

From the Teaching Note above, building a house is a straight-forward example of concurrent processing, as we have already seen. And a production line (i.e. assembly line, like a car factory) also includes both sequential and concurrent processing. Picture one complex car assembly line area where four different robots go about their concurrent processes at the same time on four different corners of the car. In fact, at each step along the production line there are likely things being done concurrently.

Computer/Programming/Java Examples

"Division of labor" is mentioned in the Teaching Note, and that's more often a term we use with the organization of our code - in terms of having different specialized classes, and different specialized methods. But if we are talking about division of labor of processing, then for concurrent processes to be happening with Java, we would have to learn to implement "threads", and programming-wise, that is beyond the scope of our course. But conceptually, you can imagine that if you could take a big problem that takes a lot of processing time in a particular program, and divide it up into chunks, you could make a separate Thread for each chunk.

Take a look at the videos in this section, and see the example where we would make three "threads" to do the following three methods all at the same time:




So back to the assessment statement itself: "Describe how concurrent processing can be used to solve a problem", if we take this in a general way, as I think with this one we can, how about this for a description:

Concurrent processing can be used to solve a problem by looking to see if there are things that can be done at the same time, and doing/processing those things "concurrently". By doing so, the overall time it takes to accomplish the full problem is reduced. In an IT situation, this is only possible if the software and hardware support concurrency. In terms of hardware, it means the CPU must be either multi-core and/or support multi-threading.