Refactoring the Teaching of Object-Oriented Programming
W. Gardner, R. Sutcliffe, and D. Ariel
Department of Computing Science
Trinity Western University, Langley, BC
{wgardner, rsutc, dariel}@twu.ca
Keywords: object-oriented programming, team teaching, C++, Java, pedagogy
1) Does it help or hinder students to study more than one OOP language literally at the same time, i.e., not even in rapid succession? Ideally, the multiple exposures reinforce the common concepts, while the contrasts reinforce the language distinctions. At worst, we feared mass confusion could result.
2) Is it feasible to closely synchronize multiple courses running concurrently, or is it more trouble than it's worth for the instructors to organize themselves like this? This was intensive team-teaching. If our schedule proved impractical, or if we drifted away from it, the neat principle-and-application sequencing of phase two would break down.
1. Third and fourth year students reacted more positively to the unique features of the experiment than did first and second year students, especially with respect to their overall experience. (3.5 vs 3.1). This might suggest that, though the course was intended to be at the first year level, it resonated at a higher level. On the other hand, it might simply reflect that the upper level students had better preparation and were already determined on a career in computing.
2. The few who had taken Java before as a stand-alone language course without the theory seminar in support much preferred things done the new way.
3. Results were sharply bimodal on these questions:
On the latter point there was criticism of the CMPT 160 instructor for placing questions on the exam such as "Show how to declare and instantiate objects in two languages we have studied." Some felt that they ought to be required to know only the theory that applied to the specific language they wanted to study, which would of course partially defeat the purpose of separating theory from language.
4. Despite the bimodal distribution, overall results were quite positive on #1 the separation of theory and notation (3.41) with the Java students (3.73) much more positive that the C++ students (3.35).
5. Very positive results (3.41) were also found from question #3, which asked if the attempt to abstract the big picture of OO concepts from notational details was helpful. Again, the Java students were significantly more positive than the C++ students. Overall, this response would appear to suggest that the basic plan of instruction succeeded with the students.
6. Almost no one thought those taking a second course from the package should have to re-write the 160 (theory) part of the exam. We weren't planning to require this anyway, and expected most students to agree.
7. Most thought that the two-hour classes were too heavy, and preferred two one-hour blocks for the individual languages (question #5), and by the time we took the survey the instructors had come to the same conclusion themselves.
8. Results were quite indecisive on #4 (Were illustrations from a variety of languages helpful?) and #8 (overall experience) but for different reasons. On #4, responses were evenly distributed, except that upper level students were more positive. On #8, responses clustered heavily in the middle, suggesting students did not feel their individual experience was significantly better or worse, even though they had agreed strongly that overall strategy was sound and helpful. We take this to mean that some fine tuning to improve the overall experience is indicated.
9. Despite this, most who answered #10 (would you take the other language in the package) said they would if they got the chance.
10. Students in the Java course were more positive about the two course, 2 instructor aspect (questions #1-4) but found the total experience less satisfactory (#8). This result is somewhat contradictory, but there were only eleven respondents for Java, and so it may not be significant.
11. The four students who responded as taking both languages may not comprise a significant sample, but were uniformly positive about their experience.
1. The topic outline needs to be revised to reflect the fact that some theory portions took longer than a lesson, and others less. Alternately, we could use a sixty-five minute time block instead of a fifty minute block for the theory portion. Either is a minor change.
2. Phase I of the schedule needs to be slightly lengthened to avoid pressuring C++.
3. The bundling of exams needs to be revisited, since it seemed to cause some confusion.
4. With the third- and fourth-year students eliminated from the next round, we need to take more care to target the less-experienced audience in terms of the depth and pacing.
5. We found no significant positive or negative indications on the question of whether students had a problem taking both languages at once.
What follows is an abbreviated form of the survey instrument:
CMPT 16x OO Courses Survey Spring 2000
Help us evaluate the effectiveness of our OO teaching strategy. Anonymity assured.
ESL student?Year # (1-5) (Students were also asked a variety of questions about their TWU course background.)
Please note: Later, you will have a chance to evaluate the individual 16x courses in the normal TWU evaluation process. That is not the purpose of this survey. Here, we are looking for feedback on the 160 + 165/7 packaging concept.
Which OO course(s) are you taking this semester? circle: 160 OO Concepts 165 C++ 167 Java
The 16x experiment: We factored out the language-neutral OO theory into the 1-sem. hr. 160 "base class," and taught the language-specific practical elements in 165 and 167 @ 2 sem. hours each. We hoped that by teaching OOP (object-oriented programming) in this way, we could highlight the underlying theoretical concepts (so you'd be able to identify them more easily when you learn another OO language later), and reduce the redundancy (avoid going over the same ground) in the language-specific courses. Also, if you take the other language course later, you won't have to take 160 again (saving both time and tuition money).
Opinion questions: Write a number 1..5 according to the scale given. Generally, 1 is strongly negative, 5 is strongly positive. Leave blank if not applicable. Explanations or comments are more than welcome!
1. How did you feel about learning the OO concepts in a separate class from Java/C++?
[1=better to learn it all in one class .. 3=doesn't matter .. 5=separate classes helpful]
2. How did you feel about learning the OO concepts from a different instructor than Java/C++?
[1=better with just one instructor .. 3= doesn't matter.. 5=two instructors was great]
3. 160 tried to abstract the OO concepts and give the "big picture," which you would ordinarily not get in a language-specific course. Was this helpful?
[1=NO, I was confused by the "big picture" .. 3=no opinion .. 5=YES, excellent!]
4. 160 introduced examples from a number of OO languages, in order to illustrate differing terminology and syntax. Was this helpful?
[1=NO, I didn't want to learn about other languages .. 3=didn't matter .. 5=YES, excellent!]
5. How did you feel about the 2-hour blocks for 165/167?
[1=use 2 1-hr classes .. 3=don't care .. 5=2-hr class was great]
6. How did you feel about combining 160 and Java/C++ on one midterm exam?
[1=give 2 separate exams .. 3=don't care .. 5=having only one exam was great!]
7. If someone takes the other 16x language course in the future (they won't repeat 160), should they write the 160 part of the midterm and final exams again?
[1=NO, it's not fair .. 3=doesn't matter .. 5=YES, they should still know that material]
8. Rate your overall learning experience with the 16x courses.
[1=well below average .. 3=average .. 5=as good as it gets!]
9. If you would be interested in having us offer another CMPT 16x OOP course (not Java or C++), please write the language name(s) here:_____________ ________________ _____________
Individual situations: Please read the conditions carefully before answering the next questions.
If you have not yet taken both C++ and Java, answer this question #10:
10. Would you like to take the other 16x course in the future (you won't repeat 160)? (check one)
[1] YES, probably.
[2] Wait and see.
[3] NO, I'll study it on my own because I can pick it up without another formal course.
[4] NO, I'll study it on my own because I don't like the 160 + 16x approach.
[5] NO, not interested in the other language.
[6] NO, some other reason. Explain:
If you are presently taking both 165 & 167, answer questions #11-13:
1. What do you think about studying Java and C++ at the same time?
[1=quite confusing .. 3=neither good/bad .. 5=quite helpful] Comments:
2. Did you appreciate having the redundancy removed (into 160), or would it been better to leave it in and have two 3-credit courses with considerable conceptual overlap?
[1=leave in the overlap .. 3=either way OK .. 5=good to remove the redundancy] Comments:
3. Based on your experience, do you prefer studying two OO languages together, or in different semesters?
[1=better apart .. 3=either way OK .. 5=better together] Comments:
If you took 241 Java before, answer question #14:
14. Compare the 160 + 16x combination to taking a single language-specific OOP course.
[1=single course better .. 3=about the same .. 5=combination better] Comments: