Should object oriented programming be the first thing students learn? [closed]

My high school is starting a program where, instead of following the ‘traditional’ method of teaching programming (learning variables, then operations, loops, methods, and finally OOP), students are immediately introduced to object oriented programming without any other programming knowledge.

Is this a good idea?

My personal view is that teaching OOP first is misguided – when I was introduced to OOP, I was able to appreciate the power it gave me when designing complex programs, as I was already familiar with procedural programming. Introducing students to OOP at such an early stage might make them ignorant as to the power and flexibility that OOP gives programmers.

There are also the practical problems – students might have a difficult time designing classes when they have not been introduced to methods properly (how they work, when they should be used, etc.). I don’t have many details about the course curriculum, but by my understanding, students are to be introduced to OOP by their third lesson, after having been taught variables and operations (as well as standard input/output).

In case it’s relevant, the language my school teaches in is C#.

8

I believe it’s a bad idea to teach object oriented programing first. My friend who took a course at a university where they taught OOP right away didn’t properly learn how things worked. I believe not focusing on paradigms and not using classes is a good approach to introducing programing. Get familiar with the primitive data structures and flow control before learning OOP specific features.

3

I really think not.

Like many programmers of my generation, I learned using BASIC as a child, and I still think it has tremendous advantages over other more “modern” languages for those who are just starting to learn.

I think it may depend upon existing exposure and age (and what do you mean by the first thing they learn – kids as old as 2 or 3 are playing with tablets all the time now), but I have not seen any studies which looked at this at any age.

From a usability perspective for real neophytes, I think things like Python’s white space and semicolon requiring languages (or JavaScript’s automatic semicolon issues) can be a hindrance, but again, it depends upon their other experience to computers and keyboards etc.

I think a big mistake of people talking about the language to be taught is that they approach learning programming from the language at all instead of more holistically about all the gaps in people’s computer experience. Some beginners are not familiar with the computer, or the names of special characters, etc. I expect this is actually GROWING rather than declining with the diminishing exposure to desktop computers in the home and decline of laptops compared to tablets among kids. I remember early computing courses I attended (talking TRS-80 days again) concentrated on flow charts, but that seems to have completely gone out of vogue.

I think there are many ways to teach programming, it really depends on the course content and the teacher, they may have a really good approach to teaching the concepts. I don’t think you can really judge the quality of approach without knowing the whole story. This question feels like it is asked with a bias of expectation, highlighting how it can fail based on that expectation, rather than perhaps the course creators vision of how they want to build the concepts and teach.

I believe that there are at least two levels of writing code:

  • writing code that does the task that it is supposed to do;
  • writing maintainable code that does the task and is also maintainable.

According to me, OOP is mainly about writing maintainable and understandable code. I think that when you learn programming it is hard enough to write code that just does what it has to do. This does not mean that writing clean, structured, and object oriented code is less important, it just means that it is too early to speak about that problems.

I would not introduce OOP concept in an early stage of learning of programming, because you can appreciate the advantages of OOP only after having written at least medium size programs.

I think C# is an excellent choice. You can get some pretty cool applications up and running with minimal knowledge. OO programming is not very different, if not identical to procedural programming in many ways. The students will still have to learn procedural style programming when they implement methods, but they will get to make much more interesting programs because they can make use of existing classes and/or overriding methods in those classes.

The trick at high school level is not to teach the students the ins/outs of programming but instead to get them “hooked” on programming. If they can build a really cool graphical application that does some neat things but learn only very basic programming, that will go a lot further than teaching them procedural coding but they have to use the console window that only allows textual input/output like they would end up doing if they started using a procedural language.

There are probably very many potential good programmers who lost interest after having to work with just cin, cout, scanf and getch().

2

I think is a good idea because maybe then they won’t write procedural code in a OO language as many programmers do. Of course they will not write good code from start or understand the concepts deeply but they will in time. Probably they will see it natural to use polymorphism and strategy pattern instead of many if-elses or switch.

Regarding procedures I believe is a good idea to learn with the idea of encapsulation from start; in OOP your procedures (methods) are not global and do no access global data so your are more restricted when writing them. If one learns this as a native and proper way, it will probably write better code with fewer dependencies.

However I believe OOP is probably better suited for university not for highschool.

I was teaching an introductory course to programming a while ago. In order to prepare my class, a few months before starting, I read a great book named:

Reflections on the Teaching of Programming: Methods and Implementation.

The book covers research about different approaches to teaching programming on different universities during a long period. This includes techniques as objects first, functional programming first, apprentice-learning, model driven, etc., etc.

I defintely think it is a good start to get a good answer to your question.

Now a great book on how to teach objects first is Objects First with Java: A Practical Introduction Using BlueJ.

The book is very well designed thinking on teachers and students. Your lessons are already well prepared and I like the approach, even when I did not use it.

I taught my class first using an imperative style with Python and then, in a second class, I moved to the object-oriented model, mostly using the Karel The Robot: A Gentle Introduction to the Art of Programming and the students loved it. I think I could have tought programming with the object-first aproach using any of these two books. Evidently, these are for introductory courses. And some videos of University of Standford that I have seen seems to use these same approach.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật