Teaching Introductory Programming to IS Students: Java Problems and Pitfalls

Introduction Like many things in life, first impression matters, and programming is no exception. The importance of a properly constructed first course in programming cannot be overstated. Such a course leaves students with good programming habits, the ability to learn on their own, and a favorable impression of programming as a profession. A poor experience may result in a "just get by" attitude, bad programming habits, and could lead to a change in majors. Ala-Mutka Uimonen, and Jarvinen (2004) assessed programming style as a function of modularity, typography, clarity, independence, effectiveness, and reliability, whereas Reddy (2000) defines style constructs specific to the Java language. Instilling in students these habits and providing them with an enjoyable first experience in programming is important. Since 2001, enrollment in the course Introduction to Business Programming has shrunk by 50% at my institution. This combined with the 50% attrition rate of students who enter Introduction to Business Programming and of those who complete the course Intermediate Business Programming has made the task of determining the factors that lead to success (or failure) in learning to program all the more important. Because of this our department is reviewing its curriculum, the technology used in courses, and recruiting strategies. Part of this assessment is determining the proper amount of emphasis to place on the programming skills taught to and expected of our graduates and the proper way to teach these skills. During the boom of Computer Science/Information Systems (CS/IS) in the 1990's the loss of students to other disciplines was not a major concern. These students were just written off as not having an "aptitude" for programming. Nevertheless, this philosophy will change owing to shrinking enrollments in CS/IS fields (Zweben & Aspray, 2004). Hensel (1998) foretold of shrinking enrollment, predicting that enrollment would drop as a result of a decline in college age students, poor preparation for technical classes (leading to failures and reluctance to enroll), and changing interests in students. This added to fears of outsourcing, the dotcom bust, and the slow down in hiring after Y2K conversions have kept students away from CS/IS. Indeed, CS/IS faculty members have little control of national birthrates and the hiring practices of corporations, but we can look for ways to attract more students and retain the ones we now have. This paper examines the impact the use of the Java programming language has had on the way our students learn to program and the success they achieve. The first section provides some background on why Java was selected as the programming language in our program. This is followed by an enumeration of the features and characteristics of Java that have presented particular problems to our students and a review of paradigms and tools used by other educators to overcome such problems. The structure for the Introduction to Business Programming course is then described along with assessment of outcomes. The paper concludes with a discussion of lessons learned and the results achieved. The Move to Java Teaching programming courses to Information Systems (IS) students in the College of Business has much in common with teaching Computer Science (CS) students but there are some differences in student background and prerequisite courses. Unlike CS students, IS students are generally only required to have a semester of statistics and a semester of "business calculus" to graduate. More often than not, these courses are put off to their senior years. Therefore the mathematical background of IS students consists of what they may or may not have learned in high school and what they may or may not remember of their required learning. In addition, a typical IS major only takes 20-30 credits of computer related courses whereas the CS major is required by ABET (Accreditation Board for Engineering and Technology) standards to have 42 or more hours of required CS study. …