Friday, December 31, 2010

Can you really be effective at both teaching and research?


Read this. This hits home for me. Its a question I struggle with each semester. I am a firm believer that you need to continue research to be an effective teacher in higher ed. But, I'm struggling to figure out how to maintain the balance between the two. Here's the link... Exponential Book 

Thursday, December 16, 2010

App Inventor for Android for CS1?

This might make for a great tool for teaching introductory Computer Science. Check out App Inventor for Android. I took a quick look at the tools, and they seem quite nice. I think they took a lot of good ideas from the Lego MINDSTORM platform, which is not a bad thing. The MINDSTORM has a great suite of tools for teaching robotics at many levels, reaching kids in their early elementary school years through students in grade 12 and beyond. One must admit that it is quite a remarkable feat to have a single pedagogic tool that can be used to teach basic concepts in computer science and engineering to both a 9 year old and a 19 year old in college!

Anyway, back to the wonderful Android platform -- which is the current hot item in the hands of high school and college students all around. We, as computer science educators, are struggling with teaching introductory concepts in computational thinking. It is good to have some modern, pertinent paths to use as pedagogic tools to show them that computer science is so much more than just writing boring programs at a command line prompt! You need to first open their mind to what CS really is all about. Once they get it, then they start to understand why they need to go through a rigorous path to get to the other end.

On a final, but related note, I had a student in my office the other day asking many questions about why Calculus III was a required part of the BS in Computer Science and Engineering. How do you convince a student the value of embracing all levels of calculus at this early stage in their studies? (This student is currently a sophomore.) I attempted to convince him that, to a large extent, calculus is merely a study of algorithms that deal with numbers. After all, whether you are in Calc I studying derivatives and integrals, studying complex numbers (which came in useful for a couple of my teams that did fractal projects), or dealing with transformations (which come in mighty handy for graphics), etc.. you're dealing with functions and a series of steps you need to follow to achieve a result based on some input. And, likewise, programs on a computer are nothing more than functions! They map a set of input to some output! The eye of the new student opens up quite a bit once they realize that they are simply developing functions. The input, in the simplest sense, is purely numeric. Yeah, we transform it to something we understand (e.g. ASCII), but the input is simply binary numbers. The output is, again, numeric. It all relates! So, to the student(s) complaining about too many courses that don't seem to apply to computer science, open your mind, think deeper, and have patience. It will all come together soon!

As computer science educators, we need to work harder in our CS1 and CS2 courses to developing interesting and relevant problems that allow them to expand their understanding of applied computer science to a wide range of fields. I think that Sedgewick's Introduction to Programming in Java book does a fantastic job with this. Of course, doing this in a simple way that allows us to stay away from nonsensical scaffolding that detracts from learning (e.g. public static void main(String args[]) { System.out.println("Hello, World"); } includes an AWFUL lot of scaffolding for a newbie) is an ever-continuing challenge.

Friday, December 10, 2010

Apache and the future of Java

As of yesterday, Apache walked out of its position it has long held in the Executive Committee in the Java Community Process. This is pretty big news in the Java community, and represents a lot of growing tension and discontent continuing to rise ever since Oracle bought Sun Microsystems. So, what's the deal?

There was a recent vote on the approval of "JSR #336 - Java SE 7 Release Contents". (They also voted on Java SE 8, believe it or not.) The Executive Committee for JCP consists of Google, Apache, HP, IBM, RedHat, Eclipse, and some others. Well, Google and Apache voted NO. The rest voted YES. Both of those NO votes were not over anything technical. Apparently, everyone is pleased with the technology improvements set to be released with Java 7. This discontent is purely because of the license terms that Oracle has in place. Without surprise, the license is not quite open source friendly, and most interpret the terms as implying that some hefty fees might lie ahead for those that want to port Java technology over to their own platforms. I think the thing that is much more telling of Oracle's mentality is that Oracle fully intends to move forward with the release of Java SE 7, even if the entire JCP does not approve of it. (See Google's comments from the JCP meeting of 10/4/2010, found on the JCP web site.) So, what really is the point of the Java Community Process? Seriously?

This is just the way it is now. Oracle has done absolutely nothing wrong. Java is now Oracle's baby. It is their intellectual property.

You are going to see a strong divide rise up in the Java world this coming year. It will divide those that are pro open-source, and those that simply don't care to consider what their software development world would be like if open source did not pave the way to better languages and development platforms. I don't think that anyone is anti-open-source. They just are not thinking.

The vote that really surprised me was the vote from the Eclipse Foundation -- they voted YES. Their entire existence is because of the open source community. They, as with most of the Executive Committee members, voiced concern with Oracle's licensing terms with the Technology Compatibility Kit (TCK), but felt that more would be lost in the development community if it was not approved. (Apparently, this approval is behind schedule, thanks in part to this dispute.)

My feeling is that this may spell a drawn out path of a general move away from Java. However, I doubt it'll be anything significant for a long time. Let's face it -- Java is huge in industry. It is not going to disappear anytime soon. However, I do not think it will dominate as much as it has. You will see a rise of some other open languages that are just as (potentially) capable as Java. Other potential languages will follow the similar open source path -- first, we'll continue to see a slow departure away from Java in the colleges (which is happening already for a variety of reasons) and to better choices for academic purposes. Those students will bring their new skills in [insert-new-potential-language-here] into the workforce, and we'll see a continuing slow decline of Java in industry.

I wonder if Oracle will learn any lessons that Microsoft had to go through in the late 90's - early 2000's? Does anyone remember how often MS had to get their hand slapped for some of their commercial practices?

Just my opinion... I can take Oracle's side in this as well. After all, there is something to be said for having 100% control over your own intellectual property.

See http://www.jcp.org for more information.



Thursday, December 02, 2010

America's Got Talent... but not in CS?

This is a great start, but I'm extremely concerned about our short- and long-term ability to fill ever-increasing quantities of available positions in STEM jobs. Developing a new AP course in CS Principles is good. This is a small step forward -- a small step out of miles of work needed in math and science education in this country at all levels, from K - 12 and beyond.