HNHacker News
TopNewBestAskShowJobs

acbart

912 karma · joined August 12, 2013

https://acbart.com
submissionscomments
acbart··on Pygame Zero: Creating games without boilerplate
Hi, thanks for your response and your passion for CS Ed! I like talking about it too, and I want to preface any conversation we have with my appreciation that we both care about this important subject. Text doesn't always do a good job of conveying sentiment on its own :)

It sounds like you are hypothesizing that my students have a motivation problem and proposing that I use an intervention of "Selling students on the magic of computers". Based on survey data collected during my past few semesters, I do not believe that my students are disinterested in the subject. This is true at the beginning and end of my course - I cannot claim that my assignments and course design (some of which is particularly oriented towards making the students interested in CS) has a big impact here, but I do not think they are being hurt by that aspect of the course design. There are potentially motivational issues related to self-efficacy, community interaction/isolation, and help-seeking behavior. However, I don't think your proposed intervention would solve those problems.

Instead, I disagree that my CS1 here at the University of Delaware is not the place to discuss the topic of avoiding global mutable state. My curriculum has several learning objectives explicitly oriented around these topics (largely agreed by my colleagues) and I have several projects that I think can authentically justify their importance (particularly with regards to testing and getting enhanced compiler support). I have many anecdotal supports from friends in industry and my own experiences teaching upper division courses that students struggle with issues that can be solved by avoiding global mutable state where possible. Personally, Therefore, since CS1 is not an agreed upon well-defined subject, I think I am perfectly justified including it in my learning objectives, alongside many other important topics and objectives.

If you have demonstrable evidence relevant to my teaching context that teaching global state early could impact areas where my students have other known issues (either motivational or cognitive), then I'd be very happy to read up on those. However, for now, I am doubtful that teaching global state is a serious issue.

acbart··on Pygame Zero: Creating games without boilerplate
Thanks! I wasn't aware of this library, so this is exactly what I was hoping to hear as an answer. I'll add it to our list to analyze.
acbart··on Pygame Zero: Creating games without boilerplate
I'm very interested in this project, because I have a student researching what good options there are for Python Game Dev at the CS1 level. We used Arcade[1] this past Fall, and things didn't go very well (I'm not sold on Pyglet, and there was a lot of small "What??" issues with Arcade's design itself). Pygame Zero is a very appealing choice, but suffers from its design around global state - which is something I spend most of the semester railing against. The authors gave me a good explanation for why[2], but it still is a deal-breaker for an introductory-level university course for CS majors.

At this point, we're leaning towards making our own library to satisfy our purposes. We're still looking at other options though - hey, if you have one, feel free to suggest it :)

[1] http://arcade.academy/

[2] https://github.com/lordmauve/pgzero/issues/174

acbart··on WebAssembly is easy – a hello world example
I thought that one of the major points of WASM was that it would be fast? The first advantage listed on the official WebAssembly website is "Efficient and fast" [0]. But I suppose you wrote "the point" - it's just one of several points. But ideally, it should run at "native speed", right?

[0] https://webassembly.org/

acbart··on Python Type Hints
Well if we're talking about K-8, that's probably true. I don't know about high school. For undergraduate students, you better believe that they'll find out what languages are "real" and "not real" very fast. Whether they're at all accurate is another matter, but they pick up opinions. Whether it's their cousin at another school or that one kid in the class who's been hacking since he was five or just a grumpy senior, someone will come in and fill their heads with something. I have my own set of (hopefully well-educated) biases I give them, but I don't like having to argue too much with them when we're starting out.

A new Pascal would be nice. I loved how much we had to set things up. You start off the entire program by listing out all the variables and types you need! What a fun concept. That would be nice to enforce with my students.

acbart··on Computer Science from the Bottom Up (2016)
I've run a lot of surveys of introductory students trying to find what topics are more or less interesting to them. A part of my dissertation was committed to it, actually.

At this point, I'm more or less certain you'll rarely find situations where you have a mass-appealing context. One students' dream context is another students Most Boring Possible. You're probably better off having many diverse contexts and hit all the MUSIC guidelines (eMpower students, Useful to their long/short term goals, make students Successful, make it situationally and domain-based Interesting, and give people opportunities to demonstrate that they Care about each other).

acbart··on Python Type Hints
You will find very few students eager to learn Pascal in 2019 as their first introductory language.

I say this as someone who grew up in the 90s with my father's Pascal textbook and a deep love for Turbo Pascal.

acbart··on Python Type Hints
Python.
acbart··on Computer Science from the Bottom Up (2016)
Isn't it amazing how people pass courses, even perhaps demonstrate mastery at a point in time, but manage to get to later courses without fully understanding things? Students end up with a very strange mental framework by the time they graduate, and it seems like most students actually know shockingly little. I don't know that there's a solution, or even that it's an issue. To me, this is simply a reflection of how people learn.

Regardless, this seems like a nice little document for those 20% of students who are still willing to read supplementary materials. Then again, this is short and clear enough that if it were properly chunked within a course and had graded assignments attached, many students would probably actually skim it.

If you ever want to develop this some more, I hope you'll consider something like Runestone[0], in order to give it some auto-graded questions along the way!

[0] https://runestone.academy/runestone/default/user/login?_next...

acbart··on Computer Science from the Bottom Up (2016)
I'm assuming you have some concrete curriculum in mind, but I'm curious how what you're thinking of compares to something like the learning objectives spelled out in the CS Curricula 2013[0]?

Personally, going through OP's site, I was nodding my head and comparing it to what I learned in my undergraduate CS degree. Some of it is dated, but most of it connects to the Architecture and Operating System classes I took.

[0] https://www.acm.org/binaries/content/assets/education/cs2013...

acbart··on Python Type Hints
I started teaching my introductory Computer Science class with static types this past Fall. Although there's a slightly larger initial learning curve, the long term benefits are pretty massive. I have to do more data analysis, but my sense is that certain conversations go much, much easier.
acbart··on Remember QR Codes? They’re More Powerful Than You Think
Hah! Reminds me of Piet: http://www.dangermouse.net/esoteric/piet.html
acbart··on Coffee Is Hard
This speaks to me. I used to spend my childhood tweaking and retweaking my game engines. Never really got my games past the cool demo phase. I guess I also now stay with maintainable systems too.
acbart··on Identifying a person through walls from video footage, using only WiFi
Wait, what the heck, why did they pick what is apparently a popular hate symbol for white supremacists? The first google result takes me to: https://www.adl.org/education/references/hate-symbols/1488
acbart··on An erroneous paper on religion and generosity is retracted
Or that the material will be taught effectively. Or that the students are contextually prepared to understand the material at that point. Or any of a number of other things that go wrong when people suggest that education is the solution/root to a very hard problem :)
acbart··on When the A.I. Professor Leaves, Students Suffer, Study Says
Yes, this exactly. I'm an assistant professor who's fine with my salary and position, but I can see firsthand how difficult it is to recruit and retain excellent colleagues.
acbart··on Jeffrey Epstein’s Donations Create a Schism at M.I.T.’s Media Lab
Negroponte really boofed up with the One-Laptop-Per-Child project. It had a lot of good intentions, but it's such a textbook example of misguided tech folks inserting themselves into an education setting. From this article, sounds like another strike for him.
acbart··on A Beginner’s Introduction to Python Web Frameworks (2018)
I was forced to encounter Web2Py in an open-source project several years ago. It was awful. Besides the fact that it's stuck in Python 2 (seriously, even today?), it had a lot of bizarre design decisions. For instance, it loaded controllers by concatenating files in a directory - alphabetically. I know Python's import system can confuse some folks, but surely there was a better way. The whole thing left a very sour taste in my mouth, so I rewrote the application in Flask - unfortunately, the lead developers didn't seem interested in my fork. I've moved far away from their project, but I'm not sure what they're going to do come 2020.
acbart··on Thoughts on Racket2
One of the biggest problems is that these language designers, who want to design an "idealized" language, continue to make big decisions without regards to any kind of actual data collection. I just had the chance to meet and talk with Andreas Stefik, who summarized the utter and embarrassing lack of research by the PL community about actual language usability[1]. I'm not exactly jumping into line to adopt his evidence-based language "Quorum", but thank goodness that someone cares enough to do actual HCI research instead of just arguing theoretical merits. My own history and feelings about Racket are with regards to its connections with the controversial "Program by Design" curriculum - feelings that are both complicated and narrow (all revolving around introductory computing contexts). But I certainly resonate with this quote from the article:

"But in the last 60 years, simply grab­bing these dissenters by the lapels and fumi­gating them with the stinky garlic breath of paren­the­sized S-expres­sions has not been a winning strategy. If Lisp parti­sans want different results in the next 60 years, we need to try some­thing new."

[1] https://quorumlanguage.com/evidence.html

acbart··on Racket: Lisp for Learning
Great! I'm glad you found a path to computing, that is truly wonderful! And I'm not surprised that this approach worked so well for someone.

Now, let's make sure we're finding ways that can generalize. It's an important problem in the world today.

acbart··on Racket: Lisp for Learning
There are many scholarly CSE venues. Ironically, this subgroup mostly avoids almost all of them except ICER, because they feel persecuted. Since I'm relatively new, I'm not clear if the persecution caused their rudeness or vice versa - although I have been told by several people that that's why most people avoid them. I'm actually a little amused thinking about them being offended by my "hate" domain - I'm clearly recalling an experience on CS Ed Twitter, watching that group tear down an author's work publicly because they disagreed with it. I would say they were a pretty offhandedly brutal, even when the author showed up. Since they clearly respond better to this kind of honesty, it seems like I shouldn't be saying things halfway.

Anyway, this kind of experience report would be totally unsuitable for ICER, which is the venue focused on true CS Ed research. This might have a life at SIGCSE, but why go and preach to the choir? And honestly, I don't think it really does merit the level of research publication. This is just a blog post level argument.

I did outline why this site exists. And I do think that this is worth sharing on here, if only because this site drives me nuts sometimes with all its arm chair CS Ed researchers. If I only persuaded a few folks to stop citing HtDP as god's own truth, and to approach that community more critically - I would say that is helpful. Hacker News folks need to understand that education is a heck of a lot more complicated than they probably think it is, and their experiences probably aren't generalized.

I also think that the Racket education community is dying out. For good or bad, I don't think I really have to start publishing research to try and speed it up. But I think that having these reasons and arguments recorded, and written publicly, is a good thing. I am trying to keep in mind, as I write, that some day someone may write some blog posts for "ihateblockpy.com" or "ihatecorgis.com" (my research projects). Perhaps I'll be eating my own words!

acbart··on Racket: Lisp for Learning
I went in and killed the relevant CSS - hopefully that makes it a little easier to read?
acbart··on Racket: Lisp for Learning
I would certainly accept a wide range of other languages. I picked Python because I think I and many of my colleagues can teach a good CS1 in Python. I'm open to a lot of other options.

But not Haskell. Please don't say Haskell :)

acbart··on Racket: Lisp for Learning
And I hope you will learn some empathy some day and understand the perspective of others. We all have some growing to do, it seems.
acbart··on Racket: Lisp for Learning
> How stable has racket been compared to the alternatives?

Why does the stability of Racket matter? Isn't the real question more about how easy it is to reuse, readopt, reshare, find, etc. materials? I'll point out that the CSEngageEdu site doesn't have a Racket section. If you want me to find 100 programming problems in Python, I can do so immediately (because I published more than that, and I know others who have published even more). It's a simple fact that there's more community and infrastructure around Racket. There's been some interesting arguments that we shouldn't let that stop us - what about the future? But the reality is that right now, it's harder to teach in Racket, and I don't see any compelling evidence to prop it up further.

> Is there any data about how well the students do following each language choice?

I'm sorry, I had to laugh out loud. You've asked a really reasonable question, but it's one that the CS Ed community bickers about endlessly. I wrote a paper for SIGCSE about trends in what we talk about on the SIGCSE Mailing list. Seriously, every few years we get into the argument. Actual data seems to suggest very little. Heck, it's so hard to compare with all the confounding factors and individualized components that it's probably not really meaningful to get a simple answer. Ultimately? It probably doesn't matter. If you can teach 90% of my students with Racket the way I teach 90% of my students with Python, and you have the time and energy, then that's probably fine. But the simple reality where I'm at is that that's not the case - students who were taking Racket here before I arrived were being traumatized (and I suspect it's true at more places than the Racket folks want to acknowledge). If they don't want Racket, and I can teach a good CS1 in Python or Java or JavaScript, why should I fight that? Language choice doesn't really influence pedagogy as much as we might want to think it does, per this quote from the beautiful Meta paper that came out earlier this year:

> “Given the perennial question of which language, if any, is best suited for the teaching of introductory programming, many papers describe empirical comparisons between languages, often finding no significant difference in learning outcomes, but sometimes finding differences in student satisfaction.”

> “The choice of programming language is clearly a highly subjective one and is driven by many competing factors. It is clear that the literature will continue to host publications making the case for different programming language choices — and that no paper or series of papers will ever put an end to the debate, as no programming language will ever satisfy all of the conflicting requirements of an introductory programming course.”

acbart··on Racket: Lisp for Learning
> Some research is better than none.

Yes, so we should look at the relatively more massive amount of research done for languages like Java, Python, etc. SIGCSE and ICER and ITiCSE are full of them. We've learned a lot - learning is hard :)

> Intentionality in the design of a curriculum is better than an ad hoc curriculum.

I strongly agree. I wish I could impart to you how involved I am in Instructional Design with my work. I don't know if this will help, but here's a sample from what I was doing last year: https://acbart.github.io/python-sneks/

> The design recipes give you an excellent foundation for transitioning to a statically-typed programming language with algebraic datatypes.

I'm not clear that that's more than a theory. Even if it's true, is that necessarily the major goal in CS1? Perhaps, but you'll have to convince a few of my colleagues of that.

acbart··on Racket: Lisp for Learning
What kind of context are you looking for? What audience? Is a book the only option?

In general, people learn from presentation of material, participation to demonstrate understanding, and then receiving feedback. They need to be motivated and engaged. If you're asking how I would suggest someone self-learn something, I would suggest that they find a cool project that they're excited by, and then offer resources based on that. Ideally ones with interactive feedback and tons of examples.

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.

← PreviousPage 5 of 10Next →