One of my responsibilities at Jewish Day School is to post a monthly column on the goings-on in our media studies department (and in education technology in general) to our online parent bulletin. This is one such column.
In today’s world, where “there is an app for that” — no matter what that may be — it is easy to lose sight of the fact that, in fact, when we are dealing with real problems that involve real people and real situations and real information, there often isn’t an app for that. Nor is there a systematic, rational approach for tackling the unknown. It’s easy to find an app that tracks the balance of your checking account… but very, very hard to find an app that can tell you why your portfolio is going up (or down).
The Media Studies department is offering a new course in computer application design and computer science in the coming academic year, to complement our existing offerings in video, photography, web and game design and new media. Seth Battis, who joined the department this year, will be teaching the course, which is designed to complement the robotics learning led by [colleague] and [Jewish Day School Academy of Science and Technology].
Computer science is the study of computation, using computers to process vast mountains of data into that nugget of usable, useful, valuable information. And, in the past decade, it has become the domain not just of computer geeks, but of professionals, scientists and researchers seeking to better understand the information they have and the challenges they are trying to tackle. Computational biology, statistical modeling of markets, physical simulations of wind energy are all being done by people with a foot in two worlds: the world of their chosen, beloved studies and the world of computation facilitates their studies.
Computer science has gone in and out of vogue many times over the last several decades — and with good reason. It can provide a unique perspective on creative problem-solving and ways for humans (us!) to understand vast and complicated data. But it can also be the drudgery of “pixel-stained technopeasants” sweating over line after line of arcane code.
The purpose of the Computer Application Design and Programming course is to, at the high school level, make these same skills and this same practice available to [Jewish Day School] students. Students will have the opportunity to practice their analytic and reasoning skills, while developing new practices in problem solving, using modern tools further their learning. The course will be taught using object-oriented programming practices, applicable in a broad array of modern computational environments — from the iPhone to the web to stand-alone computers to computing clusters.
Students and families interested in the Computer Application Design and Programming course are encouraged to contact their advisor or Mr. Battis or [my department chair] for more information.
Seth Battis May 3rd, 2010
I’m in the throes of reworking my Introduction to Computer Science course for the coming fall. I was thoroughly dissatisfied with how I taught the course this year: I’m at the stage of teaching where I know how I want it to go, but can’t always make it happen. Of course, this may not be a stage, but could, depressingly, be the existence of a grown-up.
I have divided the course into three broad areas that I think are most important to cover: computer science (as a discipline: concepts like variable scope, Boolean logic, object-oriented design, and so on), programming in Java (concrete details like how a for loop works or how to declare a class) and design and implementation. Design and implementation is actually really the core of my fascination with this course: how do you teach problem solving? And how do you get students to apply those skills.
In doing this, I’m plowing through a lot of articles.
Of course, the challenge is now to boil down all these design concepts into something that is useful not in a first-year computer science or software engineering undergraduate course, but in a first-semester high school course. How much do my students really need to know about UML, CRC cards, flow charts, eXtreme Programming, incremental development, rapid prototyping, functional requirements and use cases? Not a whole damn lot. Mostly, I want them to learn to enjoy the process of rigorous problem solving as manifest in learning to program a computer.
But I’d certainly like them to not be starting down the garden path of bad habits based on ill-considered pedagogical frameworks.
Ah, for the days of Pascal as a first programming language!
Seth Battis June 26th, 2008