What I want/need in a programming class

Aug 08 2014 Published by under Off Topic, Uncategorized

Abigail Goben (Hedgehog Librarian) has a recent blog post discussing some of the shortcomings she's identified in the various coding courses she's taken online and the self-study she has done.

I think my view overlaps hers but is not the same. Instead of try to compare and contrast, I'll say what I've seen and what I need.

I'm probably pretty typical of my age: I had BASIC programming in elementary and high school. This was literally BASIC and was like

10 print "hello"
20 goto 10

I think we did something with graphics in high school, but it was more BASIC.  In college, they felt very strongly that physics majors should learn code, so I took the Pascal for non-CS majors in my freshman year.  That was almost like the BASIC programming: no functions, no objects... kinda do this, do this, do this... turn it in. I never did see any connection whatsoever with my coursework in physics. I never understood why I would use that instead of the Mathematica we had to use in diffeq

In the workforce, I did some self study javascript (before it was cool), html, CSS - not programming, obviously. And then I needed to get data for an independent study I was doing and my mentor for that study wrote a little Perl script to get web pages and pull out links. The script she wrote broke with any modifications to the website template, so after waiting for her to fix for me, I ended up fixing it myself... which I should have done to start with. ... In the second stats class another student and I asked if we could use R instead of Stata. He was going back to a country with less research funding and I was going to work independently. But then, we just used the regression functions already written out and followed from a book. Elsewhere in the workforce I've read a lot about R and some co-workers and I worked through a book... I did the CodeAcademy class on Python.

All of these classes - if they weren't in interactive mode, they could have been. What are the various data types. How do you get data in there and back out again. How do you do a for loop. Nobody really goes into any depth about lists in R and they pop up all over the place. I couldn't even get Python installed on my computer at first by myself because everyone teaching me was on a Mac. (btw, use active python and active perl if you're on Windows - not affiliated, but they just work).

The R class on Coursera (same one she complains about) and the data science class by JH there were the first that even really made me do functions. What a difference. I really appreciated them for that.

So here's what I think:

People new to programming - truly new - need to understand the basics of how any program works including data types, getting data in and out, for loops. But also architectural things like functions and objects. They probably need to spend some time with pseudocode just getting through the practice.

Then if you're not new to programming, but you're new to a language - different course. In that course you say this is how this language varies, this is what it does well with, here's where it fails.

Then there needs to be an all about software design or engineering or process course that talks about version control and how to use it. How to adequately document your code. How to write programs in a computationally efficient way. The difference between doing things in memory or not.  What are integrated development environments and when would you use one. This is what I need right now.

If it's something basic, I can follow along a recipe I can read off of stack overflow, but I know nothing about efficiency. Like why use sapply vs. a for loop? Is there a better way to load the data in? Why is it slow? Is it slower than I should expect? I love RStudio - love, love, love! But I tried something like that for Python and could never get it to work. I'm still learning git, but I don't really understand the process of it even though I can go through the steps.

Anyhow, more about me, but I think I'm probably pretty typical. I think there's a huge gap in the middle in what's being taught and I also think that a lot of people need the very basics of programming almost minus the specific language.

6 responses so far

  • What you are saying is that people need to go through CS101.

    • Christina Pikas says:

      Not really. I mean, I did take a CS101 and that's not what was taught. I guess a seminar series would be cool? or another MOOC. Or I'll get there on my own... eventually

    • Andromeda says:

      In my experience, as someone who took CS 101 and teaches newbies to code....nope.

      CS 101 will get you some of this stuff. It will get you a formal sense of functions and data structures, say.

      It will *not* generally get you a sense of the craft knowledge - "here is version control", "here are best practices for documentation and yes we are going to practice writing it". People can go through whole CS programs and not get much of the craft knowledge. That stuff tends to be taught socially, in the field.

      And honestly, it may not give you a very good formal sense of functions, et cetera - because many CS 101 courses are themselves taught with the implicit assumption that students already know how to program! We tend to be terrible at identifying hidden prerequisites in code-teaching, and not to have great tools for actually scaffolding understanding if telling people the definition didn't suffice.

      I do feel that my CS 101 class has been a really helpful basis for future self-teaching, but it definitely did not teach me all of those things (and a few it attempted to cover but I didn't get them at all).

  • Well, I took CS101 decades ago, and it was based on learning Pascal, and then writing a LISP interpreter in Pascal. The grounding in the basics of programming--loops, conditional control, variables, arrays, subroutines, etc--has stayed with me to this day. When I needed to learn Perl a couple years ago to work with high-throughput nucleic acid sequencing data, my CS101 experiences made it easy.

  • DrugMonkey says:

    I love it when PP pretends us regular people are just as smart as he is.