HNHacker News
TopNewBestAskShowJobs

acbart

933 karma · joined August 12, 2013

https://acbart.com
submissionscomments
acbart··on Racket: Lisp for Learning
First, let me say I appreciate your lengthy response and your relative neutrality on this. Sometimes, when encountering folks who disagree with my opinions on this, things get a little heated. Case in point - I am very aware of what the person you mentioned says, which is difficult because I have blocked him on social media after our interactions. I originally had a paragraph about how I believe the PL/Racket community can be too rude to interact with. This is a difficult thing to say, but I'm afraid to let it not be said. The way that they communicate their arguments and ideas is frequently inconsiderate. You can say that feelings have no place in academia, but I've seen the impact that this has on potential practitioner adopters, on grad students, on many folks.

I hear and appreciate what you are saying about evidence. First, I'll give the usual disclaimer that evidence is hard to come by in CS Education because it's hard to collect properly. Second, I'll point out that I have been involved way more heavily in a completely different sub-branch of CS Education; if you would like to hear evidence for, say, the value of data science as an introductory computing context for non-majors (CS0), then I am very happy to share what I know that is backed up by evidence. Only recently have I started getting involved in actual CS1 research in a deep way - so I can't really take much responsibility for the lack of research. I mean, I've only been a professor for two years now :)

I don't know if you were hoping that I'd be able to find evidence in other papers or generate the evidence myself. For the former, know that I tried hard to do a proper lit review on this (and I'm not even going to get a publication out of it!). I even asked some Racket people: one basically repeated Matthias Fellisen's disgusting opinion that CS Ed research is not possible, and the other just pointed to one of their papers citing theoretical arguments. At some point, I'm hoping to ask Kathi Fisler if she has a better set of citations, assuming she'll still talk to me if she finds this document :)

As for whether I should be responsible for conducting research to disprove HtDP, I have considered it. I might even do it. Certainly, I am trying to experiment with several methods that can hopefully provide contrasting information. For instance, I want to see if I can replicate the Rainfall success by teaching more explicit functional decomposition and pattern application in my CS1. Of course, I'm also trying to do a ton of other projects, and my job promotion is based on my teaching, not my research.

Part of my issue is that I should not be responsible for proving that their ideas work. They thought up a bunch of arguments, and then claimed that This Is the One True Way to Teach. If I made the claim that teaching works better when I punch students at random intervals, and you disagreed, you wouldn't feel that the burden of proof was on your end, right? I should need to prove my Punching Method, to some extent - perhaps at least some pilot studies? The Racket folks made up a lot of claims, and then didn't really prove what they said. That was over 10 years ago! I've been busy getting my doctorate, what is their excuse?

Separately, you provide some very valid hypotheses for why my students didn't resonate with Racket. In general, I think you have some good points about SWE vs. CS, but I have a different perspective. There's some mental model here, common in certain communities, that learning happens in a very direct way - if you just arrange concepts in the right way, things will click. I think that learning is a lot more messy and chaotic and driven by a lot of human issues and tough to work with. Transfer is hard. You can't teach CS divorced from programming and this messiness, it's just not realistic. Perhaps a small percentage of my students who are destined to be brilliant Theoretical Computer Scientists and professors will find all the learning to be orderly. But CS is a broad umbrella nowadays, and motivations are complex. I'm not really doing my points justice here, but read some of what Andy Ko and Mark Guzdial have been writing about - I think they're more my kind of CS Education folks :)

Finally, I feel like I should at least address your hypotheses: (a) Yes, my students want industry-relevant languages. They all said this to me explicitly, once or twice during class :) I really tried my damndest to give them a good justification for why Racket is a good intro language. I really tried to sell it. I failed - either the arguments weren't delivered well, or they weren't received well. I will point out that some students told me last spring that they earnestly thought I was in favor of Racket for CS1, so anecdotal evidence that I at least tried! (b) Yes, most other faculty don't know why this is being taught this way, and they don't conform their courses to the vision. Should they? What's wrong with their courses that they need to be "Racketified"? What would fixing my junior-level Algorithms course to be more Rackety? Perhaps the Racket folks should offer some explanations. Or, here's an alternative - the PbD curriculum is not solving general purpose problems, and the approaches they teach are not generalizable to other parts of the curriculum. All CS1 courses are full of useful lies - the PbD curriculum's shouldn't be propogated downstream, they should just be tossed out in favor of lies that at least align with the next courses'. (c) I taught the Design Recipe and pretended it was effective. I told my TAs to grade on it, same as the other instructors have done in previous semesters (reusing rubrics helps a lot). Perhaps I'm not a good actor, but I really tried my best to sell it. Maybe my TAs weren't good, but I doubt that. They were all excellent students who excelled at the course when they took it. If they're not good at it, well I don't think we'd have been able to get better ones, so you have to take that as a limitation of the system.

I understand why you are disappointed by my article. I am disappointed in the entire HtDP community. I think that this is a bad situation, and I'm not clear that I can make it better by writing an article. However, my goal wasn't to persuade you that Python was better than Racket for CS1. It's to make the points that right now, in my context, I should be teaching Python instead of Racket. Also that the HtDP community should be ashamed of the awful job they've done proving their points, and they should stop being so mean to everyone.

acbart··on Racket: Lisp for Learning
I used a default theme from Github, and then did my best to make it a little more mobile-friendly. However, I wanted to focus on the content and, you know, my actual job, instead of spending hours fixing CSS. Perhaps consider taking that energy and make a pull request with specific improvements to the layout?
acbart··on Racket: Lisp for Learning
I love SICP, great ideas. Keep in mind I'm talking about your first real coding experience. You were a self-taught developer, right? Perhaps I'm over-inferring, but it sounds like you hit the curriculum right when you needed it. For about 80-90% of my students, that time wasn't right. The others, who were more like you, also probably got a lot of it.

As I said in another part of the thread, having it later in the curriculum makes sense. I'd love to subject everyone to a Programming Languages course. At Virginia Tech, they called it Comparative Languages. Here at UD, there used to be a Junior level SICP course. I wasn't around for it, but I think it was brilliant and well-timed. A lot of the problem came with trying to move those realizations earlier when folks aren't as ready for it - plus, all the other associated problems I raised.

acbart··on Racket: Lisp for Learning
You are correct! I considered whether I needed to make this distinction more clearly. I'm strictly talking about this approach (language and/or curriculum) being used in CS1. I actually have a lot of love for Racket itself - composing functions and passing selectors to higher order functions to make games and a Kitten Slideshow app still feels so cool even now.

As I brought up in the post, the domain was from a joking argument with my colleague. He started it when he bought ihatepython.com. The fact that he hasn't fleshed it out is a disappointment to us all :)

acbart··on Racket: Lisp for Learning
> Industry is moving towards FP.

... Citation required. My dad will be writing COBOL till the day he dies, and most of those lines of business logic in Java will bit rot before they get converted to Scala/Haskell/Something else.

I thought you were going to make the more palatable argument that most modern languages refuse to stick to one paradigm. The fact that Java has lambdas now demonstrates the appeal of these other approaches.

Saying that imperative programming will go out of date... Well, that's a bold claim. I vote we meet up in 20 years and whoever is wrong has to buy the other one a beer :)

acbart··on Racket: Lisp for Learning
I taught Racket last fall, and failed to find any major ongoing projects or products I could talk about with the students. It's really only used educational contexts and within its academic research cult, it seems to me. And the number of schools that are using it are dwindling.
acbart··on Racket: Lisp for Learning
And before any says it, yes, I do love the idea of students EVENTUALLY learning a Lisp/Racket kind of language before they graduate. I would even be happy with an entire course dedicated to it. But I don't want that to be the CS1. I've just seen it go so wrong for so long now.
acbart··on Racket: Lisp for Learning
Well, I'm pretty sure this is going to go badly for me in the end, but I might as well leave this here:

https://ihateracket.com

acbart··on CS50 IDE – Online IDE for Students and Teachers
Man, VPL is the weirdest combination of old and new. It works, though, I'll give it credit for that.
acbart··on Stanford CS Education Library (2001)
Yes, the learning objectives are all still relevant and will outlast me. I meant that the materials themselves are old and do not represent what's really going on in CS Education, from my perspective.
acbart··on Stanford CS Education Library (2001)
I mean, obviously. No one's going to seriously advocate removing systems programming from the core introductory sequence of undergraduate CS degrees. The learning objectives are still relevant, I meant the materials themselves are old.
acbart··on Stanford CS Education Library (2001)
Why is this being posted? I suppose it's interesting from a historical perspective, for what is available. This is so far removed from modern CS Ed that it's an interesting little time capsule, I guess.
acbart··on What every computer science major should know (2011)
> Racket, as a full-featured dialect of Lisp, has an aggressively simple syntax. For a small fraction of students, this syntax is an impediment. To be blunt, if these students have a fundamental mental barrier to accepting an alien syntactic regime even temporarily, they lack the mental dexterity to survive a career in computer science. Racket's powerful macro system and facilities for higher-order programming thoroughly erase the line between data and code. If taught correctly, Lisp liberates.

What a rude paragraph. I think this viewpoint is very unfortunate. I love functional programming, and I think everyone benefits from learning it, but this garbage attitude is toxic to students. The author cannot imagine a successful computer scientist who doesn't love the same PL paradigms as him. I would prefer to keep them away from my learners.

acbart··on The new Dropbox
Well, they're probably a little biased towards using Python, since they have the former BDFL just lying around :)
acbart··on JupyterHub 1.0
Well, it's a virtual server, so I'm not sure how that plays with things. I supposed getting more servers in play would help, but that feels more like throwing hardware at a software problem. It doesn't feel like JH should have this much overhead - is the kernel really doing so much work?
acbart··on JupyterHub 1.0
I'm not as up on the details as you'd probably want, but my understanding is that we're running it on a virtual server with a nice chunk of RAM and CPU locally at VT. I don't think we want to be at all reliant on external servers - this is FERPA protected data. Plus, the long term goal was to find a solution that other schools could adopt without being an R1.
acbart··on JupyterHub 1.0
I love JupyterHub, but we've hit some real headaches in having it scale. At Virginia Tech, we have an introductory course for non-computing majors where students are using Jupyter through JH. At around the 70-student mark, we have performance issues. Considering that the course is eventually meant to scale much farther (hundreds of students), we're not really sure how we can make further progress with our current resources. I hope this new version has some performance enhancements (though I don't see any in the changelog). Last I talked with anyone about this was in the NBGrader project[1], where other schools were hitting walls with scaling.

[1] https://github.com/jupyter/nbgrader/issues/530#issuecomment-...

acbart··on Inverse Live Coding: A practice for learning web development
It's true, but that will have to change if they want to start handling the volume of students we're being asked to handle.
acbart··on Inverse Live Coding: A practice for learning web development
The major crisis in university CS Ed is that there are nowhere NEAR enough qualified professors to teach all the subjects. There will not be enough in the next 5 years, assuming there is no radical change in qualification expectations. There are simply not enough PhDs being granted to keep up with the demand of students, and not enough students want to stick around and teach when they could be making tons of money in industry instead.

Universities have a short list of options. Having instructors who are smart and understand the material but may not be masters of it? That's a really good situation to be in, compared to the worst case scenarios. Sure, maybe Mark doesn't feel comfortable live coding in front of a classroom for web dev (a skill, by the way, that changes dramatically every year). But he's someone who cares about teaching, plays around with his teaching strategy, and is smart (I mean, he's freaking Mark Guzdial). With those three facts, his students are in a significantly better situation than the average university class.

I had to teach "Intro to Algorithms" the past two semesters. I got an A in that class when I took it, and I'm able to solve most problems from the textbook. Does that mean I can stand up in front of the class and solve any question from the textbook? Absolutely not. Does that make me less qualified than Skienna or Djikstra? Absolutely. Does that mean I can't teach the class? I don't think it does. I can build and grade assignments, I can lecture in class, I can answer most reasonable questions that students have, and I can build good exams that fairly measure my students' knowledge. I'm sure my students would prefer to have an instructor who can do all of those things and also be able to perfectly answer any possible Algorithms question they may have. But unfortunately, that person doesn't exist at University of Delaware - or if they do, then they're teaching one of the other required courses, and we couldn't spare them to teach Intro to Algorithms. It's just the way things are with hiring. I don't think my students' careers are going to suffer because I can't whip out a proof for the reduceability of Vertex Cover to 3-Sat live in front of them.

Ironically, I would feel extremely confident about live coding for a Web Dev course. Hopefully I get a chance to teach one at some point, because I'm pretty sick of teaching Intro to Algorithms :)

acbart··on If not SICP, then what? Maybe HTDP?
> I will say that the people who develop HTDP are the some of the people who spend the most time writing about pedagogy in computing education.

I don't think that's really true. Yes, the HTDP community, and Felleisen in particular, write a lot about Pedagogy. But Mark and Mike have them beat handily. Thinking about the CS Ed blogs I read[1], I don't think any HTDP folks have that much compared to others.

[1] https://acbart.github.io/2018/06/25/cs-ed-blogs/

acbart··on If not SICP, then what? Maybe HTDP?
Everyone on here is very excited about HTDP. You are mostly very smart people, and not representative of the typical CS student starting off. Many of you are driven and have rich STEM backgrounds that you draw upon. Therefore, I want to point out that there is no substantial evidence to prove most of the claims of "success" that the HTDP community claims, with regards to novice learners. There are certainly people who HTDP works amazingly for - I have met many brilliant folks who it resonates with. But I have met far more students who it does not work well for (I would describe them as having almost low-key PTSD from their CS1). The curriculum is too artificial and disjoint from the rest of their CS degree. I have met instructors who make it work fabulously, and their students apparently really buy into it. But overall, the claims that HTDP leads to better students is not proven by any literature I can find.

The closest thing I can find for good evidence is Fisler '14 [1], which did indeed suggest that HTDP teaches Functional Decomposition in such a way that CS1 students are better able to tackle short-but-complex problems by the end of their CS1. I find this work compelling, and I look forward to applying the ideas inherent to my own courses. However, in the decade-plus that HTDP has been around, I have not been able to find any long term studies that back up the slew of claims made about how we "should" teach CS1. Language and paradigm arguments in general have not really born out any evidence[2].

I'm not saying HTDP is bad or Python is good or C++ is ideal. I'm saying we don't know much about any of this stuff. Relying on theoretical arguments is dangerous when it comes to pedagogy. For every positive experience you can share about HTDP, I can share a negative experience. It's great if you found a curriculum that works for you. But be very, very careful about whether you believe that curriculum should work for everyone.

[1] https://dl.acm.org/citation.cfm?id=2632346

[2] https://www.researchgate.net/publication/329544316_Introduct...

acbart··on Best Paper Awards in Computer Science since 1996
CS Education venues never show up on these lists. In some cases, it's intentional and in others it's accidental. Either way, I wonder if we'll ever see the same respect as our peers in CS. It's a weird spot to be in.
acbart··on Ask HN: Companies using Racket?
Possibly. Of course, there is little evidence that the HtDP curriculum "does it right" while all others fail to do so. It seems to have a strong cult following, with little evidence to back up its touted advantages over other approaches.
acbart··on Ask HN: Companies using Racket?
Thank you for your advice. I am not going to do that. I have talked to many professors over the past decade who are successful in teaching the class.
acbart··on Ask HN: Companies using Racket?
Always a strong possibility. Although since I've always received high evaluations in the past, I'm not sure that's a good hypothesis.
acbart··on Ask HN: Companies using Racket?
I just finished teaching Racket for 2/3 of the semester. I have never had a group of students hate their introductory programming experience the way that they did with Racket. 0/10 will never teach Racket again the rest of my life, no matter how much I enjoy functional programming.
acbart··on Researchers analysed 1700 novels to reveal six story types
Trivially reducible to the concatenation of a Rise-to-rag and a Rags-to-rise tales! Clearly nothing new there.
acbart··on China now the most prolific contributor to physical sciences, engineering, math
I suppose you're thinking of these riots [1] after cheating was forbidden in university entrance exams in one Chinese locale?

[1] https://www.telegraph.co.uk/news/worldnews/asia/china/101323...

acbart··on Desperate for Data Scientists
I've had a few friends express interest in pivoting their domain knowledge + small programming knowledge into a Data Science job. Are there many success stories or guides out there for those who make such a transition? I went the formal route of getting the CS degree, so I never really thought about how you turn a non-CS degree into a CSy type job.
acbart··on The Python scientific stack, compiled to WebAssembly
I do a lot of work with Skulpt, which included adding (somewhat superficial) support for MatPlotLib. You can make line plots, scatter plots, and histograms. It's a pretty cool system, though I will say developing in it isn't always very fun :)
← PreviousPage 6 of 11Next →