330 likes | 456 Views
Experience with Two OOP languages in one course. Ana Madevska Bogdanova, FCSE, Skopje, Macedoia. Outline . HISTORY Methodology and learning design of the course Experience from classes Lectures exercises Questionnaire Result statistic Conclusion. 1. History. Academic year 2011-1012
E N D
Experience with Two OOP languages in one course Ana Madevska Bogdanova, FCSE, Skopje, Macedoia
Outline • HISTORY • Methodology and learning design of the course • Experience from classes • Lectures • exercises • Questionnaire • Result statistic • Conclusion
1. History • Academic year 2011-1012 • Joining two institutions FCSE • First semester Structural programming language: C • Second semester • OOP language…? • C++ or Java • Why not both of them? • YES
2. Teaching Methodology … • Highly interactive face-to-face style of teaching. • Every teaching unit is prepared and performed with PowerPoint slides, that contain the teaching essence planned for the week. • Each theme is accompanied with parts or complete code of a given problem. • The slides contain questions and programming puzzles - parts of a code of a given problem. • simple OO problems, convenient to use for discussions and mutual exploring towards the solution.
… and Learning Design • 2 hours lectures, 2 hours theoretical and 2 hours of lab exercises per week. • The lectures cover the basic principles of OOP, supported by code parts for illustration. • The theoretical exercises expose the students to problems that are simple enough to be analyzed during the 2 hours, but also illustrative and realistic to be interesting. • For the lab classes, the students are divided in groups of 20. • They solve programming problems that are graded weekly, and form the part of the course final grade.
Recommended books for the course (1) • Prata S., C++ Primer Plus, the Waite Group, 1998. • Stroustrup B., The C+ + Programming Language, Third Edition, AddisonWesley, 1997. НРС - вовед
Recommended books for the course (2) • Danny Kalev, ANSI/ISO C++ Professional Programmer's Handbook (Que Professional Series), 1999 • Eckel B., Thinking in C++, 2nd Edition, 1999.http://www.BruceEckel.com НРС - вовед
Recommended books for the course (3) • C++ How to Program (8th Edition) • by Paul Deitel and Harvey Deitel, Prentice Hall, 2011. • C++ Annotations • by Frank B. Brokken, (v 9.1.0), 2012. http://www.icce.rug.nl/documents/cplusplus/ НРС - вовед
Recommended books for the course (4) • The Java Tutorial, Oracle • http://docs.oracle.com/javase/tutorial/ • Ivor Horton's Beginning Java, Wrox, 2011. НРС - вовед
Recommended books for the course (5) • Thinking in Java, 4th edition • by Bruce Eckel • http://mindview.net/Books/TIJ4 Web resources… • http://www.apl.jhu.edu/~hall/java/ НРС - вовед
3. The week-to-week experience • First – confusion, how it will be like ???? • First 6 weeks C++ • Structural C++ • Classes, objects, constructors, destructors • Operator overload • Inheritance, abstract classes • Virtual functions, Polymorphism • Multiple inheritance FIRST partial exam – C++
3. The week-to-week experience • Next 5 weeks JAVA • The same OOP topics • But with JAVA specific feauters • Garbage collector, polymorphism, downcasting, upcasting, exceptions SECOND partial exam - Java
Main benefit • We could emphasize the differences between the two languages • Students showed great interest
Exams? • Always two OOP problems • C++ • Java • Equally evaluated, 50% each
But, what do the students think? • Is the workload overwhelming? • Do all the students feel the same? • Is it hard to learn two different OOP language syntaxes in one semester?
4. Questionnaire • Short one • 6 questions • General picture • Answered from ‘different’ categories of students • ALL • The best • Average
Q1 I was attending the lectures/exercises : • а. 80-100% • b. 50-80% • c. <50%
Q2 My partial exam-results: • а) > 80% • b) 60 – 80% • c) 40 – 60% • d) < 40 % • e) I didn’t attend
Q3 Learning two OOP languages in one course • а) required normal effort • b) wasn’t easy nor hard • c) required lot of effort and time
Q4 Studying the first OOP - C++ • а) wasn’t very hard • b) it was hard, but there was enough time to learn all the parts • c) it was too hard and I couldn’t learn the given material
Q5 Learning ЈAVA • а) was easier task as a second OOP language • b) as a second OOP language was the same difficulty as learning first OOP • c) was difficult and I couldn’t manage
Q6 – the last one Laboratory exercises helped me to learn both languages C++ and Јava • а) very much • b) not much • c) not at all
Q7 • Write what was the best and / or the worst part of the course
What questions can be answered with this questionnaire? Answers from three different student profiles 1. The most popular answer among the ALL students 2. ‘The Best’ students answers • Passed the Structured language course from previous semester • Showed good results on the first partial exam (>50%) 3. ‘Average’ students answers • Showed <60% on the first partial exam • Some of them didn’t pass the SP course
Q6:Laboratory exercises helped me to learn both languages C++ andJAVA
Q7 • Mostly mentioned answers • Liked the organization of the course • The course team was highly rated • Learning two languages was too difficult (about 35% of the answers) • Fancied the female assistants
Passed the course, two generations • 2011/2012 • 2012/2013 • ~100 students, one group, ‘independently drawn’ objects • According their surnames
First generation 2011/2012 • 106 students in the group • 51%has passed • 10 (A) – 15 • 9 (B) – 4 • 8 (C) – 8 • 7 (D) – 11 • 6 (E) - 13
Second generation 2012 / 2013 • Only one exam session so far (june) • August + January to go • 119 in the group • So far 35% has passed the exam • 10 (A) – 12 • 9 (B) – 4 • 8 (C) – 9 • 7 (D) – 7 • 6 (E) - 9
Conclusions • We believe that this dynamics suite the students and they are well prepared to continue with the Algorithms and Data structures in the 3rd semester, as well as with the courses about the advanced programming on a different platforms • According the questionnaire, it is not too demanding to have two OOP languages workload