We are designing a new first course, changing the approach we use and the language we use, but trying to avoid re-inventing everything. Making information available to everyone might help as we try to design the course with input from our local gang-of-four educators: those who will ultimately teach the course. But the design efforts are being coordinated by the two folks teaching the course in the fall (of 2010).
Why are we designing a new course?
- We have two CS2 courses: one for engineering students, specifically electrical and computer engineering students, and one for everyone else. The first group knows Matlab, the second group knows Java from our first course or the equivalent. There is substantial overlap in these courses, and teaching two such similar courses is using too many of our course-teaching-load-hours. We’d like to teach one CS2 course. Constraint: change the language so that it’s not-Java so students come into our CS2 course with similar,non-Java previous programming experience.
- Our first course has been taught in Java since 2004 when we switched from C++. At the same time we switched languages we instituted a prerequisite: students taking the first course should have some previous programming experience: loops, functions, and arrays. We made the changes for sound-at-the-time reasons, but the previous programming experience requirement is now an impediment that we’d like to remove, students are less inclined to take a first course that has a prerequisite. Constraint: remove the previous experience necessary prerequisite and make the course accessible to more students (that’s two constraints in one).
- Over the past six years we’ve emphasized object-oriented programming (or objects-first, or object-based or something similar) and used examples and assignments grounded in computer science. We’d like to move away from object-oriented to some degree and widen the domain/universe of problems we use in our examples. Constraint: use interdisciplinary examples as well as those drawn from computer science, leverage the power of computing.
Our new first course, to be delivered in the fall of 2010, will use Python as the language. We’ll develop a sequence and collection of interdisciplinary examples that illustrate the power of computing as well as the profound awe and sense of accomplishment we hope to instill in students by getting them to master rudimentary programming.