PDA

View Full Version : Alice 3 and Computer Programming Literacy


ttkrakus
06-05-2009, 01:08 AM
I recently downloaded the 3.0 Beta version of Alice and, although the new interface is welcome (modulo all the bugs), I am very concerned about the appropriateness of this version for introducing non-CS majors to computer programming. I know Alice is targeted to CS majors, but until version 2.2 I have been able to teach programming to non-CS majors without making any references to Java or any other programming language.

Never mind all the features in 2.2 currently not available in 3.0 (poses, billboards, camera controls, quad view, etc), in this version, Java is everywhere! So much so that, for me, it gets in the way. Again, I know that Alice is supposed to help CS students to transition to Java, but until this version it was not that obvious...and I liked that.

On the other hand, I know Sun is backing the Alice project now, but why stop at Java? I wish I could have the interface of version of 2.2 and the ability of "selecting" or "configuring" which OOP language you want Alice to help you transition to. If you think about it, most structured and OOP languages share the same set of core control structures: so whether is "for i in range(5):" (Python) or "for(i=0;i<5;i++)" (C/C++/C#/Java/...), they repeat their loop bodies 5 times. It would be great if Alice had a module to "add" a new programming language and, in it, map each one of the Alice tiles to the corresponding statements in this new language.

I appreciate the new interface in Alice in 3.0, but if you could just add the EA models (plus a couple more controls for manipulating objects) to version 2.2 , call it 2.6, it would be an excellent version to introduce anyone to computer programming.

Any thoughts, advise?
Thanks

DrJim
06-06-2009, 12:53 PM
I share your concern about the complexity of Alice 3.0. I know I sat in a semester Alice 2 course for non-CS majors at a local community community college a few years ago, and even that was a strain for the majority of the class. Based on the limited time I've been working with Alice 3.0 (especially as it looks like, in the near term, one will have to have NetBeans for a really useful configuration) - trying to use that combination would have depleted the class size to zero within the first week.

On the other hand, as Gabe as said in another post on the forum - some choices had to be made - and 2.x will be supported for some time to come.

My understanding (and I think there are much older posts by the CMU team on this) is that the code for 2.x was such a mix of legacy code in Java and Python that the decision was made to start 3.0 from basically a clean slate - thus a 2.6 would be unlikely. It would really be nice :) if, after 3.0 is reasonably stable, that they could use that code as a basis for a reduced capability but less complex Alice 3-Lite. However, I'm sure the team has plenty on their plate right now to even consider that.

Dennis Cosgrove
06-11-2009, 04:22 PM
i recently made a post on the current complexity of Alice3beta (http://www.alice.org/community/showpost.php?p=10563&postcount=14) which will hopefully address some of your concerns.

as far as other language support:

We have tried to not paint ourselves into a corner on the programming language the community wants to transition too. When you are dragging and dropping in Alice3 you are dragging and dropping an abstract syntax tree. Now, as you might imagine, the Alice AST happens to look a great deal like the Java AST. However, it would be relatively easy to take that AST and convert it into Jython code, for example. As a bonus, Jython has immediate access to all libraries written in Java so there would be no road blocks there. C# obviously has a lot in common w/ Java so converting the code wouldn't be a problem there. Getting the library to work would obviously require a bridge but it is not like we'd be the first system to require a C# to Java bridge.

In the dream category you will find the development of a Pascal2 of sorts... a new programming language optimized for learning computer science. There are some rough plans on this front but they are all deeply buried beneath undo on the todo list. Still, it is nice to dream.

For now, we are simply trying to focus on getting one path up to snuff and that path is to Java.

I recently downloaded the 3.0 Beta version of Alice and, although the new interface is welcome (modulo all the bugs), I am very concerned about the appropriateness of this version for introducing non-CS majors to computer programming. I know Alice is targeted to CS majors, but until version 2.2 I have been able to teach programming to non-CS majors without making any references to Java or any other programming language.

Never mind all the features in 2.2 currently not available in 3.0 (poses, billboards, camera controls, quad view, etc), in this version, Java is everywhere! So much so that, for me, it gets in the way. Again, I know that Alice is supposed to help CS students to transition to Java, but until this version it was not that obvious...and I liked that.

On the other hand, I know Sun is backing the Alice project now, but why stop at Java? I wish I could have the interface of version of 2.2 and the ability of "selecting" or "configuring" which OOP language you want Alice to help you transition to. If you think about it, most structured and OOP languages share the same set of core control structures: so whether is "for i in range(5):" (Python) or "for(i=0;i<5;i++)" (C/C++/C#/Java/...), they repeat their loop bodies 5 times. It would be great if Alice had a module to "add" a new programming language and, in it, map each one of the Alice tiles to the corresponding statements in this new language.

I appreciate the new interface in Alice in 3.0, but if you could just add the EA models (plus a couple more controls for manipulating objects) to version 2.2 , call it 2.6, it would be an excellent version to introduce anyone to computer programming.

Any thoughts, advise?
Thanks

ttkrakus
06-11-2009, 11:18 PM
We have tried to not paint ourselves into a corner on the programming language the community wants to transition too.[...] we are simply trying to focus on getting one path up to snuff and that path is to Java.

(Sigh)


When you are dragging and dropping in Alice3 you are dragging and dropping an abstract syntax tree. [...], it would be relatively easy to take that AST and convert it into Jython code

O-kay (I guess that is why is it called an *Abstract* Syntax Tree).
The point here is whether this is going to be a feature that we can customize, or whether we have to make a port of Alice to a particular target (non-Java) language. My guess is that, with the "unique collaboration with Sun," we are going to end-up making ports.


In the dream category you will find the development of a Pascal2 of sorts...

It is interesting that this comments comes from someone trying to build such a *dream* language. Granted, it is a graphical language, but a language nonetheless.
The reference to Pascal was originated only from the use of "Procedures" in Alice for functions/methods that do not return a value.

----side note---
Just because a language is popular, like Java, it does not make it the best.
For some time now, people equate the "power" of a language with the collection of libraries and APIs offered with it; an unfortunate mistake.
In Computer Science, we all know that all the syntactical decorations used in C-like languages, like Java, (braces, semi-colons at the end of statements, parenthesis for argument lists, etc, etc) are just there to make parsing easier; they add NOTHING to the language: they do not make it any more or less powerful, but they do get in the way for people that are just learning programming (one of the main justifications for creating Alice)

All the dismissive remarks regarding languages like Pascal are lamentable given they address the problems in the same complexity class as C-like languages, with a cleaner and simpler syntax...then again, no fancy libraries or APIs, or the right corporate support.
----------------

Please, I am not trying to knock down the Alice effort....I LOVE Alice, and I know there is a excellent group of people behind it.

I think the source of my frustration with Alice 3.0 is that there has been such much hype about 3.0 (with the EA collaboration, new interface, and features), so much speculation about what will and will not be in 3.0, and so much hope and time invested in previous versions that we are now in June and most of us were planning to use Alice 3.0 in the Fall to show the world how wonderful this tool is. But, here we are with this Beta release and I am in panic mode because of how different it is, and how inappropriate it now seems for my audience. Everyday I spend a considerable amount of time with 3.0 with the hope that I can master it to teach it, also creating material for lectures and labs. However, I have the sense that this is going to be a losing battle and I am going to end up using 2.2 again. But, even if I stay with 2.2 for the fall, I do not know how much longer I can hold on to that version before 3.0 takes over completely.

Maybe the problem is that I am barking at the wrong tree, and I should be tracking the development of "Looking Glass" instead of Alice3.0 (side note: I though 'LG' referred to the 3D Java desktop Sun was working on a few years ago and that is why I did not pay attention to it).

So, forgive me if my comments are inappropriate. I really want Alice to be the tool we are all hoping for and I am always rooting for you guys.

DrJim
06-12-2009, 02:14 PM
Just because a language is popular, like Java, it does not make it the best.
For some time now, people equate the "power" of a language with the collection of libraries and APIs offered with it; an unfortunate mistake.

Sorry, but based on nearly forty years of having to manage software projects (including having to live through Algol, APL and Lisp), I really don't think that's a mistake.

What counts in the real world is if a language will do the job - repeatedly, consistantly and reliably - not whether is is currently the fad in the university CS community.

C/C++ etc. are popular not because of any great syntax advantages - in fact I don't ever recall hearing that claim. The advantage is that from the first ATT and Berkeley versions of Unix and C through the present day - if you want reliability, execution efficiency, a large experienced programmer base and a wide range of application packages to work with - it is really the only choice.

Java may actually have a chance to catch up, though I have my doubts about the virtual machine concept. But I note that even the Jogl package is "all native Java except for approximately 100 lines of C++ code."

Please note these comments have nothing to do with the Alice 3 effort. I agree the team is doing a great job.

ttkrakus
06-16-2009, 03:40 PM
I think I want to get back to the topic of Alice since now we are starting to confuse terms and ideas (for instance, makes no sense to talk about *reliability* regarding languages...software, on the other hand, can be measured for reliability... reliability is a property of software built with *implementations* of a language...it is not even provable --remember 'partial-correctness'...This is a well-known issue in CS)

The point is that Alice 3.0 will be a tool useful for migrating (from, hopefully, nothing) to Java and no other language (modulo 'porting' --in which case it cannot be called Alice, I believe ...licensing issues). That is fine.

From the engineering point of view, your point is well-taken:
if you want reliability, execution efficiency, a large experienced programmer base and a wide range of application packages to work with - it is really the only choice.

By the way, I think there was a misunderstanding about my point on the popularity of C/C++...it is definitely not because of the syntax...
It is fair to point out that there are languages syntactically worse than any in the C-family tree (although most of them are not as general-purpose)

Going back to the point of Alice and teaching, I am still concerned about the complexity of 3.0. By the way, I will not be using 3.0 for the Fall. I will, however, be working on my own with 3.0.