Additional profile information on Alfred Thompson at Google+
A recent blog post by Ian Bogost (The Virtues of Long Compiles) has me thinking once again about the trouble with fast compiles. How would you program differently if you could only compile your project once an hour or perhaps once a day? Actually its more complicated than that. What would you do between compiles? Would you work on other programs or perhaps new modules for the compiling program? There are risks associated with working on modules that have to work with code that hasn’t actually been tested yet. Would you read the manual or textbook looking for new ideas? (That is one thing that comes up in Ian’s post BTW.) This is a hypothetical or theoretical question for most students today. For some of us old people it means trying to remember how did we do thing back in the day of card readers and line printers.
The first thing I remember is that I put a lot more thought into the code before I hit the compile button. Well actually before I gave the operator my card deck. I didn’t compile after each syntax error was corrected for example. Or even some few number of them. I tried pretty darn hard to identify and correct each syntax error that the last compile had reported. The trick here is that one really had to understand what the error was. There was no time to try random changes and see if they worked. One did some analysis and you were always looking for the one fix that would correct several (or many) errors. Forgetting to declare variables was a killer. Today good IDEs (well Visual Studio which is what I use for most everything) help with the syntax errors are you type. Once doesn’t always have to run a full compile to catch the missing variable declaration for example. That doesn’t mean that errors that are a combination of syntax and logic such as bad assignments with mismatches of type always get caught of course. But one doesn’t have to wait for a long compile to catch most syntax errors.
With long wait times between compiles there was also an incentive of sorts to write as much code as possible before submitting to compile. This is not so much a good thing. It is much easier to debug a small piece of code than a large complex piece of code. On the other hand you really wanted to make sure your logic was sound, your interfaces clearly defined, and expectations well mapped out. This may be a win for the fast compile crowd in the long run but I’m open to opinions.
Once one handed in their card deck to the operator there was time before you got the results. Depending on that facility or school that could range from under an hour (the small liberal arts university I attended) to the next day sometime (the larger NYC university my wife attended). So what to do? Sometimes that was time used to prepare test data for when you did get a clean compile. Sometimes it was spent going over the assignment and seeing if anything was missing. Sometimes designing yet another module. Often it was in discussion with others waiting for their run to return. Still other times it was on to some other project for some other subject entirely. In some ways that mental break was a good thing. All in all one did learn some patience. Patience is a noble and necessary virtue for software developers – and other people as well.
The instant edit, compile and run cycle of modern high speed compilers has changed the way we develop code. In many ways for the better but in the process I sometimes fear we have lost something as well. Patience, careful consideration, attention to detail, and maybe solid planning. Back in the card punch days we saw more women in software development than we do today with the fast edit/compile/run system. Coincidence? I wonder. Does today’s way lend itself less to the way women work than the “old way?” I have no idea. I know of no study. But it is something I just happen to wonder about.
[EDIT: See also Eugene Walligford's blog post at "I Love The Stuff You Never See"]
There is an article in the Washington Post about a school board member who took a standardized test for 10th grade students. To say he didn’t do well would be an understatement. This got me to wondering – how would professional developers do if they took the Advanced Placement Computer Science exam? I remember the first time I looked at one. At the time I was most recently a professional developer with about 18 years of experience and a masters in Computer Science. I confess that I would not have enjoyed taking it “cold.” Now since then I have taught the APCS curriculum and even served as a reader (i.e. grader) of the exam. I think I could do ok today even after having been out of the classroom for a while. Many professional developers would also do just fine I am sure. This is especially true for those recently out of school. But I wonder how well experienced but self-taught professionals would do?
There are some sample APCS questions at the College Board web site that you can look at. The biggest complaint many people have with the exam is that it is too Java specific. This suggests that people who program in other languages might have some particular problem with the exam just on that basis. But most professionals pick up languages fairly quickly and Java is enough like other languages in the C family that this should not be an insurmountable problem. I think for most professionals the free-response part which involved coding would probably be the easy part of the exam. Maybe no trouble at all. The multiple choice questions might actually be the hard part.
There are sample multiple choice questions in the AP Computer Science A Course Description (.pdf/1.6MB) and some of them are just tricky. Actually I had one student tell me they were all examples in how not to code. Not completely fair because of the constraints of the exam but still something that would give a lot of professionals pause. I can see some of them preferring, as I might, to just re-write the code so that it makes more sense. This highlights a limitation of all computer science exams though – the need for artificial constraints just to make the test “work.” For this reason many teachers I know greatly prefer to grade projects than tests and quizzes.
It’s hard to evaluate the quality of one’s programming knowledge and ability. We are in a society that values easily quantifiable metrics and standardized tests give us that. or at least the illusion of that.
If you are a professional developer, especially someone who was largely self-taught, have you looked at the APCS exam? What do you think of it? A piece of cake for you to take and pass? Too academic and not practical enough? Something else again? I’m just wondering. Something to think about today. But I’d really love some comments from others.
I’m a firm believer that blogs are a great way for teachers to share ideas and builds community. Supporting that sort of community is why I have many blogs listed on the side of this blog’s home page. But that format is limited. It doesn’t give much information beyond a name and a link. I wanted to do a little more. Also blog roles are not weighted as heavily in search engine optimization as links in blog posts are. So it occurred to me that I should create a blog role blog post. I will be adding a link to this post permanently among the “important posts” list on the home page. Also I plan to add to this post and expand the descriptions over time. If there are more blogs I should be listing (and following myself) please let me know in the comments and I will edit them in.
Laura Blankenship writes mostly about teaching CS at an all girls' school. And the occasional post about her kids.
Johnny Kissko KinectEDucation Blog “KinectEDucation is an educator-driven community resource for developers, teachers, students, enthusiasts, and any other education stakeholder to promote the use of Kinect applications in classrooms.”
Rebecca Dovi - I am a teacher on a mission. Every student should have access to computer science, it starts in my classroom.
Deepa Muralidhar writes a blog at csprinciplesnorth.wordpress.com on their experiences teaching CS Principles. They occasionally display students work samples there.
Kathleen Weaver - Teaching CS in Dallas Kathleen teaching computer science in the Dallas Independent School District and a good friend. An independent thinker.
Mike Zamansky, is a highly-regarded CS teacher at New York’s elite Stuyvesant public high school. He's also involved in the new Software Engineering High School that will open in September 2012.
Leigh Ann Sudol In need of a Base Case Leigh Ann Sudol is currently a PhD student at Carnegie Mellon University but was a high school computer science teacher in New York state for a number of years. Leigh Ann is the person who trained me to grade the AP CS exam the year I was a reader. She has an amazingly quick mind and talks fast at times as well. Fortunately she writes well; unfortunately she doesn’t write as often as I’d like. But what she writes is very good.
CSTA Blog The CSTA blog is updated by various members of the CSTA board and by their amazing Executive Director, Chris Stephenson. I find it essential for keeping up with news from CSTA. I highly recommend CSTA membership for anyone who teachers computer science in pre-collegiate education.
Communications of the ACM: blog@CACM The CACM blog has posts from some of the top people in computer science. Some of the posts are very technical but many are potentially interesting for students, teachers and CS hobbyists alike.
Mark Guzdial – Georgia Tech, GA, US Computing Education Blog Mark is probably doing more research in how to teach computer science right than anyone else I know. His posts include information about the CS Principles course, he is on the advisory board, which will probably be a new APCS course. He talks about the work they are doing at Georgia Tech both in terms of teaching new and different courses there as well as the Georgia Computes! program that is helping to develop more CS education at the HS level in Georgia. I wish I wrote half as well as Mark. Whether if be his commentary on the various articles he finds or information about his own work or discussion of things his graduate students are doing what you will find here are well thought out, well written and informative posts. His are the first posts I read most days.
Eugene Wallingford, University of Northern Iowa, IW, US Knowing and Doing Eugene writes a lot about the things he does in class and I find this very informative. Teaching and Learning is the top item in his blog categories list. Computing and Software Development as close behind. This is another blog I like for its well thought out and well written posts. And like a lot of Mark Guzdial’s posts, the posts here often make me think. And I am always learning from this blog as well. From insights into pedagogy to societal issues in computing I find a lot of value in this blog.
Gail Carmichael, PhD student at Carleton University in Canada The Female Perspective of Computer Science I like this blog for its perspective and for the insights she shares from the courses and workshops that she teachers. She also does research in augmented reality and has good knowledge of games as teaching tools. And of course gender equity, something I care deeply about, is something she is well qualified to write about. So I learn a lot.
Hélène Martin used to teach high school computer science but now lectures for the introductory computer science courses at University of Washington. Scary smart and full of ideas I learn a lot from her.
Rob Miles – Hull University, UK Rob Miles' Journal The first thing you have to know about Rob is that he has a great sense of humor. The second thing is that he knows what he is talking about with regards to game development and programming for mobile devices. Rob has written a lot of good curriculum resources and is one heck of a speaker. On his blog he shares a lot of his resources as well as a lot about his life. This is not all tech all the time by any means. So if you take things too seriously read about the other blogs here. But for me I enjoy his travel talk and outstanding photography as well as the insights into teaching and software development. Rob is one of the first bloggers I ever started reading and I enjoy his work a great deal.
A couple of other good university faculty blogs for you to take a look at: