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.

Wednesday, November 17, 2010

Analyzing Big Data at Twitter (Web 2.0 Expo NYC Sep 2010)

Analyzing Big Data at Twitter (Web 2.0 Expo NYC Sep 2010)

This is a pretty good, yet simple presentation from a researcher at Twitter. I encourage database, and particularly data mining students to take a few minutes to go through the slides and get an appreciation of the amount of data that we're dealing with. For the most part, as Kevin indicates, we have some good tools that can answer some interesting questions about this enormous data repository. The problem often comes down to asking the right questions about our data.

Cool stuff. Thanks, Kevin.


Tuesday, November 02, 2010

4 Steps To Taming The Job Search Beast

If you are a student at the final stages of your academic career, you are probably already in the midst of conducting your own job search (or, you have decided that not having a job is much better, which represents a growing reason why many students choose graduate school. This is particularly true in this economy. Despite the economy, you will want other reasons that will carry you through the hard work ahead of you. Real-world avoidance is not a good one!) Looking for a job can be a very grueling, emotional process for many students, and even more difficult for those that were employed and lost their job. This is a good article that gives some decent advice that will help you manage and conquer this "beast" ahead of you. I think you'll find it helpful regardless of the field that you are in.

Article: 4 Steps To Taming The Job Search