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.

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

Sunday, September 12, 2010

Eclipse vs. NetBeans

I spent several hours over the day today and last night putting together a Java program to process some mass spectrometry data into a different format. (More on that project another time.) Being that I don't get a lot of opportunities to work with the Swing framework lately, I decided to incorporate some GUI elements into my little program, just to keep my skills fresh. The big change for me for this particular GUI project was doing my GUI development with Eclipse using Visual Editor (http://www.eclipse.org/vep/). Before this year, much of my GUI development in Java was with NetBeans.

Before I offer my opinion on this matter, let me say right up front that, as soon as I started using Eclipse way back in 2004, I became a huge fan, right from the 2.x years. This lasted up until early 2008 when I made a switch to NetBeans, though initially that was only for Java development. For my C/C++ development, I continued to work with Eclipse. The CDT framework worked quite well for me, and always has. I used CVS extensively with both for revision management. I've tried UML plugins for both development environments, as I wanted to incorporate some introductory and advanced UML tools for my system design and software engineering classes. I have found myself once again switching back to Eclipse only because the new department that I'm teaching in is already deeply invested in Eclipse for their Java classes (though, that is likely changing in the near future. More another time.)

I won't even bother offering up a detailed comparison between the built-in features of each, as I simply do not have the time right now. (Perhaps during my winter break?). For Java development, there was a day back in NetBeans 5.x and early 6.x versions where Eclipse was a strong contender, and perhaps exceeded NetBeans in many ways. However, it is my opinion (and my opinion only, so send your flames elsewhere... or how did we used to say??? Send them to /dev/null :-) based on extensive use of both for pedagogic, research, and industry application development, that NetBeans is now, by far, a winner in the IDE development environment for all types of Java development. The Eclipse Visual Editor has a very long way to go in order to reach the sheer functionality of the development environment of NetBeans. The raw speed that I was able to put a small GUI application together with NetBeans showed me just how intuitive the interface was, and that was with already knowing the Visual Editor framework in Eclipse. Having been such a huge fan of Eclipse many years ago, I hate saying these things! But, I must express how pleasurable it was to use the NetBeans Swing GUI builder, particularly after becoming accustomed to the non-intuitive flow in Eclipse VE. NetBeans is easy, intuitive, and has much better integration with the overall IDE. It's code generation was, as the kids say, sweet, dude! For what I did, it was flawless. It worked great for managing properties of components, and was awesome for event handling, generation of callbacks, etc.

Let's not even get started with the UML tools on both. This argument is very subjective, and of course it depends on the plugins that you decide on with Eclipse. However, the NetBeans UML framework is amazing, particularly for Java development.(NOTE -- I'm aware that as of right now, NetBeans 6.8+ does not support the UML framework! I'm hopeful that it'll be updated soon. I wonder if this has anything to do with Oracle's takeover of Java? Grrrr...)

I had no problems with CVS on either platform. However, I'm changing to Subversion (again, due to departmental use). I've only experienced SVN with Eclipse so far, and I'm less than impressed with the interface.

I'm not ready to throw in the towel in the C/C++ development with Eclipse, but I've used both, and I can see that neither one is shouting to me as a clear winner anymore.

The bottom line -- for me, NetBeans is a clear winner for the majority of Java development projects. (I haven't used anything later than 6.7. I understand that 6.9 currently (as of 09/2010) does not have UML available, but that it is being worked on.) I can not think of any Java-based development project where I would opt for Eclipse anymore. I'm so sorry Eclipse! You got me through all of my PhD research with your C/C++ CDT plugin! Why couldn't you keep up with your Java capabilities? I'll still keep on using it for some of my development, only because I fail to believe that the Eclipse community will sit by and let NetBeans dominate. And, I'm sure there will be those that will wholeheartedly disagree with me.

Friday, September 10, 2010

Crisis in Computing

There is a real opportunity here for those of us in CS to ramp up the research opportunities in high-performance computing. The author expresses deep concern about the U.S. losing its prominence in HPC. I can't say that I disagree at all. His one quote essentially summarizes the U.S. role in the computing sciences over the past 10-15 years. He states
So, you’d think we’d stay on top of our game. Instead, we’re getting jumped by moves we invented.
This has been happening for many years, in a large number of industries. And... it's nobody fault but ours. The private, public, and academic sectors collectively and separately have lost a tremendous amount of momentum in computer science research. It is going to take substantial funding and innovative minds willing to sacrifice big money opportunities for a while in order to focus on these enormous opportunities, and help us catch up. You can't rely on the public sector, because they only care about making sure they maximize their quarterly profits. They probably will not be willing to sacrifice the type of funding required here. The majority of the big players in the private sector, despite being a valuable source of novel ideas needed here, are too limited in their funding opportunities, and when substantial funding does arrive, usually it is in the form of a buyout. That leaves the academic sector, which has been hit rather hard by the economic downturn. Funding opportunities will either come from large corporate interests (see above), or the government. Though the government has been a little more generous than it was in the previous administration, it still leaves us with need. Regardless, we don't have a choice. We need to start thinking outside of the box and jump on these opportunities and be willing to make some substantial sacrifices in the immediate future. It is the only way we as a country can possibly recover and become a formidable player in computer science once again.

On a related note... so many colleagues love to bash Microsoft. Yes, they have put out some shoddy software in their past. Name a software company that hasn't, and had the scope and user base that MS had. More importantly, who represents one of the biggest players in contributing enormous amounts of money toward computer science and philanthropic interests? At a time when we see so many greedy CEOs hoarding hundreds of millions of dollars to build their own interests, it is wonderful to see what the Gates Foundation has and continues to do. We need more of those that "have" that are willing to shell out their own hard earned money for many great causes.




Wednesday, July 28, 2010

In Vivo, In Vitro, In Silico | blog@CACM | Communications of the ACM

Daniel Reed speaks of the continuing challenges in understanding even the simplest of organisms. He paints a simple, but great picture to help understand some of the enormous challenges and opportunities ahead for those of us in bioinformatics, particularly for those with interests in high performance computing. Daniel said it best -- indeed, these are exciting times!

Saturday, July 10, 2010

Prince: "The Internet is dead"

Ummm, so Prince says that he Internet is dead. Seriously, Prince, what are you thinking?

My personal favorite quote:
"All these computers and digital gadgets are no good. They just fill your head with numbers and that can't be good for you."
I need to adjust my course material for this fall ASAP! I wonder what new field I should go into?


Friday, July 09, 2010

Report on The Market For Computing Careers

The Market For Computing Careers


Though the overall job market in this country continues to experience rough times, the prospect for those students pursuing computing careers seems to continue to remain strong. In fact, some data here suggests that the need is growing.

Friday, June 25, 2010

Data mining is a "hot job"

10 Hottest Careers in America - CBS MoneyWatch.com

This is pretty cool -- Data mining is rated the third hottest job in America, as defined by UCSD. A "hot job" is a job with large demand and growth potential.

I'm also pleased to see embedded engineering on this list, coming in at #4. I've always told my students that there are far more opportunities for software development if you can get your vision of software outside of the desktop and laptop boxes.

Monday, June 07, 2010

The Fed wants to curb textbook costs

New Rule to Curb Textbook Costs Irks Some Professors - Faculty - The Chronicle of Higher Education

The article is a little irritating, but probably not for the reasons you might think. Did you know that our U.S. federal government passed an updated version of the infamous Higher Education Act of 1965? It is known as [start drum roll, pause for 10 seconds, use vocal processor to lower voice and provide digital delay and large, cavernous reverb, and speaketh loudly]
"The Higher Education Opportunity Act - 2008 (Public Law 110-315)"
[end drum roll, supply optional crash cymbal]. You may refer to this along with a wide range of information on the government's involvement in the entire education process at the U.S. Dept of Education.

OK, if you know me, then you probably already know that I am extremely cynical when it comes to politics and government, particularly with its involvement in education in our country. (We'll leave the obvious jokes that can be made by observing who was president when this passed.) But, take a look at the act -- here is a text version of it: http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=110_cong_public_laws&docid=f:publ315.110. And remember, this is only a series of amendments to the original 1965 act.

You understood it all, right? Granted, it's not too hard to sift through and infer that a large majority of the act does not apply directly to professors as much as it does to, say, the financial aid office. And, some of it definitely has some merit. After all, the growth of the cost of higher education in this country is completely out of line with the growth of the cost of living for the average family. Therefore, I do believe that the act is attempting to put forth some much needed help and protections on the part of students. That is important. I am not a fan of the modern "college for everyone" mentality. College is most certainly not for everyone. However, I am a fan of making sure that those students that SHOULD be in college can do so without owing their lives in the process. Also, we need good, honest material to help students choose the colleges that are most suitable for them and their interests and goals. This act attempts to address some of these shortcomings. (Notice, I'm not saying the act does a good job at doing so!)

Back to the original topic. What part of the act applies to us professors? Forget trying to sift through all of the material. Though, here is the basis directly from the act that the original article posted above refers to:
‘‘SEC. 133. TEXTBOOK INFORMATION

‘‘(a) PURPOSE AND INTENT.—The purpose of this section is to
ensure that students have access to affordable course materials
by decreasing costs to students and enhancing transparency and
disclosure with respect to the selection, purchase, sale, and use
of course materials. It is the intent of this section to encourage
all of the involved parties, including faculty, students, administrators,
institutions of higher education, bookstores, distributors, and
publishers, to work together to identify ways to decrease the cost
of college textbooks and supplemental materials for students while
supporting the academic freedom of faculty members to select high
quality course materials for students.

Then, what follows are pages of definitions such as "bundle", "college textbook", "course schedule", and "publisher". Oh, and notice the wording above -- it is the intent to encourage the seven listed parties to work together. Isn't it good that we have such a good example from our government of just two parties working together? (I'm really trying to keep my cynicism at bay!!!) At least we have our academic freedom to select high quality course material. Phew!

I found a decent summary of the textbook requirement on the American Council of Education's web site:
Effective July 1, 2010, institutions will be required to disclose in their course schedules, “to the maximum extent practicable,” the International Standard Book Number (ISBN) of every required and recommended textbook and supplemental materials and retail price information. Lacking accurate information about the ISBN number at the time the course schedules are set, the institution is permitted to indicate that this information is “to be determined.” Publishers are required to provide faculty with information on price, copyright dates of the three previous editions, any substantial revisions between a new edition and prior iterations, whether the textbook is available in any other format and at what price and to supply textbooks in bundled and unbundled formats.
Refer to http://www.acenet.edu/e-newsletters/p2p/ACE_HEA_analysis_818.pdf for their entire document. It is an excellent summary of what everyone needs to know. Essentially, it is mostly putting a burden on us to keep our own act together and not procrastinate these choices until the last minute like so many of us do. If you are a looking to be a professor in this country, regardless of whether you are pursuing a position in a public or private institution, you should, minimally, be aware of this act, and be aware that our government is definitely getting more involved in higher education beyond K-12... for better or for worse... whether you like it or not.

Sunday, June 06, 2010

Albion College Eliminates Computer Science | blog@CACM | Communications of the ACM

Albion College Eliminates Computer Science | blog@CACM | Communications of the ACM

All colleges and universities have strengths and weaknesses. As many of our higher ed. institutions around the country continue to struggle with their own financial crises, some are being forced to eliminate programs that have low enrollments. Some are even saying goodbye to a few of their nontenured faculty related to these programs. Frankly, I do not think that every college should be teaching computer science. There are other degrees that are probably more relevant for smaller colleges, such as computer information science, information technology, etc. However, to use the reasoning that computer science is not "meaningful ... work" for the 21st century???? Are they serious? Come up with a better reason, Albion! I can not think many other fields that are more pertinent right now and in the future than computer science.

[UPDATE -- 7-Jun-2010] After thinking a little about this, here at Mansfield University, the administration has had to deal with the same decisions as Albion. For us, every single program had to suffer through a thorough evaluation this past year. We all had to justify our existence. Every department had an individual meeting with the provost and dean to discuss the financial crisis. However, for us at MU, it all came down to numbers, and they made no excuses about their reasoning. The budget was extremely short (by millions of dollars!) Their solution? Increase the average class size at the university. If your student-faculty ratio in your department was not above a certain threshold, or more directly, if your average student class size over all classes in your program was not above a specified minimum, then your program was flagged as a candidate for elimination, and you had to go through a thorough justification process. Right now, there are numerous programs up for elimination (none of which were in the computer information science dept.) You can imagine the outcry from students and faculty, though not as loud as I expected. These are indeed tough times for many colleges. If you are interviewing, it would behoove you to ask some very directed questions about the administration's view of the department you are applying for and the general support that the faculty believe they have of the dean, provost, etc. Ask if any classes or degrees have been discussed for elimination purposes, and why.

Albion should not be singled out and chastised for eliminating programs, only the poor reasoning they used to publicly justify their decision, at least with respect to computer science! 

Friday, May 14, 2010

Operation Reboot: IT Professionals Become Computer Science Teachers - US News and World Report

Operation Reboot: IT Professionals Become Computer Science Teachers - US News and World Report

This is an excellent means of getting better quality computer science education into high schools: combine the recently laid off, yet well qualified IT professional with a high school teacher that lacks proper IT training. The result: high school graduates that are (hopefully) better prepared for computer science right from their freshman year in college, and an employed IT worker. Perhaps these students will be able to take the AP exam in computer science? It's hard to say. Based on my experiences teaching introductory computer science, I am seeing far too many students that can not handle the CS-1 course out of high school. If the U.S. is going to regain a place as a dominant force in computer science, we need to push the limits and consider new approaches to increase the readiness of students entering college with interest in computer science. This is one way that can improve their chances of success, and hopefully help them understand what computer science entails.

OK, admittedly, my views are often idealistic and neglect the realism that often comes with teaching any topic, let alone computer science. As one IT professional in this article said,

..."it's now a very different lifestyle, .. School is different." Smith, who teaches in an inner-city Atlanta high school, agrees. "It's been a little rough," he says. "Many of these students bring different issues into the classroom from day to day. But I'm committed to doing this."

Ah, yes. The reality of teaching hits every professor, teacher, or instructor at some point early in their career. I've spoken with many colleagues about their early interest in becoming a professor. We expect that we will have students like us, of course! We will have students that want to learn! We are often self-labeled geeks that love learning all about the latest trends and research in our favorite fields in computer science. We thrive on the dynamic aspect of our field, and we hope, and often expect that we will be able to impart that excitement to our students! Some of us know we are "called" to impart knowledge and have a genuine gift and do it quite effectively and naturally. Even then, most consciously choose higher education over high school education because we want to work with students that choose to be in our class, not those that are forced for whatever reason, usually resulting in highly disengaged students exhibiting an effort that clearly indicates that they would rather be anywhere else but in your class! Of course, reality soon sets in, usually after the first class. The flood gate of excuses, stories and sheer laziness opens up! Sometimes, students have genuine, real issues and problems that affect their success. But, more often than not, the excuses are lame. (e.g.,  the sun was out today, forgot to set the alarm, cat stuck up in tree, car died, muffler fell off in the driveway, drunk, sports commitments, or worse yet... drunk sporting events, team practice, fishing club practice (huh???), concerts that needed to be attended, frat pledging, updating Facebook is more important, etc.) Regardless, these are realities, no matter what caliber college or university you might teach at someday. Some colleges are definitely worse than others. (When you interview, be sure to talk to several students. Try to gain some sense of the type of students you may be dealing with someday.)

Despite the realities, teaching computer science is still one of the best jobs I could ever hope to have. I view the sobering realities as challenges that drive me to ensure I maintain a high standard of expectations for classes, without exceptions, and I make damned sure that those expectations are clearly understood and conveyed the very first class. I also make sure they know what they should expect of me. Effort needs to be put forth from both sides. Only then does learning take place. Yeah, the realities that come with today's students drive me a little nuts at times.

Perhaps if we improve our high school education, and we release the expectation in this country that every person must achieve a college education for success, then perhaps we'll slowly get back to having the majority of students being... students.

Tuesday, May 11, 2010

Scientists try to bring order to a glut of drug data - Apr. 29, 2010

Scientists try to bring order to a glut of drug data - Apr. 29, 2010

Anyone that has done any work in bioinformatics will appreciate this article. Biological data is continuing to be added to hundreds (if not thousands) of databases world wide. Unfortunately, with the exception of only a few standards that have survived over the years, there is very little compatibility among the various repositories. Researchers (or more often, their students) spend an enormous amount of time acquiring the data they need to perform their analyses; they often need to write various scripts to get the data from various repositories in the format they need for their own work. Since there is no standard that is adhered to, you occasionally get the owners of these repositories randomly changing their own formatting or constraints to suit their own needs. This is valuable time lost that could be spent doing actual research.


Wednesday, May 05, 2010

N.Y. bomb plot highlights limitations of data mining - Computerworld

N.Y. bomb plot highlights limitations of data mining - Computerworld

The field of data mining is a huge interest of mine. Like most researchers in computational methods, we always keep our ears and eyes open for opportunities to apply these algorithms. Let us consider the use of data mining to aid in identifying terrorists. I am a little surprised that the government bought into data mining as a key solution for this task. (OK, let's be honest -- I'm really not surprised, but that is for reasons unrelated to this article.) For the most part, I agree with what Bruce Schneier said. You need a well defined signal, profile, or pattern in order to extract the item of interest from the data.

The key to successful data mining is, of course, successful learning. The question becomes, how can a computer learn patterns of interest from exorbitant amounts of data, despite the obvious lack of significant examples that enable these algorithms to learn how to distinguish terrorist activity from the overabundant supply of non-terrorist activity? There are (thankfully) very few examples presented each year. The most these algorithms can do is try to learn a model for typical behavior of the average citizen, and flag those that are exhibiting some pattern of behavior that does not fit the model. Another common approach is to provide fictitious examples that "domain experts" think would fit terrorist activity. NSA is likely providing examples of what they believe represent patterns that led to known activity in the past. Whatever the method, the aim of a terrorist is to follow the model, right? They are only successful if they remain completely inconspicuous. Thus, the problem really does represent the equivalent of searching for a "needle in a haystack" at best. You will undoubtly deal with a high rate of false positives, which has an enormous high cost. Or, you adjust your algorithm to turn the sensitivity down. But, then you deal with the potential high cost of a false negative, such as what happened this past week. Where is the "sweet" spot here? (That is the job of risk management!) This is a very difficult problem, indeed.

I don't think data mining should be disregarded as a potentially useful tool in this field. If nothing else, this represents an area where researchers still have much to learn, so to speak.

On a related note, I'm intrigued as to what these nearly 200 data mining programs are that the fed has invested in. As we fall into more of a digital world all around us, data will continue to pile up higher and deeper. There is certainly no dearth of opportunities for data mining! Despite this, I think I'll stick with bioinformatics for the time. One single strand of DNA provides plenty of interesting potential for various algorithms. Consider the opportunities of sifting for informative blocks in DNA over hundreds and thousands of DNA sequences from thousands of species... sounds like a needle in a haystack again!

Wednesday, April 21, 2010

National Trends in Grade Inflation

This is somewhat definitely related to my previous post:

National Trends in Grade Inflation, American Colleges and Universities

This is an excellent, honest presentation of very disturbing data related to the value of our degrees at American Colleges and Universities.

The following quote has struck me at the moment:

"Students are paying more for a product every year, and increasingly they want and get the reward of a good grade for their purchase."

I see. So, students are increasingly expecting that if they pay exorbitant tuition rates (mostly at private institutions), then they should receive better grades. But, it's not just private institutions. They just seem to be showing slightly more egregious trends with inflated grades. (See the individual school data for Yale, Harvard, Duke, etc.) It seems that they are neglecting the most important variable in the middle -- what was learned by the student that resulted in the grade earned? Or, is that "earned" concept becoming more lost?

I find it extremely alarming that we have the very best private schools admitting that students today are graduating with an overall GPA that is nearly a full point higher than their predecessors graduating 45 years ago. Some of the better schools are admitting that overall average GPAs are now almost an astounding 3.5. (I can't believe how smart our students have become!) Those averages were around 3.0 when I graduated. Where do they expect to go from here? Do we need to bump the upper end to 5.0? NO! Are students actually that much smarter today than they were back then? Hardly! Is this an artifact of the increased pressure behind the "no child left behind" mentality carried into hiigher ed? Is this partly because colleges are continuing to become more business-minded and less academic-focused? Such mandates lead adminstrations to issue mandates to do whatever it takes to keep those students enrolled.  (We need that money, right?) Did anyone consider that perhaps it is not every high school graduate's path in life to go to college? How do we provide opportunities for the true future scholars and researchers to shine and stand out if more and more students are able to achieve a 4.0 GPA?

If students were so much smarter now, then at least in computer science, American universities would be placing substantially better in ACM international programming competitions. (I'm sure I can come up with more metrics of computer science program performance in higher ed.)

Read my previous post from earlier for more of my venting on this. We need to work hard and fast to put value back into our degrees. Only then will we continue to build our credentials back into our programs and increase worldwide interest in our institutions. Industry recruiters will respect our programs again, knowing that students with degrees are indeed worthy of hire. Then, you will see enrollments increase because colleges will once again become the place they used to be.

The direction of higher ed? Depressing.

Read: News: Who Really Failed? - Inside Higher Ed

This is a very disturbing article. Unfortunately, it reflects a growing trend in higher education - to make sure we pass as many students as we possibly can. At what sacrifice?

Let's examine this a bit. How did we get here? Here is my opinion. The majority of colleges and universities nationwide have experienced (and are still experiencing) substantial financial challenges. The administrators need to come up with solutions. Thus, mandates are issued.

We are instructed of the importance of keeping our enrollments up (or, as suggested around here, our student Full Time Equivalency (FTE) numbers).  Many campuses nationwide believe that the solution is to increase new student enrollment numbers.  But, what if your predicted new applications are expected to remain flat, or even decline? You need to lower the cutoff and accept more students. Thus, you have more students attending that are not ready to meet the standard in place for doing well in college.

We are also instructed to keep our already-enrolled students coming back next semester. When students earn a failing grade (i.e., they fail themselves, as defined by your grading standard that you publish in advance in your syllabus for the course), it does not bode well for their return next semester. So, ultimately, there is pressure created on faculty to pass more students. If you are not passing them, then situations similar to what is happening at Louisana State happen more frequently.


This reflects the state of many campuses across the country. We are told that we need to keep our numbers up. Therefore, we allow more students into the university, and are told that we need to keep these students here as long as possible. This creates pressure on faculty to work harder for students to pass. I have observed that the pressure can be extreme for some, and results in faculty "dumbing down" their material and their grading standards.


If you read through the entire article, it reflects a bit of the student view of higher ed, and reflects what I have found. In most cases, you are going to have students that are not happy. I remind myself that I am not here to make them happy -- I am here to teach! First, I teach them that they earned the failing grade. I did not give it to them. They were fully aware of what was required of them right from the very first class. (e.g., learning how to solve complex problems with a computer is hard work!) They chose not to do the work required of them. They chose not to see me during my office hours. They chose to party and drink more alcoholic beverages on weekends. There are rare, extenuating circumstances, of course. Sometimes, students wake up early enough to recover. They may do poorly, but they will still appreciate everything that they have learned through the process. Many get a serious wake-up call after the first exam and first few assignments. I can not tell you how often I have heard, "Oh, man... like, dude, like, you mean I gotta WORK? Like.... study? Gosh. Like, I never had to do that before." (You may need to insert a few more "likes" in that response. Each case varies.)

How do I respond? It depends on how I am feeling that day. Quite often, a simple "yes" suffices. Occasionally, I will try to muster up enough courage to dig into their brain (which can sometimes result in massive regret on my part) to figure out what their expectations where when they entered college.

I recall that when I was in college, I worked. I worked hard. At times, I worked very hard. This was certainly true of my Ph.D. Even as an undergrad (late 80's - early 90's), I remember times when many of us computer science majors would get together in study groups to work at solving more difficult problems. Some problems were directly related to topics discussed in class, some were problems from assignments given, and some were simply problems we were interested in understanding better. I do not understand why I fail to see that foresight and proactive nature in students today. Many would rather settle with quick satisfaction and escape reality through their PS3, their XBox 360, or other related avenue of avoidance and self-indulgence. The least I can do is direct them early on, even scare a few of them so that they start off with the right amount of respect for the material being taught.

Hopefully, fewer earn a failing grade.

How do I resist that temptation to adjust my material to allow all students to pass? As we are told, we must keep those enrollments up! I want to see students pass, but not by sacrificing my standards. That completely devalues all degrees here!

As an aside, but related note, if this trend has been in place for the past 10 years here in this country, it is no wonder that we have no U.S. schools placing well in the international programming competitions anymore. (Check out http://cm.baylor.edu/ICPCFinalResults2010 if you do not believe me.) What are international schools doing right that even our best schools here in the U.S. are missing? (Of course, this might get into grade school discussions.) As stated by one of the comments in the article, have we honestly carried the "no child left behind" mentality too far?

With that said, I do believe that if everyone is failing a class, then there is something wrong with what I am doing. Fortunately, I have yet to experience that. I have had to be flexible with the material I cover in some of my advanced classes. Sometimes, difficult material needs to be covered a little more thoroughly than I expect. Though even then, I usually find out that students just procrastinate and choose not to start on assignments early. So, I have slowed down at times, which has often prevented me from getting through the material I wanted to cover. Hmmm.... I do not remember my professors during my undergrad years being that way. I remember many of them cruising through the material. If we didn't get it when it was taught, it was up to us to get the help we needed to catch up.

OK, those are enough sobering thoughts for now.

Wednesday, April 07, 2010

TIOBE Programming Community Index

I've conversed with numerous colleagues and read papers about how to introduce programming and computer science to new CS students. We all tend to largely agree on pedagogic techniques and fundamental principles that should be conveyed, particularly in CS-1 courses. But there continues to be differing views on what language should be used. How do we choose what is best for our students? Again, very little agreement here. Some think that we should teach using languages that are the most widely used in industry. Others want to choose languages that are at the exact opposite end of the spectrum. If you go to the major job search websites, Java is still the clear winner here. Are there other measures?

Introducing the TIOBE Programming Community Index. This group runs a monthly analysis of programming language popularity. (More on this metric shortly.) It seems that as of April 2010, the C programming language is "back at number 1 position!" This takes over Java's domination, moving it to #2. Moreover, regarding Java, they state,

"So the main reason for C's number 1 position is not C's uprise, but the decline of its competitor Java. Java has a long-term downward trend. It is losing ground to other languages running on the JVM. An example of such a language is JavaFX script that is now approaching the top 20."

Before throwing out your Java books and hopping back on the C bandwagon of the 1980s, let us examine how they create this list. See the index definition. I'll summarize the most essential metric here. They go to all of the popular search engines, enter the query +" programming", and tally the number of responses. Minor adjustments are made to normalize numbers and such, but that pretty much summarizes their statistic. 

Let's experiment using Google:
  • Java -  about 2,700,000 hits
  • C - about 2,420,000 hits
  • C++ - about 1,530,000 hits
  • PHP - about 1,060,000 hits
  • C# - about 700,000 hits
  • Python - about 559,000 hits
  • Ruby - about 205,000 hits
Let's look at some of the lesser known languages out there, some of which have been around for a LONG time (and some of which should be more widely considered, at least in academia.)
  • Scheme - about 58,300 hits
  • Scala - about 22,800 hits
  • Smalltalk - about 16,300 hits
  • Go - about 59,600 hits (presented in honor of Google. After all, I used their search engine. :-)
I'm always pleased when I can easily replicate published results. But, what do these numbers mean? I'm not really sure. It's essentially seems like a popularity contest. Do they directly relate to industry? How do they relate to what is taught in academia? And, what type of correlations are there with respect to the time that the language has been available? That would be interesting to know. I am inclined to believe that there are probably some loose correlations to be found among these and many other variables still hidden. Those other variables could be easily characterized by sifting through those millions of web page hits. This looks like a neat job for.... Data Mining!!! :-) Anyway, these numbers should really be observed with a cautious eye, and not read into too deeply. The paper states that they try to catch some false positives, but a 10 second glance through C programming hits shows numerous C++ hits as well, and vice versa. It would be rare in this day to present a C only web page without mention of C++, and vice versa. Regardless, the trends are interesting to observe. 

Meanwhile, let the debate about the language to use for the CS-1 and Data Structures courses continue on. I'm sure it'll make for interesting conversations for years to come. As soon as we figure it out, it'll probably need to be re-evaluated again. :-)

Finally... increasing enrollments of CS majors!

Since the "Y2K" bubble burst starting around 2001, there has been a dramatic decline of students at colleges and universities nationwide declaring CS as their major. Well, apparently (and thankfully), that trend has changed. I'm sure part of the change is simply because there are now more jobs available than after the bubble burst. Some big names in industry are spending more time working with the big CS schools to assist in encouraging students to enroll in CS.

We also are working hard to to adapt our initial presentation of our programs to be relevant for today's student entering college. A student entering college today has a very different perception of what computer science entails than a student of 10-15 years ago. This has been a struggle for educators! Too many students come in wanting to be game developers! Some of us are now trying to use more of a media and graphical approach to learning foundational concepts early on. (For example, see the Alice framework.) This seems to lock in students interest earlier.

We are learning to be flexible with students coming in that are better equipped from high school programs. There are more students coming in with experience in programming than ever before. This should be no surprise. I hear of many high schools now offering multiple elective courses in computer programming, which I think is excellent. But, this makes it a little more difficult to try and level the expected prerequisites during those early courses. Providing alternative paths to allow students to "test out" of early courses in the major helps them not get bored early.

Looking at the data from the study tells another sobering story -- there is a significant decrease in PhD graduates in Computer Science. However, this should not be much of a surprise. PhDs graduating now would have most likely received their BS around 3-4 years ago, which means they likely started their undergrad work a couple years after the substantial downturn in CS majors. This should be of great concern for institutions and companies needing to hire CS PhDs over the next couple of years (though it bodes well for those that already have our doctorate that might be looking for a new position.) I think this is a temporary downturn, perhaps lasting for another 2-3 years or so. We will need a little more time for the increase in undergrads we are seeing now to carry over to an observed increase in graduate students, especially at the PhD level.  At least, that is my hope. I have not spent any time studying graduate student enrollments, so I have nothing to go by right now.

Overall, this is really good news for those of us that have been fretting about decreased enrollments in CS for many years now. We need to keep working hard and being creative to keep these trends going in the right direction. (Mobile application development.... now there is an obvious place where some interesting work can be done at the undergrad level that students would find fascinating. Between iPhone and Android-based phones, doesn't that represent the majority of CS students today? It is good to get them developing on non-desktop platforms for a change. And, how about stressing parallel programming at the advanced undergrad level? Multicore processors are ubiquitous! Anyway... more ideas another time.) Exciting times, indeed!

BRK

Wednesday, March 17, 2010

Whatever happened to programming? � The Reinvigorated Programmer

Whatever happened to programming? � The Reinvigorated Programmer

So true. The fact is that the majority of computer science programs (at least in this country) adhere to the ACM / IEEE CS 2001 curriculum recommendation (which has recently been revised as of December 2008.) We strive to obtain accreditation, usually through ABET. Both of these correctly stress the importance of teaching the basic foundational concepts in computer science. But, let me wear the devil's advocacy hat for a moment. How important is this for all students in computer science? Do we need different paths to help students achieve different goals?

Consider the average CS undergraduate student from an average college. Let us suppose that they obtain a job working in any of the "hot" areas in software development today. Let's choose Java, since that still represents a large chunk of the development jobs available today. I believe that the foundational data structures (trees, lists, stacks, queues, hash tables, etc.) and algorithms need to be taught. But, to what level of detail? Does the average CS undergrad I'm speaking of here need to have detailed knowledge to the point where they could develop these data structures and their supporting algorithms themselves? Surely, they need to understand these algorithms and structures with respect to their use of computational resources. However, I could present a weak argument that perhaps it might be acceptable for some students to focus on learning the core APIs earlier and in much more depth through their career, and get them to gain more experience on large-scale software projects, while hopefully gaining some experience with team-oriented software development processes. I see far too many undergrad students graduate with no familiarity with the C++ STL beyond the vector or string class -- don't bother asking them about the wide range of algorithms and design patterns implemented in the library. The Java API is a far greater beast to master. And yet, most 4-year graduates that enter the work force will be using these libraries, or more likely involved in validation and verification testing of existing code using these facilities. It is highly unlikely that they will start their first job implementing their own low-level, foundational algorithms.

With my devil's advocate hat now taken off, I would be extremely disappointed if I saw this direction being pursued in higher-ed computer science. I think that the theoretical, mathematical, and foundational concepts are extremely important for computer science students, especially for those looking to further their education in graduate school. I think that though it is important to be aware of libraries, unless you are developing a program that provides a 100% identical mapping of all inputs to all outputs of an existing program, then you are going to need to do something unique with your program. Very basic theory of computer science will teach you that there are an infinite number of ways to solve even the simplest of problems with a computer program. The rigorous, detailed training we hope to provide the student is the knowledge to understand how to solve that problem with the most efficient use of computational resources!

Perhaps a different program or title needs to be introduced that distinguishes the true computer programmer and software engineer with one that only has high-level understanding of how to plug together libraries to form applications.

Final thought -- I agree with the author: not being able to truly program takes away the pure joy and challenge that can be had with creating software. There seems to be a substantial contradiction here with computer science -- we teach the importance of developing reusable code, and yet we all want to have the opportunity to code from scratch! I think there needs to be a balance, and an understanding that there are opportunities to do your own thing... you might just need to make them yourself.  A great example and opportunity for pure computer scientists has been looming at our doorstep: multicore processing. This topic needs to continue to move up the priority ladder in our CS courses. If you are bored with "plug and play" style software development, try to perform some profiling and detailed analysis to determine if your design is fully making use of multithreading and multiprocessing. If not, then as Picard used to say, "Make it so, #1!"

More some other time...

Thursday, January 14, 2010

CS depts. and the gaming industry

The concept presented in this article that surprised me the most was that "the demand for computer scientists capable of building games is high, with large companies like Electronic Arts reporting that 65% of their hiring demand is for programmers skilled in building games."

Two points: first, I agree that the traditional CS graduating student is not best equipped for a career in the game industry. Second, I'm not really sure Electronic Arts is the best company to use as an example of anything these days. Weren't they the focus of a coalition put together by wives of employees to tout about the horrible working conditions? They also announced a pretty large round of layoffs last year. Check out google for lots of interesting stories on them.

Despite the example used, I agree with the point that today's CS curriculum does not prep students for jobs in game development. We focus on prepping students with the skills that are required for the majority (and also most lucrative) of careers in CS. Of all of the possible jobs one can obtain with a CS degree, game development is not anywhere near the top of the list. I think we would be doing a large disservice to the majority of firms that hire computer scientists if we start incorporating game development into the curriculum.

But, I can easily take the other side of the argument. Consider how many more students would be interested in a degree in CS today if we could talk about our opportunities to develop games! Attracting student interest and dealing with retention are two hot topics in CS academia. I think there can be a balance, where some aspects of game development are used in some earlier courses, perhaps up to the point where data structures are taught.