Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been teaching an OOP course for almost one year from now. The premise of the school is to use Java by using NetBeans for the programming part. I have seen the following scenarios:

  • The students get overwhelmed by the amount of information about the different controls to use, so they lost focus on the programming paradigm taught (in our case OOP)

  • They rely on their memory, mainly of the different Java GUI tools

Is the best approach to teach the OOP topics by making use only of console and with little or no use of the Net Beans GUI? Could that help the students to focus more on the logic of the program and maybe to learn how to do quick tests?


share|improve this question

closed as primarily opinion-based by Glenn Nelson, GlenH7, Dynamic, MichaelT, Corbin March Aug 18 '13 at 23:13

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

To those who put this on hold, I will argue that this question can absolutely be answered with facts, references, or specific expertise from those with professional backgrounds in computer science education. Although some of the current answers definitely fall outside this category, there is nothing with the question itself that prevents a well founded response from someone with a background in CS education. –  bunglestink Aug 19 '13 at 0:30
@bunglestink - then open a question on Programmers Meta and make your case for this question. The OP didn't provide any criteria with which to make the evaluation and the answers so far have been lackluster. You're allowed to flag the question for mod review and make a persuasive case as to why the question should be re-opened. –  GlenH7 Aug 20 '13 at 2:29

6 Answers 6

This is just a personal opinion, but I don't think teaching GUI alongside OOP to beginners is a good idea. There are few more problems on top of ones you named.

I believe the biggest one is confusing OOP with GUI itself. Especially the thought that "object" is equal to "visual object" is the most problematic one. People might get ideas when people talk about "object", they will always be things like windows, buttons, panels, something that paints itself, etc.

So in the end, I would definitely use console applications as way to teach basic programming and OOP concepts. I would leave specific GUI library to separate course.

share|improve this answer
+1 -- The "GUI approach" in the OOP course I followed is the precise reason why I decided to not attend classes and studied only few hours before the exam. Maybe other students like this approach but I really hated it, since I don't see how it fits in the OOP theory. –  Bakuriu Aug 18 '13 at 20:58
@Bakuriu if you have experience with C# and WPF you will know that WPF mostly depends on inheritance and composition and that it is the only way to write good UI with C#. On a different note altogether, while the above is true I have to add that there two approaches in computation and of which one of them is in favour of UI: computation as calculation and computation as interaction. The latter is a much newer concept and many think GUI as an introduction to the thoughtline would make it easier to grasp the concept early on. –  MoonOwlPrince Oct 24 '14 at 20:33

Would you recommend to teach the OOP topics by making use only of console and with little or no use of the Net Beans GUI? Could that help the students to focus more on the logic of the program and maybe to learn how to do quick tests?

My premise is that I'll speak just as a student. I remember two C++ courses in my university: "Basics of C++" and "OOP with Qt" (C++ GUI library). Each took about 2 months.

The first one is considered one of the hardest and yet boring course, the one people just want to pass and don't want to excel in. It just teach you the basic of the language and doesn't really focus on the OOP part. I'd compare it to the first months of your year-course: they are painful but necessary.

The second one was one of the course I've ever attended with much enthusiasm. Why? Because part of the exam consisted in creating a full GUI application (I'll leave the details out for the purpose of this talk). I really felt part of the course and I felt that something challenging and useful was actually being done. Also, I've probably learned more C++ programming patterns and how the language works in the second course rather than the first one whose only purpose was that.

So I'd highly suggest you, if you consider your students ready, to involve GUI programming with one of the most used library out there. Why?

  • Because it's no surprise that GUI is more exciting than the command line (except for some MS-DOS guys I guess)
  • Because it requires you to fully understand the OOP concepts behind the library
  • Because knowing a library is always useful (future work)
  • Because it's more challenging
  • Because (testing with a final project) helps you understand real-life programming problems and let you find their solution, which you'll never forget.
share|improve this answer

I'm a student myself and I just wanted to say that I wish I was taking your course.

Yeah, in terms of OOP programming, I would think console is the way to go for starters. It kind of acts as a springboard to more challenging things like using OOP with GUI.

share|improve this answer

If the students have little to no experience with OOP and/or GUI programming, it would be good to ease the students into this using console only. I have taught both OOP courses as well as GUI programming courses. They have been separate from one another. I have found GUI programming in itself can be very confusing for some students without having to learn OOP concepts as well.

share|improve this answer

Why not do both? Start with the command line then when they get comfortable making basic programs then you can move on to an IDE.

share|improve this answer
I agree with this. But for the love of god: teach them how to use a layoutmanager instead of absolute positioning. My teachers last year only used absolute positioning and it has been a pain transitioning to an actual manager for my project this year. –  Jeroen Vannevel Aug 18 '13 at 19:35

I would strongly recommend you to opt for Python. Python is very much readable for beginners and professionals alike and apart from readability it has both Object-Oriented(OO) and Functional paradigms. To teach GUI, you can look into Python GUI designer.

You are absolutely write that most of the students and beginners who start Java or C++ concentrate more on syntax, braces, semicolons rather than on logic or the programming paradigm which is quite harmful.

Look into Python and see how well suited this language is for the programming learner.

FYI: http://www.python.org/doc//current/faq/gui.html


share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.