Great post from David Humphrey about teaching his children what makes a computer go. I still don’t know my way around their insides (computers, I mean, not children); maybe I’ll get to learn along with Maddie.
- Tim O’Reilly: “What Does Government 2.0 Mean To You?” He’d like to know…
- The City of Boston is deploying an iPhone application that will allow citizens to take pictures of things that need to be fixed and send them to city hall. (Interesting to think about combining this with the augmented reality app that just appeared… )
- Road information from the Ontario Ministry of Transportation and the City of Toronto. Both only seem to cover major routes, but you can get live traffic video for a couple of highways in the city as well.
I now have two blogs up at WordPress: one for the cross-country undergrad projects I’m coordinating (http://ucosp.wordpress.com), the other for Software Carpentry stuff (http://softwarecarpentry.wordpress.com). I’ll try to remember to post summaries here from time to time of what’s happening there:
- Aug 18: Team Sizes
- Aug 18: Code Sprint Sept 25-27
- Aug 19: Ingres Project(s) Are Up
- Aug 19: Where the Puck is Going to Be
- Aug 22: Hello Minnesota and the Virgin Islands
- Aug 23: Inspirations
- Aug 24: Contact Early, Contact Often
- Aug 25: Three From Laval
- Aug 25: A Rough Guide to Programming (In)competence
- Aug 25: Survivor Bias
We are very pleased to announce the release of Version 0.5 of Basie, a lightweight software project forge built on Django that borrows many ideas from Trac and DrProject. As this screencast shows, its features include:
- Multiple projects per forge
- Role-based access control and pluggable user account management
- Subversion repository browser
- Cross-component search
- Per-project wiki with standard WikiCreole syntax
- A simple ticketing system
- Web-based administration
- REST API for web services
- Available in English, Bulgarian, Chinese, French, German, Hungarian, and Japanese
- Graphical dashboard showing project statistics and history (in beta)
Basie is still very much a work in progress (we picked “0.5″ as a version number because we figure it’s halfway done ), but we are very pleased with how it’s coming along, and invite anyone who is interested in trying it out, or helping with its development, to get in touch.
…the (small) teams building these portals do not use agile methodologies themselves, but instead rely on informal collections of best practices….I’d like to know if the same behaviour can be found among mISVs: Are any of you following a specific (agile) method in the development of your products? Or it is more about improvising and working on what it seems best at any given time? (given the small size of the team, just 1 in many cases, and its expertise). Maybe not even agile methods are “agile” enough for this kind of teams?
The comments are interesting; lots here to chew on.
The U.S. Chamber of Commerce…wants to put the science of climate change on trial… The chamber is pushing for the Environmental Protection Agency to hold a public hearing — with witnesses, cross-examinations and a judge to rule on whether humans are causing global warming… [Its] goal…is to guard against potential emissions regulations by undermining the scientific consensus on climate change.
Not “show us in a forum we’re familiar with that this is really happening”, which I would understand, but “give us a chance to undermine the scientific consensus using the tricks that we know best”. Don’t they ever wonder whether their children will forgive them?
In response to a question about what it’s been like switching to Python as a first-year programming language, Paul Gries wrote the following. It might be of interest to other instructors who are thinking of changing over.
And in related news, we’re compiling errata and solutions to even-numbered exercises for a fresh printing of Practical Programming. We’re pleased with how well it’s doing; in particular, we’ve been pleasantly surprised by the number of inquiries we’ve had from people who are home schooling. If you have questions, suggestions, or experiences to share, we’d love to hear from you.
The switch to Python was quite smooth, except for the following items:
- We decided to write a textbook because we didn’t think we could live with the options at the time.
- We decided to use Mark Guzdial’s excellent multimedia approach, but ended up almost completely rewriting his media module to use standard Python instead of Jython and had many issues with his development environment. Mark had a proof of concept that we worked from, but it used Java naming conventions and since it was designed and written by undergrads it needed a lot of cleaning up. You can find installation instructions for all of the packages that we use at . A team of about 4 people worked roughly 1 day a week throughout the summer in 2007 to put together the lectures, assignments, labs, and tests, and we’ve been refining that since then.
We love most of Python, especially the clean, readable, minimal syntax. However, there are several Python gotchas, and we were bitten by almost all of them. Here are some of the major ones that confused either students or instructors:
- There are no good GUI packages; Swing was at least teachable, but Tkinter has lots of warts and none of the others (e.g., wxPython, PyQt) seem to be usable on all three major OSes. We’ve dropped Tkinter this fall in favour of EasyGUI, which has major limitations but is much more teachable.
- It’s hard to know when to stop. List comprehensions, for example, are really cool and natural, but they make a surprising number of problems too easy and allow students to avoid writing loops. We show them toward the end of our intro course but don’t require the students to use them.
- Aliasing is surprising and comes up naturally and even accidentally, especially in lists. This is not necessarily Python-specific, but it sure comes up more in Python than it did in Java.
- Default values for parameters are created once. Students (and some instructors) hate this.
- Simple classes are harder to teach than in Java. Also, “self” confuses a large subset of the students. Since dictionaries are so accessible they do whatever they can to avoid using and understanding classes.
- Global scope is hard to explain: it’s actually module scope and not global, and in the three examples below there are different behaviours; the last example in particular really confuses students. They do all of these things naturally, so we can’t prevent them getting confused.
# Example 1 i = 1 def f(): print i f() print i
# Example 2 i = 1 def g(): i = 2 print i g() print i
# Example 3 i = 1 def h(): print i i = 2 print i h() print i
- More scope: nested functions baffle students.
On the positive side, some students LOVE putting functions into dictionaries and getting rid of huge if/else statements. They also find passing functions as parameters to be natural; we introduce this idea to write a timing function that returns how long its argument runs. This is a lovely thing to do when we get to searching and sorting.
In CS2, we’re struggling with how much information hiding to do; we’re conflicted about whether __var plus set_ and get_ helpers is what we should do or if we should get into properties. We’re leaning toward the former, but we’re not certain.
For their thesis projects, two of my graduate students are studying what programmers actually do when developing software. I can’t give you more details than that without biasing their studies, but what I can tell you is that they’re looking for Java coders with at least 3-4 years of full-time industry experience who’d be willing to give them an hour or so. No electrodes involved, and you’d help science move forward in a small way. If you’re willing, and in the Greater Toronto Area, please give me a shout and I’ll hook you up.
From Lambda the Ultimate:
According to a draft statement, Scheme is to be split into a small and a large language, the small being designed for educators and “50-page purists”, the large for “programmers, implementors”.
Part of me says, “If you think purists and programmers belong in two different camps, you’re doing more harm than good.” The rest of me says, “Isn’t it a shame that every useful programming language eventually has to make this distinction?”
One by one and two by two our summer students are wrapping up:
- Eben Hailemariam has moved the Eclipse feature diagram plugin to Google Code, and has posted a screencast showing the latest progress.
- Maria Yancheva’s MediaWiki search plugin has a screencast too.
- Brent Mombourquette’s Breadcrumbs plugin for Firefox is up on Google Code too.
- Ainsley Lawson and Sarah Strong have finished their TracSNAP plugin (which draws social network graphs based on code), and uploaded it to TracHacks.
I’ll post more as they come in. Well done, everyone—it’s been a great four months.