Domain: bluej.org
Stories and comments across the archive that link to bluej.org.
Comments · 53
-
Java / BlueJ
I don't know about books, but if you go to http://bluej.org/, you'll find a nice, simple IDE, and some documentation and exercises that I know have been used successfully in high-school level classes. I know there are some other languages and associated programs that are specifically targeted at teaching younger kids, but I figure it's nice to get them into real, modern practices quickly.
I also like scripting languages, like Python, Javascript, Perl and Ruby. The advantage with Ruby is that there's an intro text that's a comic book. Something like "The Poignant Guide to Ruby". Check it out. -
Objects-first under heavy fire
The extremest form of emphasis on OOP in teaching CS, objects-first, as seen, for example, in Kölling's Objects First with Java, has been heavily criticised lately in the computer science education community. One recent visible critique was Moti Ben-Ari's Objects Never? Well, Hardly Ever! (PDF, unofficial version to avoid ACM paywall), (paywalled official ACM version).
Similar things are happening at my own university, where objects-first has been seen as an important preparation for future programming work. The CS course for engineering majors who won't be doing any more programming switched from Java to Python and covering OOP briefly at the end of the course; the CS course for CS majors and others who will be studying more programming is due to do the same this autumn.
-
Have a look at BlueJ
Have a look at BlueJ http://www.bluej.org/ I think that java is a great language to learn programming and being based on C-style syntax, the transitions to C should be fairly smooth.
-
Please learn ruby and python
Please learn both Ruby and Python, and while you're at it, some Javascript/JQuery/Mootools cool stuff too. And do it all using full systems hungarian notation. In vi. On Solaris. Upside down!
AND
If you feel like having some fun, adopt and a silly "langauge" like brainfuck or MS ASML (a quirky state machine language you can do OOP in).
Because of the current economic climate, please do not learn C, C++, Perl or Java. Please do not approach any VHDL gigs either (nb: you'll design some plain awful crap until you've done your advanced systems/digital modules). Please do not learn any programming abstraction methods or useful models - specially via the easy-peasy Java intro to it all at http://www.bluej.org./ Dont learn Qt or STL, and especially avoid OpenMP and Boost. Dont code a transaction engine, but DO make use of obscure SQL calls and extremely long queries with lots of stored proceedures on unnormalized sets. If you know when to use singletons, RAII/smart pointers or observer patterns, or know when to hit someone for telling you how to program, then stop: STOP I said! Forget everything you know and start again. Perhaps you could learn how to code a standards compliant doc type definition spec for the process of eating cheese. If you've learned anything useful, stop and spend time coding an XML parser or i18n input library, or if that's too hard, go and add lots and lots of structured exception handling to your favourite open source library.
In advance, I'd like to thank you for not competing with me and everyone else who's graduated or recently been made redunant.
Cheers,
Matt -
Re:RMS == bonkers!?
Actually, if that were to happen -- and it won't:
Says who? MS has done precisely that in the past. Why are you choosing to ignore this fact? Microsoft executives have announced explicit intentions on this matter.
Microsoft sues => Linux distros must stop using the
.NET framework => Tomboy gets ported to unmanaged C++ via an automated tool => Tomboy keeps on working.Wouldn’t such tool have to automatically change all uses of a patented API in a binary program? How will it work?
C# is as open as it gets. It's developed through the ECMA (which is so "open" that it maintains the standards for Javascript), it has a full GPL reference implementation, its relevant standards are fully published in all details and are globally available free of charge.
Your point was: Java is not open. I said it is. I never said C# isn’t.
Anyway, since you mentioned it, where can I download the GPL reference implementation of C#?
And how can I follow the ECMA meetings that are shaping the future of C#? I suppose it’s not that a Microsoft internal team develops it behind closed doors and simply submits the finished product to ECMA for standardization.
Because this would mean that for every new C# revision, all non-Microsoft implementations will lag behind before implementing the new features.
Which is precisely what has been happening with Mono in the past five years.Microsoft and the free software community have conflicting interests.
Not really, Microsoft and the free software community worked together succesfully a number of times. F/OSS zealots have a thing with Microsoft,
Sorry but in this thread, it is only you who have a thing with someone. You just started calling zealots those who do not agree with you, and expose their argumentation with valid arguments instead of insulting.
Although I am indeed a zealot, sometimes I base my opinion on facts, and I’d like to share some interesting ones with you.
- What Microsoft executives think about free software and patents:Linux is a cancer that attaches itself in an intellectual property sense to everything it touches
-- S. Ballmer, Microsoft CEOWe spend a lot of money - the rest of the commercial industry spends a lot of money - on R&D. We spend a lot of money also licenses patents, when people come and say 'Hey this commercial piece of software violates our patent, our intellectual property,' we'll either get a court judgment or pay a big check. I think it is important that the open source products also have an obligation to participate in the same way.
-- S. Ballmer, Microsoft CEO- Samples of past interactions between MS and free software:
Microsoft vs. tomtom
Halloween documents
Patenting other peoples’ideasbut whatever you can say about Microsoft, you can say about IBM or Sun -- who I am sure they hold countless Java patents.
Thats perfectly true! In fact, before this, RMS has vocally spoken against Java *for the exact same reasons* he is now warning against Mono.
After Java was licensed under the GPL v2, he stopped deprecating Java. That’s because even if Sun held patents about Java, the fact that they released it under the GPL means that they’ve granted perpetual free use of the relative technologies for everyone (don’t take my word - read the GPL).Besides this, if C# (or the BCL) were really dangerous, then why is th
-
Re:C# is the best alternative...
Just to reiterate the above point, if you go the java route, then I'd recommend BlueJ. It is an IDE, of sorts that visually introduce the java programming language.
-
For OO programming
While there has been extensive debate here, over whether to teach Java or not, I have found that if one wishes to teach/learn object-oriented programming, not only does Java do a good Job, but Objects First with Java - A Practical Introduction using BlueJ by Barnes & Kölling really drives through the concept of classes and how they relate to objects. This is done through BlueJ, and in that regard, BlueJ is actually a very nice tool. One should not fail to mention to the students, though, that for real coding, emacs, vi, eclipse, <insert favourite editor/IDE here> would be favourable, but for a basic understanding of the nature of OO, BlueJ is great.
-
Objects First
Learn Java with the BlueJ book:
Why?
1- Objects First.
2- An IDE that will tell you about what's going on with your objects.
3- You will be working with code already existing. You will then be asked to modify the classes. This is much more realistic, because usually you don't write the whole software by yourself. An essential skill is understanding other people's code and being able to work with existing classes. Supposedly, this is the big thing about OOP.
The IDE helps a lot. It kind of feels like Smalltalk - a Good Thing (TM), IMHO.
At least, get an "objects first" book. So many books teach Java as it were C, objects and classes being squashed in the middle.
Also, as a second book you will want a book on Data Structures. This being Java, you will want a book that teaches you how to use the existing stuff. "Objects, Abstraction, Data Structures and Design Using Java", by Koffman/Wolfgang is one I like.
PS: The BlueJ book is better than Thinking Java, IMHO.
-
Re:Net beans described as "lean"...??!?
You know BlueJ is Netbeans, right?
Now, there *is* a variant of Netbeans called the "BlueJ Edition", but that is not the same thing as vanilla BlueJ.
At all. Believe me.
If you think NB is slow, turn off some modules you don't need.
I do better than that. I don't use it at all.
:-) -
Re:Where's Novell?Yes. They didn't even need to strip out the rest of the OS. They could have sold an exact copy of whichever BSD they used, and as long as they kept the copyright notice, they'd be 100% legal. Knowing Microsoft, if they were to release a recompile of FreeBSD they would leave it unchanged, patent most of the existing ideas, call it all an "innovation", and then threaten anyone that uses FreeBSD. After all, they've similar with Blue/J.
-
Other Apps
Meanwhile, are there any other common college apps that Vista fails to work with?
BlueJ has some problems with elements of the UI when run on Vista under Java 5. Java 6 seems to fix this problem. (Works for me..)
More info here: http://bluej.org/help/faq.html#winvista -
Other Apps
Meanwhile, are there any other common college apps that Vista fails to work with?
BlueJ has some problems with elements of the UI when run on Vista under Java 5. Java 6 seems to fix this problem. (Works for me..)
More info here: http://bluej.org/help/faq.html#winvista -
Re:Puzzled
> My copy of Eclipse is currently running at 267MB. The install directory is over 1 GB
My high school programming students used Blue-J with great success building web apps. -
BlueJ, Star Trek and Microsoft lawyersThat, in fact, is the Microsoft strategy. There was a funny spoof years back, sort of a take off on Star Trek in which the enemy ship (Microsoft) prepares to attack. They don't deploy a photon blaster, rather the pod doors open, and a column of suits (replete with brief cases) emerges - oh no! - lawyers!
But at least in one case, very similar to Blackboard's situation (with prior art), Microsoft actually did the right thing. In their new version of Visual Studio, they had something called "Object Bench", and BlueJ developer, at first interested to see what Microsoft was doing, after exploring the screens a bit, realized it was very similar to BlueJ - a little _too_ similar, in fact! Worse, they were filing a patent!
Fortunately, MSFT has since apologized.
-
Re:Um...what did Slashdot have to do with it?
The story was first brought to light by Slashdot on Saturday.
Um...what did Slashdot have to do with it? It looks like this fellow started complaining on Friday: http://www.bluej.org/mrt/?p=21
Obi-Wan: "The article that I'm looking for should be right ..." (points at screen) "here." Librarian: "If an article is not on Slashdot, then it does not exist." (Turns abruptly and walks away)
Obi-Wan: (waves hand) "These aren't the nerds you're looking for"
Yoda (to the Jedi children): Gone is the website, yet the packet loss remains. Who will explain this?
Jedi child: Master Yoda - someone has slashdotted the site so that it can't be found in the library? -
Re:Um...what did Slashdot have to do with it?The story was first brought to light by Slashdot on Saturday. Um...what did Slashdot have to do with it? It looks like this fellow started complaining on Friday: http://www.bluej.org/mrt/?p=21 Obi-Wan: "The article that I'm looking for should be right
..." (points at screen) "here." Librarian: "If an article is not on Slashdot, then it does not exist." (Turns abruptly and walks away) Obi-Wan: (waves hand) "These aren't the nerds you're looking for" -
Mistake?
Anyone who thinks this was an innocent mistake in "implementing a suggestion" probably hasn't seen the screenshots comparing The VS screens with BlueJ. ( http://www.bluej.org/vs/vs-bj.html )
Personally, I'm convinced the most plausible explanation for the *extremely* close replication of the BlueJ screens in the MSFT product is that the BlueJ source was ported to C#, probably using an automated tool. -
Re:Um...what did Slashdot have to do with it?
Obi-Wan: "The article that I'm looking for should be rightThe story was first brought to light by Slashdot on Saturday.
Um...what did Slashdot have to do with it? It looks like this fellow started complaining on Friday: http://www.bluej.org/mrt/?p=21 ..." (points at screen) "here."
Librarian: "If an article is not on Slashdot, then it does not exist." (Turns abruptly and walks away) -
Um...what did Slashdot have to do with it?
The story was first brought to light by Slashdot on Saturday.
Um...what did Slashdot have to do with it? It looks like this fellow started complaining on Friday:
http://www.bluej.org/mrt/?p=21 -
Re:Sick Software "Patents"
A link I found at www.sslug.dk
http://www.bluej.org/mrt/?p=21
Greetings
Jim Oksvold -
Re:Hard to defend
Given that, they should be happy that their ideas have been adopted and given much wider exposure via Visual Studio. Perhaps their motives are not so pure and they now see their chance at big bucks from the big, rich nasty corporation?
Michael Kölling found out that microsoft had copied much of BlueJ's core functionality back in May 2005 (http://www.bluej.org/vs/vs-bj.html) and at the time he had this to say:
"Do I care? I don't care that they copied BlueJ - good on them, and good luck to them. But I care about attribution."
Microsoft allowing people free downloads of Visual Studio Express is all well and good (aside from the obvious arguments about locking people into their platform and software) except that it doesn't seem that these features taken from BlueJ don't seem to be part of the Express feature set:
"One final remark: this page seems to suggest that this new feature will be omitted from Visual Studio Express - exactly the VS version that is aimed at students!"
So their ideas only gain wider (unattributed) exposure through the commercial version of VS (I don't use VS, so can't confirm this personally).
Their motives seem to me to be about survival and not "big bucks from the big, rich nasty corporation". -
Re:Hard to defend
Perhaps their motives are not so pure and they now see their chance at big bucks from the big, rich nasty corporation?
No, I don't think that's the case. However, I'm more than a little apprehensive about an academic package that's not open source or Free Software, and whose license prohibits disassembly.
-
Re:Ever used Eclipse?
"I really like BlueJ, but I don't think there's one for Linux."
http://www.bluej.org/download/files/bluej-213.jar -
What do you want to accomplish?
I'd say python, or a similar language with a good interactive shell, and similarily equipped with with poweful libraries would be much better, because it would allow the kids to actually do usefull stuff.
On the other hand, if you want to give them a feel for how the computer "really" works, teach assembly programming. C has a place in modern programming, but I think it's a bad choice for a first language.
For just about any language, you can demonstrate basic concepts, and give such thrills as being able to print out your name 10 times etc. But for moving on to doing really cool stuff that you can show your friends, such as consuming rss, doing interactive 3d etc ... python would be an almost perfect fit, especially paired with a couple of modules/packages like http://www.pygame.org/ and http://ipython.scipy.org/.
Java comes a close second, but even using a tool such as http://judo.sourceforge.net/ or http://www.bluej.org/, java requires much, much more setup pr project to get up and running. Additionally java has no transparent compilation, which means you're stuck with the write-compile-test-cycle, rather that just write-test-change-test...
Another alternative would be http://www.squeak.org/ and/or http://www.opencroquet.org/. But it's a pretty steep learning-curve going from c to smalltalk, IMNHO. You're students should have an easier time of it, though.
Give some thought to what platform you and your students will be working on, too. For Mac OS X, I suppose objective-c might be a good place to start. On linux, I'd go with python, on windows, either python or c#.
The one good thing about c, that is also true for assembler *and* python, is simplicity. You don't *need* an IDE to get from idea to working program. Programming java with notepad and javac very quickly becomes difficult to manage, due to classpath-issues. But with c and assembly you'll still need linking for anything but the most trivial programs -- another win for python (or perl, ruby tcl, lisp etc). -
Re:There are options
Im Java fan, and I always read Mr. Gosling blog, and one time he recommend BlueJ, I never test but should be for very beginners developers.
-
Re:depends on what you want to teach
>>using an IDE will mask much of what could be valuable in learning, to the extent
>>students don't even "get" some of the important underlying principles.
Generally I agree with this. But if the underlying principles you wish to teach are the Object Oriented concepts, and not the system issues of classpath, object files, etc, then the BlueJ IDE might be a good compromise.
This year I served as a resource to a High School program which taught beginning java programming. They used the Java Concepts 4th edition textbook (Wiley - ISBN 0-471-73755-0) and from what I've heard it went well.
The BlueJ environment is cross-platform and allows the student to initiate classes, interfaces and abstract classes and provides a graphical way to implement those. I was dubious at first, coming from a JBuilder/Netbeans/Eclipse background. And those habits still had me providing advice using snippets of code or java files. BlueJ allowed the teacher to paste my code examples into the IDE though, so there really was no problem for either of us.
---
http://www.bluej.org/about/what.html -
BlueJ
I was taught java using bluej, this had its ups and downs. Its a great way of teaching object oriented principals as its visual display of classes, inheritance and interdependancy can help to hammer in a lot of abstract principals to those not used to dealing with them. The downside is its not a very good ide, while it was good to learn with its not somthing id choose to write code with. It dosnt force people to use main methods when programing so frequently you'll see people writing code which compiles and runs under bluej but is useless within the real world.
I'd still recommend learning it the way i did, get the principals of programing down show them all the pretty things it does and warn them about its naughty features. Then when theyre comfortable with bluej get the writing code without it, command line tools and whatever text editor you like. Once they can write code in bluej, they can transfer their skills to notepad and javac. Once your used to writing code in both then you can work with anything handed to you, vi, emacs, jbuilder, eclipse all of it.
Just make sure they stop using bluej when you tell em to. At the end of my first year its frightening how many people havnt made the step away from it.
anyway have a look at bluej here
bluej -
DrJava, BlueJ and washing machines..I've just taken a course in "Introduction To Programming" at my university, one of the better ones in the UK (Leeds). Here they teach with an IDE, DrJava. I found it useful to take advantage of the debugging features using stuff like breakpoints and watched variables, but we were also made aware of how to use the command line to compile, although not extensively. I agree that working out code without the advantage of hitting F5 and seeing your errors highlighted leads to better programming skills, but at the same time, you could argue that people shouldn't use Word/OO/your editor here because they have spellchecking features which discourage the learning of spellings. We should all write in Notepad and check a dictionary for uncertain words. Sounds a little deconstructive, no?
On the other hand, someone posted on the University's newsgroup a message about another IDE, BlueJ. To quote some of the professors:AJB: The main thing to watch out for with BlueJ is becoming too dependant on it. A number of students have had difficulty programming without BlueJ once they have learnt to use it.
NDE: Absolutely. Last year, a worryingly large number of our students thought that the programming language that they had learned was called BlueJ!
This response was the reason they switched us to using DrJava, since BlueJ apparently uses a visual representation of classes and objects to aid understanding. I'm in favour of IDEs for the ease of use but I think it's important to be aware of the other methods, just like anything else. I don't clean my clothes using a mangle and washboard, but I appreciate that people did (do?) and it's a useful option for learning how to clean my clothes properly when I can't get access to a washing machine (or something..).
I'm hoping that, this year, we don't get a similar number thinking
they've learned a language called DrJava -
Getting them to understand (i just graduated)
I've always been a good coder. This has made my degree (i just graduated
:D :D :D) quite boring in almost every respect.
I dont think I learned anything. Most of my friend have never programmed before - or those that did used VB or called HTML a programming language. Scriptkiddies at the least.
Both the scripkiddies and the never-before programmers had the same thing in common - they did know how to learn. They didnt know how to use help or documentation. Javadoc was mostly inaccessible unless it was generated. Refering to the online version was something they didnt think about - they wanted all the programs, skel code and teaching material in one place. Their mentality was that if it wasnt where their teacher put it, it wasnt right, too hard, and nothing something to invest time in. People like doing the bare minimum.
To teach java, my uni used BlueJ - http://www.bluej.org./ It's quite nice! It's an integrated "IDE" (text editor honstly) with a visual class generator/explorer/maker. It makes understanding object relationships and inheritance easy. People dont get bogged down with the other principals they're learning, such as commandlines, SQL and ER.
SQL annoyed the hell out of me because I knew it, and I knew how to do most things, it was the whole sqlplus command line experience on an unfamiliar terminal with poor codepage (charmap) support. I couldnt use backspace. It wasnt daunting to me, but it was to others. We all shared in common the annoyance that backspace wasnt going to work.
In the end I noticed that most of my friend didnt understand what they were being taught in BlueJ. BlueJ has a lot of documentation. It introduces concepts such as hiding and coupling strength really well - but its quite a lot to ask in terms of reading something you dont understand. I feel a commandline input at the time would have really annoyed people.
In the end most people didnt care about their introduction to Java and it serious stunted their work with ASML, C and their software engineering exercises. They didnt see the need to understand and take in what was there. Those that can program will wiz through the BlueJ material and go "oh yeh, that!" "of course" "duh, everyone knows that?"... I learned a few things such as guiding principals and terminology.
The second half of our introduction to Java was applet coding. Very simple applets. Applets are annoying simply because they're GUIs. Before we did linear least fit algorithms and quadratic solutions as our assements. Applets have layout managers and for people to understand other peoples screen sizes and resolutions, and why absolute positioning is bad, it take a lot of time. A simple input and process applet that exports to a javascript skel is a good idea here. You can combine the whole commandline editor progress - a bit of nano or notepad - with the uploading via commandline to a webserver.
The idea with splitting the programming and concepts up into BlueJ and commandline-applet thing was so we didnt get shocked when we saw the code to the applet. We knew the basics and what to expect. We built on what we knew.
Its important people understand different environments. One of the things I find hardest in any kind of programming is setting up an environment - i want to compile now!
Have everything in one location, all the evironment options setup and the skeleton source files availible. One zip file is all it takes.
Matt
My editor of choice is ConTEXT. My IDE is VS :( Its good :(. Netbeans and Ecclipse are overly complicated. I dont know where to start! -
Good IDE allows correct focus
I had to take an introductory course on Java a couple of years ago, even though I am fairly proficient already. But the course came in two flavors: one course in "object-oriented programming" (my course) and one in "java programming".
My course used the extremely simple IDE-ish BlueJ (http://www.bluej.org/). I think it was really great for all the non-programmers, because it allowed the teachers to start where you should: at the conceptual level. The other course started with syntax, compiler commands, files and Javas idiosyncracies (only one public class per file etc). They even spent an hour learning unix commands before they could start programming!
We started straight at objects: instances vs. classes, inheritage, methods, instance variables. BlueJ makes it simple: You open an example project (for instance a "shapes" program), and then you can instantiate objects and run their methods through a GUI. The objects even appear on-screen with quasi inheritage lines!
If you're teaching Java AND Python this object-oriented conceptual approach will be invaluable, in my opinion. And BlueJ is free as in beer.
-
use bluejay
When I learned Java my instructor made us use a program called Bluejay. I think it is a good platform to learn on and it is free. It is specifically designed for teaching. You can find out more info at http://www.bluej.org/
-
Re:choose a good teacher first
BlueJ is a good tool to teach programming with. It uses Java as the language, but you don't have to mess around with creating main functions and the like - you just create objects, and can instantiate them and use them interactively in the IDE. And the objects you create are shown as a class diagram instead of a list of files.
You can then teach OO without worrying too much about teaching IDEs. -
Re:VS2005 (BlueJ-based "innovation")
Ah, yes, the wonderful "innovation" of the object bench! Of course, that's "innovation" in the classic sense of "take somebody else's idea and resell it without credit or payment". See http://www.bluej.org/vs/vs-bj.html for the real story.
-
Try these...
This is by no means an ad. Just a helpful bit of information. Bluej and Dr. Java have worked well for me in the past. Bluej has more (in my estimation unneeded) frills then Dr. Java, bu that's a personal preference. Dr. Java has a very shallow learning curve, and setup is simple: run the installer, and point it to your tools.jar class path. Both are free; Bluej was "developed and maintained by a joint research group at Deakin University, Melbourne, Australia, and the University of Kent in Canterbury, UK." while Dr. Java was developed at Rice University in Houston, TX. Just my two cents.
-
Re:Java.
"Basically, what is important here is not the fact that you are going to learn a certain language, but that you will learn how to write object oriented code."
You may want to consider what books/software are available.
Objects first with Java has uniformly good reviews on Amazon, a supporting website, and of course the designed-for-education BlueJ IDE
-
Re:Java.
"Basically, what is important here is not the fact that you are going to learn a certain language, but that you will learn how to write object oriented code."
You may want to consider what books/software are available.
Objects first with Java has uniformly good reviews on Amazon, a supporting website, and of course the designed-for-education BlueJ IDE
-
Learn OOPSince you haven't mentioned a specific programming language, I'll assume you're conversant in C, but not C++ or Java. In this case, you'd probably be good learning Java: you'd be learning a new style of programming, have a "safe" environment to fail (since everything in is in a JVM) and you can leverage the cross-platform GUI to run on Mac and Linux.
Eventually, you'll want to move to Eclipse, but you can start off with BlueJ, which will help you learn the basics before you try anything more advanced.
-
Re:Show me one exampleit can mean implementation of existing technology in innovative ways.
Right, two decades of Excel, and I still can't get a decent preview of a spreadsheet. Some innovation.
It isn't that taking other people's ideas and improving on them is a bad thing. It's the complete lack of candor and appreciation of the real author's work by not citing your source that is bad form. Then, claiming that you "innovated" the idea, is just pure theft of credit due to the real innovator and a lie. Pointing out what you consider lack of innovation from others is then pure hypocrisy.
The crazy thing is, they just keep doing it, and the news media doesn't call them on it.
= 9J =
-
Re:There is a problemI tutor around 30 1st year university students using old versions of software and on an unreliable network.
Even free programs such as blueJ are a few verions behind!
But I have noticed that alot of the students are more interested in crappy flash games or people falling over on an avi.
-
Re:Java
If you decide to teach her Java, you should consider using the BlueJ IDE. It's designed to make it easy to learn Java. You can implement classes and mess with them directly from the IDE; no need for a main() method or i/o. So, for example, her first class could have nothing but a hello() method that returns the string "Hello, world!". And you can visualize the class hierarchy graphically.
It is free but not (yet) open source. It's written in Java so it should run on your platform of choice.
-
Try visual programming in Java right now!In the "shameless self-promotion" category, I'd like to submit the following example of an attempt at a general purpose visual programming language:
http://tomatoide.sourceforge.net/
It works. Almost. I've largely lost interest in it. The reasons why it isn't a practical way to program are legion, and BlueJ is probably a better implementation of the same idea, anyway.
Best feature: You can modify a running program while it's still running.
-
Two possible books
I can personally recommend Java Software Solutions: Foundations of Program Design , by Lewis & Loftus. We used this textbook (the first edition, link above is the 3rd edition) in an introductory programming class, and it's very focused on program design first, Java second.
I will say, however, that a big part of what made the text successful in our class was the outstanding instructor, who gave a programming assignment every week, of his own design, rather than those from the book. Then again, I loaned my non-technical boss the book, to supplement her readings for the Java class she was taking, and she found it much more helpful than the text assigned by the instructor. In fact, she still hasn't returned it...
Another possibility would be Objects First with Java: A Practical Introduction Using BlueJ . BlueJ is an IDE specifically designed for the teaching of object-oriented programming, using Java. If you go to the BlueJ web site, you can learn more about the IDE (which is freely downloadable) and the pedagogical philosophies behind it.
I should say, I have not had personal experience with this text, just that it sounds like it might fit your requirements fairly well.
-
Re:overengineering the solution
Once they are comfortable with Javascript you can move them on to writing full-feldged Java applets (of course all of this coding can be done in notepad (or your favorite syntax-highlighting text editor))
For Java, I like to use Programmer's Notepad if I just want a notepad-esqe interface with basic highlighting. However, BlueJ is a decent, albeit quite limited, IDE if you prefer that instead. For any real heavy GUI work, though... you'd want to spring some money for a full-blown IDE. -
Re:Java
Heh. If I was handed NetBeans as the answer to my request to learn programming, I don't think I would've gotten to the point where I am today. Why the hell would a kid sit through the hell known as NetBeans to program in an overcomplicated language, where you have to type a lot to get little return? Eclipse would be less painful from a UI-responsiveness standpoint, but it is still a lot more complicated than a beginner's IDE should be. While I still dislike Java, especially for teaching to youngsters (to 18-year old CS1 students is another thing), I'd at least recommend something like BlueJ. Heck, even as a non-beginner, BlueJ is good for playing around with Java objects.
I agree that a beginner programmer should learn to use real programming structures, but there is no reason they have ti learn it formally.
For a second, I thought your post was in jest, but I think it's more that you don't know any kids. While I'll admit to having played with some DOS SQL databases when I was young, most kids - especially bright kids- aren't interested in a structured course where they learn how to be a good warm body for the programming market... They have the rest of their life for that kind of bullshit, why raise them on it? -
Re:Yet another reason for BSD/LinuxBlueJ is much better than Eclipse or NetBeans for the young programmer. No need to explain "public static void main..." out of the starting gate, just plain classes (in real Java, mind you), which can be instantiated or have methods called manually or by other code. Built-in minimal UML for "is-a" and "uses" diagrams, and still full access to any Java class library.
I'm planning on using this summer to teach my daughter some programming by making a game together in BlueJ.
-
Use this program in classesIf you want to teach students how to program in an OO way in Java. You can use this program:
Teachers can start teaching objects and classes from the beginning. They don't have to tell students:
"Just write down: public static void main (String args[]) { } And don't ask me about it until later".
it wouldn't run some of my home-made classes, but then I didn't read the manual
:P -
BlueJWhile I personally hated it, BlueJ does a nice method of presenting novice programmers with a decent class diagram. This is the IDE used at Kansas State University's introductory CIS class, in combination with a book written by an excellent professor. It emphasises the "MVC" architecture made popular in part by SmallTalk. Of course our course is rough on true novices who haven't had a high enough dosage of procedural programming to take the step forward to OOP, which is why they're starting to push a class below that level. I doubt it will ever be required, simply because as it stands there's just not enough semesters in a 4 year stay.
Personally I'm a poor programmer, for question you asked. I tend not to use flowcharts because I find it easier to express what I would write down in code anyways. If I use any conceptual model its typically just a class diagram for large projects, or maybe a memory map for smaller architectures. Rational Rose seems to be about the only real standard out there for conceptual stuff, unless you count hand waving Design Patterns.
But I feel sorry for any intiate who takes on such advanced topics like "programs are made of..." because not all programs can be seen as a knowledge base, or a system of sending messages. I would focus more on the math behind the scenes, because thats where things are heading. Things like assertions and domains are finally being promoted in Software Engineering and it takes a solid foundation to appreciate and understand it. Computers operate on a mathematical level. The smallest component of a program is an instruction. If you want to model that using parse trees thats an interesting approach but mostly useless. Reguardless of the content, for an entry level class the best thing you can do to get more of the class to understand things is lots of bite sized homework. Its a pain on the graders and the students might complain, but doing things several times using similar solutions helps you generalize concepts better.
-
Re:Half the cost?
BlueJ is also a pretty good introductory tool for Java and OO programming. Written in Java too, so it'll run everywhere Java does.
-
Another Good Java Tool
Maybe not Extreme but I find it useful
BlueJ -
BlueJI've been using BlueJ from Monash University. As it's written in Java, it can run on multiple platforms.
I'm not sure how big a project can be created with it, but then I only ever get time for small amounts of code (:-(
My 12-year old son feels much more at home learning with this type of environment, he can't appreciate why old-timers like myself work with command lines and vi! IDEs turn education into a kind of computer game.