Posts tagged ‘Python’

Six Reasons Why Computer Science Education is Failing Students

Interesting arguments from the CEO of LiveCode.  These two points are particularly interesting.  The first is: What sits between Scratch, or Alice, or App Inventor, and professional-class languages like JavaScript or C++?  I would put Python in there, but I still see that the Scratch->Python gap is a big one.  The second paragraph is really striking, and I’d like to see more evidence.  Does Israel’s great CS ed system lead to the strong startup culture, or is it because Israelis value technology that they have both a great startup culture and a great CS Ed system?

Up to about age 13 there are some excellent tools in widespread use, most notable among them being the free and popular Scratch from MIT and MIT App Investor  However students outgrow Scratch by around age 13 and schools often don’t make a good choice of language for the next phase in a child’s education.  Many traditional programing languages such as JavaScript or C++ are completely inappropriate for this age group.  Students struggle to understand what they are learning and often spend their lessons searching for a missing symbol.  The current generation of students use smartphones and so selecting a tool that allows them to create their own apps is another great opportunity to make learning directly relevant to them.  Our own LiveCode platform provides a handy solution to these issues by allowing students to create their own mobile apps using a programming language that is close to English.

I firmly believe that a strengthening computer science education program has to be one of the most obvious and cost effective things we can do to ensure future economic prosperity.  Israel has the highest rate of startup per capita anywhere and that in part stems from its strong computer science education program.  Estonia, another country with both a strong tech sector and economy, recently announced a plan to expand teaching of computer science to all primary school children.  Do we want to be left in the dust by these countries, or left unable to compete with the growing economies of India and China?  What is it going to take to get computer science education moved up the agenda in the USA and here in the UK?

via Six Reasons Why Computer Science Education is Failing Students.

April 5, 2013 at 1:41 am 24 comments

Surveying Media Computation Students: Self-Efficacy, Worked Examples, Python, and Excel

I’m back from Oxford, after an intense six weeks of teaching “Computational Freakonomics” and “Media Computation.” Since I did new things in Media Computation this term, I put together a little survey to get students’ feedback on what I did — not for research publication, but to inform me as a teacher.

It’s complicated to interpret their responses.  Only 11 of my 22 students completed my survey, so the results may not be representative of the whole class.  (The class was 10 males and 12 females. I didn’t ask about gender on the survey, so I don’t know gender of the respondents.) The first thing I was wondering was whether the worked examples was perceived by students as helping them learn. “I found it useful to type in Python programs and figure them out at the start of class.” 4 strongly agree, 6 agree, 1 neutral.

That seems generally positive — students thought that the worked examples were useful.  How about helping with Python syntax?  “Getting the characters exactly right (the syntax of Python) was difficult.” 2 agree, 1 neutral, 8 disagree.  That’s in the right direction.

In the written portion, several students commented that they liked being able to focus on “understanding” programs “rather than just executing them.”  One student even suggested that I could have questions about the program after they studied them, or I could have them make a change to the program afterward, to demonstrate understanding.  I loved this idea, and particularly loved that it was suggested by a student.  It indicates seeing a value in understanding programming, even before doing programming, while seeing value in that, too.  This worked examples approach really does lead to a different way of thinking about introductory computer science: Programs as something to study first, before designing and engineering them.

When I asked students what their favorite part of the course was, and what their least favorite part of the course was, Excel showed up on both lists (though more often on the least favorite part).  Here’s one of the questions that stymied me to interpret: “Python is harder to learn and use than Excel.”  Could not be a more perfect bell curve — what does that mean?!?

“I wish I could have learned more Excel in this course.”  An almost perfectly uniform distribution!

Their reaction to Excel is so interesting.  On the written parts of the survey, they told me how important it was for them to learn Excel, that it was very important for their careers.  But they did not really like doing something as inauthentic (my word, not their’s) as pixel manipulation in Excel.  They wished they could have done something more useful, like computing “expenses.”

The responses above suggest to me a hypothesis: The students don’t really know how to think about Excel in relation to Python. It’s as if they’re two different things, not two forms of the same thing.  I was hoping for more of the latter, by doing pixel manipulations in both Python and Excel. This may be someplace where prior understanding influences the future understanding.  I suspect that the students classify these things as.

  • “Excel is for business. It’s not for computing.  Doing pixel manipulations in Excel is just weird and painful.”
  • “Python is for computing.  I have to go through it, but it doesn’t really have much to do with my future career.”  On the statement, “Learning programming as we have in this course is not useful to me,” 3 were neutral, and 8 disagreed.  I read that as, “It’s okay. Sorta.”

Something that I always worry about: Are we helping students to develop their sense of self-efficacy in an introductory course, especially for non-majors?

“I am more confident using computers now, after taking this course.”  Quite positive: 10 agree, 1 neutral.

“I think differently about computers and how they work since taking this class.”  Could not get much more positive: 8 strongly agree, 6 agree!

And yet, “I am not the kind of person who is good with computers.”  Mostly, students agree with that: 3 strongly agree, 4 agree, 1 neutral, 3 disagree.  One average, my students still don’t see themselves as among the people who are “good” with computers.

There was lots for me to be happy about.  Some students said that the lectures on algorithmic complexity and the storage hierarchy were among their favorites; that they would have liked to have learned more about the “big questions” of CS; and they they liked writing programs.  On the statement, “I learned interesting and useful computer science in this course,” 3 students strongly agreed, and 8 agreed.  They got that this was about computer science, and some of them even found that useful.

Even in a class of only 22, even seeing them every day for hours, even with grading all their papers — I’m still surprised, intrigued, and confounded by how they think about all of this.  That’s fine by me. As a teacher and a researcher, my job isn’t done yet.

August 8, 2012 at 9:43 am 8 comments

Typography to describe iteration

One of the complaints about Python is the use of indentation to define blocks.  A quote from Don Knuth is often used to defend that use:

We will perhaps eventually be writing only small modules which are identified by name as they are used to build larger ones, so that devices like indentation, rather than delimiters, might become feasible for expressing local structure in the source language.

Is it natural to use typography to indicate local structure?  Is it more accessible than curly brace ({}) notation, or BEGIN/END blocks?  Do we understand it easily?

I thought about this Sunday morning when I was at services, using a songbook I’d never seen before. The verses and refrain were indicated like this:

You sing the refrain (the “How great thou art” part) twice, indicated by “(2)” — which is pretty obvious, since it’s clear you wouldn’t sing “(2).”  What’s the “scope” of the repeat?  Well, the refrain is italicized, and so is the “(2).”  So you sing twice the part in italics.

I thought it was interesting to use typography to convey to the general population how to “iterate.” If we could count on the general population to know musical notation, and if the music was provided, there’s a different notation for indicating “iteration.”  The use of typography for defining iteration is meant to be more understandable, more generally accessible.

July 3, 2012 at 4:32 am 9 comments

Interactive eBook from Runestone Interactive: A Python eBook with IDE and visualization built-in

Brad Miller and David Ranum have opened up their eBook for general use at their new http://interactivepython.org site.  This is the book whose use we have been studying for the last year as part of our CSLearning4U effort.  It’s a great alternative to the Udacity/Coursera model of distance education, to make a book more like a course, rather than capture the course in video.  Our paper on this analysis just got rejected, so I’m not sure when and where we can tell the story of what happened, but I’m hoping that we can talk about it soon*.

Its fun to see my sabbatical project getting loose the wild.  It is always a bit scary to work on something creative and new and then let other people play with it and respond to it.  Such is the case with the new eBook I worked on during my sabbatical.  Unlike other eBooks that you may be aware of,  this book — in the words of Emeril — “kicks it up a notch”.  Using some cool open source javascript code that I’ve had to modify and bend a bit for my own use this book allows the reader to try their hand at Python right in the book.  Examples are fully runnable in two different ways.  Each section has an accompanying video.  My co-author, David Ranum and I are using this book in class this Fall and its fun to see how the students interact with the book.  We’ve had none of the usual Fall frustration at getting Python installed on students machines.  You can have a look at the book here.

via Reputable Journal, How to Think Like a Computer Scientist – Interactive Edition.

*I try to be careful when talking about new, not-yet-published work here, because it annoys reviewers when they can easily discern the authorship of a “blind review” paper.  In CS Ed, the identity of *any* work can be easily determined within five minutes of Googling/Binging — there are just too few people in the field.  Still, reviewers downgrade our scores because I “broke faith” by talking about the work in my blog. Sigh.

On a more positive note, we got three papers accepted to ICER 2012, so I do plan to talk about that work here soon.

June 4, 2012 at 8:12 am 14 comments

Learning to code for Valentine’s Day: Same problems as everyone else.

Here’s a cute story: Girlfriend of the founder of the website Instagram learns to program in Python in order to give her Valentine a new web tool to work with Instagram.  From a computing education perspective, it wasn’t so sweet. The complexity of learning computing got in her way and ruined her secret.  It’s just too darn hard.

And yes she also had to learn Photoshop to come up with the the three different designs, “It’s almost harder than Python,” she told me.

While the service ended up looking amazing, her plan to keep it a secret from Krieger didn’t work, mainly because of her frustration with working out bugs, “Something would take me an hour and a half and I knew that ten feet away is someone who could fix the same bug in ten seconds.” So she spilled the beans.

via Instagram Founder’s Girlfriend Learns How To Code For V-Day, Builds Lovestagram | TechCrunch.

February 14, 2012 at 8:15 am 2 comments

What students get wrong when building computational physics models in Python: Cabellero thesis part 2

Danny’s first study found that students studying Matter and Interactions didn’t do better on the FCI.  That’s not a condemnation of M&I. FCI is an older, narrow measure of physics learning. The other things that M&I cover are very important.  In fact, computational modeling is a critically new learning outcome that science students need.

So, the next thing that Danny studied in his thesis was what problems students were facing when they built physics models in Vpython.  He studied one particular homework assignment.  Students were given a piece of VPython code that modeled a projectile.

The grading system gave students the program with variables filled in with randomly-generated values.  The Force Calculation portion was blank. The grading also gave them the correct answer for the given program, if the force calculation part was provided correctly. Finally, the students were given the description of another situation.  The students had to complete the force calculation (and could use the given, correct answer to check that), and then had to change the constants to model the grading situation.  They submitted the final program.

Danny studied about 1400 of these submitted programs.  Only about 60% of them were correct.

He and his advisor coded the errors.  All of them.  And they had 91% inter-rater reliability, which is amazing!  Danny then used cluster analysis to group the errors.

Here’s what he found (image taken below from his slides, not his thesis):

23.8% of the students couldn’t get the test case to work.  19.8% of the students got the mapping to the new test condition wrong.  That last one is a common CS error — something which had to be inside the loop was moved before the loop. Worked once, but never got updated.

Notice that a lot of the students got an “Error in Force Calculation.”  Some of these were a sign error, which is as much a physics error as a computation error.  But a lot of the students tried to raise a value to a vector power.  VPython caught that as a type error — and the students couldn’t understand the error message.  Some of these students plugged in something that got past the error, but wasn’t physically correct.  That’s a pretty common strategy of students (that Matt Jadud has documented in detail), to focus on getting rid of the error message without making sure the program still makes sense.

Danny suggests that these were physics mistakes.  I disagree.  I think that these are computation, or at best, computational modeling errors.  Many students don’t understand how to map from a situation to a set of constants in a program.  (Given that we know how much difficulty students have understanding variables in programs, I wouldn’t be surprised if they don’t really understand what the constants mean or what they do in the program.)  They don’t understand Python’s error messages, which were about types not about Physics.

Danny’s results help us in figuring out how to teach computational modeling better.

  • These results can inform our development of new computational modeling environments for students. Python is a language designed for developers, not for physics students creating computational models.  Python’s error messages weren’t designed to be understood for that audience — they are about explaining the errors in terms of computational ideas, not in terms of modeling ideas.
  • These results can also inform how we teach computational modeling.  I asked, and the lectures never included live coding, which has been identified as a best practice for teaching computer science.  This means that students never saw someone map from a problem to a program, nor saw anyone interpret error messages.

If we want to see computation used in teaching across STEM, we have to know about these kinds of problems, and figure out how to address them.

August 1, 2011 at 9:07 am 16 comments

Why is computing with media so rarely supported in programming languages?

Our publisher has asked Barb and me to explore making a 3rd edition of our Python Media Computation book, and in particular, they would like us to talk about and use Python 3.0 features.  Our book isn’t a generic Python book — we can only use a language with our Media Computation approach if we can manipulate the pixels in the images and the samples in the recorded sounds.  Can I do that in Python 3.0?

The trick of our Java and Python books is that we can manipulate pixels and samples in Java.  I wrote the original libraries, which did work — but then Barbara saw my code, eventually stopped laughing, and re-wrote them as a professional programmer would.  Our Python Media Computation book doesn’t use normal C-based Python.  We use Jython, a Python interpreter written in Java, so that we could use those same classes.  We solved the problem of accessing pixels and samples only once, but used it with two languages.  We can’t use that approach for the Python 3.0 request, because Jython is several versions behind in compatibility with CPython — Jython is only at Python 2.5 right now, and there won’t be Jython 3.0 for some time yet.

We used our Java-only media solution because it was just so hard to access pixels and samples in Python, especially in a cross-platform manner.  Very few multimedia libraries support lower levels of access — even in other languages.  Sure, we can play sounds and show pictures, but changing sounds and pictures is much more rare.  I know how to do it in Squeak (where it’s easy and fast), and I’ve seen it done in C (particularly in Jennifer Burg’s work).

I have so-far struck out in finding any way to manipulate pixels and samples in CPython.  (I don’t have the cycles to build my own cross-platform C libraries and link them into CPython.)  My biggest disappointment is Pygame, which I tried to use last summer.  The API documentation suggests that everything is there!  It just doesn’t work.  Pixels work fine in Pygame.  Every sound I opened with Pygame reported a sampling rate of 44100, even if I knew it wasn’t.  The exact same code manipulating sounds worked differently on Mac and Windows.  I just checked, and Pygame hasn’t come out with a new version since 2009, so the bugs I found last summer are probably still there.

What I don’t get is why libraries don’t support this level of manipulation as a given, simply obvious.  Manipulating pixels and samples is fun and easy — we’ve shown that it’s a CS1-level activity.  If the facilities are available to play sounds and show pictures, then the pixel and samples are already there — in memory, somewhere.  Just provide access!  Why is computing with media so rarely supported in programming languages?  Why don’t computer scientists argue for more than just playing and showing from our libraries?  Are there other languages where it’s better?  I have a book on multimedia in Haskell, but it doesn’t do pixels and samples either.  I heard Donald Knuth once say that the hallmark of a computer scientist is that we shift our work across levels of abstractions, all the way down to bytes when necessary.  Don’t we want that for media, too?

So, no, I still have no idea how to do media computation with Python 3.0.  If anyone has a suggestion of where to look, I’d appreciate it!

June 17, 2011 at 8:44 am 27 comments

Python MediaComp book is #2 in CS1

I just got a report from my publisher who told me that I can share these stats.  Our Python Media Computation book is now #2 in sales in the US among Python CS1 books — Zelle’s book is number one.  The Python CS1 market grew 36% this last year (down from over 40% the previous two years).  I know Greg Wilson was wondering, and they told me that I can report the number this year: The size of the market is around 24,000 sales.

I wonder if that number is actually wrong for our book.  I bet that most schools using our Python book are not using it for a traditional CS1 (i.e., introductory course for students entering the CS major), but for a CS0.5 or a non-majors course.  But I don’t think that the publishers have a category for that.  So those CS1 numbers might be inflated, covering these other cases as well.

April 22, 2011 at 8:10 am 4 comments

CMU “eliminating” object-oriented programming

I talked to people about the new Carnegie Mellon University curriculum last week, but no one to whom I spoke made such a strong statement as below, that OO is being “eliminated entirely.”  I was pleased to hear that the new curriculum is multi-lingual and multi-paradigmatic.  I’m not sure how the curriculum can be entirely OO-free since the first course is in Python.  I know that the second course is in C0 (“C not”), and the third course is in ML. The report that the below blog post links to is much more careful in its claims about object-oriented programming. I did a Blog@CACM post, using the post below as an example, about how we polarize discussions in computing education rhetoric — the CMU report on the new curriculum is much more reasoned (in its analysis) and reasonable (in its recommendations).

Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum.  A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic.

via Teaching FP to freshmen « Existential Type.

March 28, 2011 at 10:27 am 23 comments

Predictions on Future CS1 Languages

A recent article in InfoWorld on up-and-coming languages got me thinking about the future of CS1 languages.  They went on at some length about Python, which I think most people consider to be the up-and-coming CS1 language.

There seems to be two sorts of people who love Python: those who hate brackets, and scientists. The former helped create the language by building a version of Perl that is easier to read and not as chock-full of opening and closing brackets as a C descendant. Fast-forward several years, and the solution was good enough to be the first language available on Googles AppEngine — a clear indication Python has the kind of structure that makes it easy to scale in the cloud, one of the biggest challenges for enterprise-grade computing.Python’s popularity in scientific labs is a bit hard to explain, given that, unlike Stephen Wolframs Mathematica for mathematicians, the language never offered any data structures or elements explicitly tuned to meet the needs of scientists. Python creator Guido von Rossum believes Python caught on in the labs because “scientists often need to improvise when trying to interpret results, so they are drawn to dynamic languages which allow them to work very quickly and see results almost immediately.”

via 7 programming languages on the rise | Developer World – InfoWorld.

There have only really been three “CS1 languages,” the way that I’m using the term: Pascal, C++, and Java.  All three programming languages were used in a large (over 50%) percentage of CS1 (intro CS for CS majors in post-secondary education in the US, and AP in high school) classes.  All three were AP CS languages.

Pascal at one point was probably in over 80-90% CS1 courses.  Not everyone jumped immediately to C++, but C++ was in the majority of CS1 classes.  I know that because, when our Java MediaComp book came out, our publisher said that Java had just pulled even with C++ in terms of percent of the market — that means C++ had to have been in lots of classes.   Java is the dominant language in CS1 classes today, but it’s declining.  Python’s market share is rapidly growing, 40% per year the last three years.  While it’s not clear that the new AP CS nor the AP CS Level A would ever adopt Python, Python might still gain the plurality of all CS1 languages.  I doubt that any language will ever gain more than 30-40% of the CS1 market again — there are (and will be) too many options for CS1 languages, and too many entrenched interests.  Faculty will stick with one, and may skip a plurality, e.g., I’ve talked to teachers at schools where they stuck with C++ but now are switching to Python.

I have two specific predictions to make about future CS1 languages, based on observations of the last three and the likely fourth.

  • All future CS1 languages will be in common use in industry.
  • No language will gain a plurality of CS1 courses unless it existed at the time of the last transition.

The transition from Pascal to C++ led to the greatest spike in AP CS Level A tests taken in Georgia.  Until 2010, that was largest number of AP CS exams taken in Georgia.  The transition from C++ to Java had nowhere near that kind of impact on the test numbers in Georgia.  What might have led to so much more interest in the Pascal -> C++ transition?  Pascal was a language that was not (perceived to be) common in industry, while C++ was.  I don’t think that people perceived such a huge difference between C++ and Java.  I believe that the sense that C++ was vocationally useful, was approved of by industry, had a huge positive impact on student interest in the test.

In this blog, we have often touched on the tension between vocational and academic interests in computer science classes.  Vocational most often wins, especially in the majority schools.  The elite schools might play with BYOB Scratch in their intro courses (but notice — even at Harvard and Berkeley, it’s for the non-majors, not for those who will major in CS), and community colleges might use Alice to ease the transition into programming, but the vast majority of schools in the middle value industry-approval too much to adopt a pedagogical language for their CS majors.

The implication of the first prediction is that, if Scratch or Alice are ever adopted for the new AP CS, only schools on the edges of the distribution will give CS major credit for it, because most schools will not adopt a CS1 language that isn’t useful for programming in industry.  That isn’t necessarily a bad thing for the new AP CS — to succeed, schools must agree to give some credit for it, not necessarily CS major.  Another implication is, if my prediction holds true, Scheme will never gain a plurality in CS1 courses.

The second implication is based on an observation of the timing of the four languages.  Each existed as the previous was adopted for the AP CS Level A, which is a reasonable point at which to claim that the language had reached plurality.  C++ existed (since 1983) when the AP CS Level A was started in Pascal (1988, I think).  C++ was adopted in 2001, and Java came out in 1995.  AP CS Level A shifted to Java in 2003, and Python 1.0 came out in 1989, with Python 2.0 (the one receiving the most interest) in 2000.  It takes a lot of time to develop that industry use, and to build up the sense that the new language may be worth the pain in shifting.

The implication is that, whatever the next CS1 language will be (after Python), it exists today, as Python reaches plurality.  Maybe Ruby, or Scala –more likely Ruby, given the greater industry penetration.  Any language that we might invent for CS1 must wait for the next iteration.  Scratch, Alice, and Kodu are unlikely to ever become CS1 languages, because it is unlikely that industry will adopt them.  Few professional programmers will get their jobs due to their expertise in Scratch, Alice, or Kodu. That absolutely should not matter to CS1 instructors.  But it does.

January 24, 2011 at 7:38 am 30 comments

Multi-lingual Pedagogical Programming Environment: Pyjama

Doug Blank at Bryn Mawr is looking for people to try out and help with his new editor/shell IDE, Pyjama (http://PyjamaProject.org). Pyjama is built on Microsoft’s Dynamic Language Runtime. Languages in Pyjama can share data, functions, and objects.

Pyjama currently comes with support for four languages: Python, Ruby, Scheme, and Dinah (“a new language prototype similar to the Alice interface”).  There are YouTube videos available about using the shell and the editor. The current tool is written in IronPython with Gtk# for the GUI.  It runs under Mono for Mac and Linux.

Doug is looking for folks to help out with Pyjama.  Explicitly, he wants this to be an educator’s tool, written for and by educators. Doug told me about his reasons for Pyjama in an email:

The larger goal of Pyjama is to make it so that educators can easily switch between programming languages, or switch contexts and topics. For example, if you would like to do Alice 3D programming, but you would rather do it in Python, then you could. Or if you would like to use an Alice interface to control robots, then you could. In addition, if you would like to create a new language (or language environment, like Processing or Scratch) then you could. Or if you would like to create a new module (say in Scientific Methods) then that module will instantly be available to all of the Pyjama languages.

We (teachers) need to be in control of everything in the academic environment… If Java isn’t the right language, let’s build our own. If IDLE and Python doesn’t work just right, let’s alter it to suit our needs, not just use what is available.

September 20, 2010 at 1:12 pm Leave a comment

The First Multi-Lingual, Valid Measure of CS1 Knowledge: Allison Tew Defends

Allison Elliott Tew has been working for five years to be able to figure out how we can compare different approaches to teaching CS1.  As Alan Kay noted in his comments to my recent previous post on computing education research, there are lots of factors, like who is taking the class and what they’re doing in the class.  But to make a fair comparison in terms of the inputs, we need a stable measure of the output.  Allison made a pass in 2005, but became worried when she couldn’t replicate her results in later semesters.  She decided that the problem was that we had no scientific tool that we could rely on to measure CS1 knowledge.  We have had no way of measuring what students learn in CS1, in a way that was independent of language or approach, that was reliable and valid.  Allison set out to create one.

Allison defends this week.  She took a huge gamble — at the end of her dissertation work, she collected two multiple choice question exams from each of 952 subjects.  If you get that wrong, you can’t really try again.

She doesn’t need to. She won.

Her dissertation had three main questions.

(1) How do you do this?  All the standard educational assessment methods involve comparing new methods to old methods in order to validate them.  How do you bootstrap a new test when one has never been created before?  She developed a multi-step process for validating her exam, and she carefully defined the range of the test using a combination of text analysis and curriculum standards.

(2) Can you use pseudo-code to make the test language-independent?  First, she developed 3 open-ended versions of her test in MATLAB, Python, and Java, then had subjects take those.  By analyzing those, she was able to find three distractors (wrong answers) for every question that covered the top three wrong answers in each language — which by itself was pretty amazing.  I wouldn’t have guessed that the same mistakes would be made in all three languages.

Then she developed her pseudo-code test.  She ran subjects through two sessions (counter-balanced). In one session, they took the test in their “native” language (whatever their CS1 was in), and in another (a week later, to avoid learning effects), the pseudo-code version.

The pseudo-code and native language tests were strongly correlated.  The social scientists say that, in this kind of comparison, a correlation statistic r over 0.37 is considered the same test.  She beat that on every language.

Notice that the Python correlation was only .415.  She then split out the Python CS1 with only CS majors, from the one with mostly non-majors.  That’s the .615 vs. the .372 — CS majors will always beat non-majors.  One of her hypotheses was that this transfer from native code to pseudo-code would work best for the best students.  She found that that was true.  She split her subjects into quartiles and the top quartile was significantly different than the third, the third from the second, and so on.  I think that this is really important for all those folks who might say, “Oh sure, your students did badly.  Our students would rock that exam!”  (As I mentioned, the average score on the pseudo-code test was 33.78%, and 48.61% on the “native” language test.)  Excellent!  Allison’s test works even better as a proxy test for really good students.  Do show us better results, then publish it and tell us how you did it!

(3) Then comes the validity argument — is this testing really testing what’s important?  Is it a good test?  Like I said, she had a multi-step process. First, she had a panel of experts review her test for reasonableness of coverage. Second, she did think-alouds with 12 students to make sure that they were reading the exam the way she intended.  Third, she ran IRT analysis to show that her problems were reasonable.  Finally, she correlated performance on her pseudo-code test (FCS1) with the final exam grades.  That one is the big test for me — is this test measuring what we think is important, across two universities and four different classes?  Another highly significant set of correlations, but it’s this scatterplot that really tells the story for me.

Next, Allison defends, and takes a job as a post-doc at University of British Columbia.  She plans to make her exam available for other researchers to use — in comparison of CS1 approaches and languages.  Want to know if your new Python class is leading to the same learning as your old Java class?  This is your test!  But she’ll never post it for free on the Internet.  If there’s any chance that a student has seen the problems first, the argument for validity fails.  So, she’ll be carefully controlling access to the test.

Allison’s work is a big deal.  We need it in our “Georgia Computes!” work, as do our teachers.  As we change our approaches to broaden participation, we need to show that learning isn’t impacted.  In general, we need it in computing education research.  We finally have a yardstick by which we can start comparing learning.  This isn’t the final and end-all assessment.  For example, there are no objects in this test, and we don’t know if it’ll be valid for graphical languages.  But it’s the first test like this, and that’s a big step. I hope that others will follow the trail Allison made so that we end up with lots of great learning measures in computing education research.

August 19, 2010 at 6:42 am 17 comments

Growth of Python in CS1

I just got a report from Tracy Dunkelberger of Pearson on the state of the Python CS1 market.  The market size is estimated to be about 20,300 students per year, up 45% since last year.  The market has had around 40% gains for each of the last three years.  She also shared with me some market share data which she asked me not to share further — I think it’s sufficient to say that our Media Computation book isn’t the top book in the market, but is doing well.

August 5, 2010 at 10:48 am 4 comments

Providing social infrastructure for Open Courseware

My colleague Ashwin Ram was one of the founders of OpenStudy, which aims to be a social network aimed at supporting student learning, e.g., through online study groups.  It’s just been announced that the MIT OpenCourseware initiative is going to partner with OpenStudy, so that students viewing the OCW material might work together to support learning (including for MIT’s Python course).  This is an exciting and important idea, to provide an infrastructure for learning beyond the raw content provided by OCW.

OCW has partnered with OpenStudy to offer an online study group for this course. 6.00 Introduction to Computer Science and Programming and two other courses (18.01 Single Variable Calculus, and 21F.101 Chinese I) have been selected for this pilot project. We need your feedback to determine whether more study groups should be offered for OCW courses.

These study groups are not moderated or managed by OCW, and you cannot earn credit for participating in them. To participate, you will need to register with OpenStudy or log in with your Facebook account.

About OpenStudy

OpenStudy is social study network for students to ask questions, give help, collaborate and meet others. Founded by professors and students from Georgia Tech and Emory University, and funded by the National Science Foundation and the Georgia Research Alliance, OpenStudy believes that students can teach other students through collaborative learning.

via MIT OpenCourseWare | Electrical Engineering and Computer Science | 6.00 Introduction to Computer Science and Programming, Fall 2008 | Join a Study Group.

August 4, 2010 at 8:45 pm 1 comment

SIGCSE Preview: Variations, Influence, and the Future

I’ll finish up my  SIGCSE Previews with three quickie mentions of panels and special sessions.

  • Media Computation was originally developed as an approach to engage non-computing majors in computing.  Since then, it’s gone in a wide variety of directions: From Beth Simon’s use with majors, to the Luther College crew’s CS1 using of PIL (Python Imaging Library), to Barb’s use as a special-effects studio for Alice, to Sam Rebelsky’s Scheme-based image manipulation, and to the Bryn-Mawr folks’ use of Media Computation with robots and Processing.  The session Thursday at 10:45 will be five-minute madness of several of these approaches, and an art gallery of some of the students’ work with these approaches. We call it “Variations on a Theme.”
  • David Kay has an interesting idea — the best way to figure out what were the most influential papers of a field are 10 years later.  He’s gathered a panel of opinionated, er, thoughtful computing educators to try to identify what papers before 2000 have been the most influential in the SIGCSE community.  Yours Truly will be one of those recommending papers, Thursday at 3:45.  Come see the debate!
  • Last June, the ACM Education Board hosted a meeting of about a dozen professional IT-related organizations concerned with computing education, including IEEE, AIS, and NCWIT.  We called it the Future of Computing Education Summit.  A report on that meeting and what’s happening as a result will be Friday at 10:30 am.

Okay, now I’ll get back to my normal ranting and raving.

March 4, 2010 at 11:31 am 2 comments

Older Posts Newer Posts


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 3,104 other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,183,047 hits
March 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

CS Teaching Tips