(I'm attending a conference right now and Mark Guzdial's keynote mentioning this very blog was excellent. Surreal to see it here.)
I was lucky that my secondary (high school) education included Classical Studies, because it gave me a taste of subjects outside of STEM. As a computer science educator I'm always thrilled when one of my colleagues in the Arts and Humanities department is open to collaboration. It's rare but I think it's valuable for both parties.
I sense that you want to imply that a successful programmer is a better judge of what aspiring programmers need to know about science and engineering, but I disagree: I would immediately go for the dual-Ph.D. physicist/electrical engineer (and yes, I would especially do that if I were the aspiring programmers, in this sense I put my money where my mouth is). Because of his qualifications, he has a much better general view about science and engineering that the successful programmer very likely lacks, and is thus in all likelihood the much better judge on this topic.
> ...he has a much better general view about science and engineering that the successful programmer very likely lacks...
Likely false. He is in a brutally demanding 1mm wide x 1km deep niche specialty. And the programmers he is exposed to are in a similar, adjacent niche.
I you interpret my "what aspiring programmers need to know" as "to do their jobs as programmers" - well...by definition, the successful programmer knows that (implicitly or explicitly).
If you interpret it more as general education requirements for young people these days - then I'd suggest a biologist, a climatologist, and a civil engineer.
You are reacting to the title, not the actual article.
1. The author is a CS professor who wanted to make a "CS for non-majors" course that non-majors would find actually useful/interesting. So he asked a historian colleague what she wanted her students to know about computers.
2. She replied that she wanted her students to know that (a) databases exist, and if properly designed/indexed can make complex queries very fast, and (b) websites can be automatically populated from the results of DB queries, which makes these search results human-comprehensible.
3. In his CS department, databases and HCI/web design are courses which come late in the sequence, after stuff like algorithms, data structures, and networking.
4. To make (2) accessible without a bunch of pre-reqs, he designed an extension to Scratch/Snap (block-based visual programming languages) which let novices more easily write SQL queries and generate database-backed HTML documents.
5. As a result, he can now teach history majors CS concepts in a way which makes their relevance to historical work directly clear.
In CS courses you teach students to be CS scholars so it's normal that you teach the fundamentals to make them achieve that goal. When teaching stuff to a people of different background you need to first ask why, why do you need this and then adapt the curriculum to that.
Anecdotally I’ve heard some CS professors rant about how we teach things all wrong to CS students, especially math and CS, by going bottom up and focusing on abstract building blocks and tools before presenting enough context or real-world motivating examples. One told me about some research into math education that flipped the normal curriculum for math students and went in a very different order than what we all learned in school, and the claim was that students were learning faster & better. If true that might be a tad interesting and surprising.
I graduated in CS in Italy. I had to take two mandatory physics courses in the late 80s. Those courses were equations-first with basically no real world examples. The teachers were from the Physics department and the courses for us were watered down versions of what they were teaching to their students there. Those courses were boring as hell, all math and nothing else. Luckily I knew what those equations were about thanks to the physics courses at high school: more watered down but firmly grounded in the real world. Probably the aim of those courses, in the first two years of the degree path, was to make people drop out. The statistics were one graduated every three freshmen. The goal of university was to make new scientists and everybody else, please go away we don't have time for you. That changed later on.
Yes these are legitimately real problems in university education, and not always talked about openly: that optimizing for student learning is not necessarily a primary goal, that ‘weeder’ courses exist to dissuade some people from certain majors, and that some departments and some professors aren’t interested in training people for industry, but only for academic research. Some of that was going on in my undergrad program as well, and it has been shifting toward being more industry friendly over time.
Are weeder courses really a problem? Some students are just not capable at that moment to take certain degrees. Maybe it's a lack of preparation from highschool, in which case the student needs to take some remedial fundamentals, or maybe the student just simply isn't interested in the field they got in under, either because of parental pressure or a misunderstanding of what the field actually entails.
Weeder courses signal to the students "Hey, if you're struggling in this class, it's not too late to switch majors". Every student "weeded out" frees up a disproportionate amount of resources for the rest of the students who are ready and willing to learn.
There’s a valid case for them, I wasn’t claiming they don’t serve a purpose from the department or university perspective.
But sometimes they are a real problem from the student’s perspective, especially when the class is made artificially difficult to pass, and this does happen. They are not always used to prune students who can’t handle a degree, they are sometimes used to limit enrollment in a program that doesn’t have enough capacity, which isn’t an issue with student preparation or capabilities.
On some level it does seem reasonable for Universities to pursue their own goals, and let industry find or sponsor some means of training their own workforce
I witnessed a situation when "surplus" physicists employed by the university were looking for some better justification of their employment and lobbied hard for extensive mandatory physics courses for maths and informatics majors. In the extent of, say, 20 % of the entire curriculum.
Their proposals were beaten back, but it took a lot of effort.
Czechia, 1998-1999. No tuition involved, study was still completely financed by the taxpayer.
I will say that I never understood math until I took a computer maths course and I never understood computers until I took a languages and os class. Seeing how math can be used to prove algorithms, how functions are just functions, and how math is just a language to describe actions and laws made it make sense to me. Same with seeing how computer languages are just ways to abstractly think of the actions and data a computer can have.
I absolutely love computer graphics for learning math and programming, it ties so many things together. Linear algebra, for example, becomes so tangible with 3d transforms.
Out of necessity, academia historically selected for students who could learn from being read to just once without much context, and there was little pressure to fundamentally change the education format. It's very easy to better serve most modern students by actually designing the program for those students for a change.
Debates over this get muddled by zero-sum concerns. E.g. catering to the average student hurts the top performers; putting applications first replaces rigorous education with training.
As someone who didn't understand math until I messed with programming, I absolutely agree academia goes about teaching math completely wrong.
The absolute lack of context and meaning to anything that was done in math education meant I never appreciated them, they were literally just wastes of time to me. Anything beyond simple arithmetic made no sense to me, because I was never taught how they made sense.
It was only once I started playing around with programming when everything suddenly clicked. All at once, concepts like variables and equations had meaning, I could sincerely understand what the numbers and letters stood for.
Math education in general really would benefit students of all ages more if they had more of the Hows and Whys before engaging in all the Whats.
I did some poking around to find the teaching materials resulting from this collaboration, but unfortunately it seems like they aren't available in full.
E.g. chapter 1 of the "Computing for Expression" ebook https://runestone.academy/ns/books/published/comp-expression... starts with "We saw the Riley Quilt program in class." and dumps a huge pile of Snap spaghetti on the unsuspecting reader, which makes it rather unsuitable as a standalone textbook.
A pity, because curating subsets of CS skills useful to non-CS folks seems quite promising to me.
Context: A history professor wants her (presumably history) students to build web sites to explain history research to the public. If good-enough-for-that-job visual programming tools are available, then teaching them javascript and SQL would, at best, be a time-sucking side quest.
Put another way, this is an example of people in tech seeing computers as the end to a means while everyone else rightfully sees computers as a means to an end (aka a tool).
It's natural for the CS professor to instinctively teach how computers work first, because the computer is the goal. The inner workings of computers are the means to an end: "How do I make a computer say 'hello world'?"
But for everyone else like the history professor, they want to know how and why making a computer say "hello world" can be useful to them and their goals. The computer is simply just another tool that might help them achieve something, and nobody cares about how any of it specifically works.
Yeah, I'm the one who sees tech an "end to a means" for thinking students should learn boring technology[1], while CS professors who use students to try out their custom-made visual programming kit are the ones who "rightfully see computers as a means to an end".
The history professor doesn't want to teach what a website is, she wants to teach why you might want a website; in this case to present information in a database. Therefore, how you make that website is completely irrelevant; the website is not the end here, it is a means.
You, on the other hand, are asking why she isn't teaching what a website is. So yes, you're seeing computers as the end to a means while the history professor is asking how computers could be a means to an end.
Does "boring technology" in a university context mean Sqlite and JS, which the students have never seen before and which the university doesn't use for teaching introductory courses? Or does it mean the existing education tool Snap which is already in use and familiar to students?
I bet more Freshmen already know basic SQL and JS than Snap. I know some primary/highschools teach Snap, but a lot more must be teaching JS. SQL as well, I know at least some highschools teach the basics and tbqh basic SQL queries are basically requests phrased in English. And it should be easier than ever now that LLMs are pretty good at taking requests actually phrased in English and turning them into valid queries. You don't need to learn relational algebra to learn 'select name from patients where age > 50;'
Did you know in the 70s and 80s, common undergrads (not CS students) used to program Fortran on punchcards? My mother was an undergrad biology student, when she learned I was interested in programming she pulled a dusty box of punchcards out of the attic to show me programs she had written. If colleges are using Snap instead of asking students to write some basic SQL queries, I think they're damning those students with faint expectations.
Not only that, but the history professor is gearing the goals towards particular professional goals and using the students to further them. I.e: "What do you want your humanities students to know about computers? How to help me professionally."
If any of those students in humanities need to do data science later for their own careers how does building websites with Snap help them?
You're wildly mischaracterizing and misunderstanding where the people who developed and inspired Snap! are coming from, and what their background and experience in teaching computer science and other subjects to kids and college students really is.
If you'll please take the time to read some of the things they've written, especially the The Beauty and Joy of Computing, and the long history of Scratch and Logo and Scheme that led to and inspired the development of Snap!, you'd probably find that you agree with a lot of things they say.
Definitely check out the rest of Cynthia Solomon's youtube video treasure trove, with lots of great stuff by Marvin and Margaret Minsky, Seymour Papert, and others from MIT and Atari Cambridge Research:
A gestural programming system developed by Margaret Minsky, Danny Hillis, Daniel Huttenlocher, David Wallace (Gumby), and Radia Perlman at the MIT-AI Lab:
Marvin Minsky demonstrating a Logo Machine with an acoustic modem and cassette tape, talking about education theory, and showing a part of his first "thinking" machine: a simulated nerve synapse (1 of 40) with an adjustable knob that he built in 1951 out of WW-II surplus hardware, and discussing playing with Tinker Toys as a child:
What do you mean by characterizing Snap! and its HTML extensions as a "custom-made visual programming kit"?
How is it "custom-made", and what's wrong with that?
The HTML extensions to Snap! are essentially just block based macros.
Are Lisp macros a "custom-made domain specific language", therefore it's bad to make websites with Lisp if you use macros because they're "custom-made"?
Paul Graham would probably disagree. What's wrong with using "any language you want", what's so "custom-made" about Snap!, and why is that a problem?
(This is an excerpt of a talk given at BBN Labs in Cambridge, MA, in April 2001.)
Any Language You Want
One of the reasons to use Lisp in writing Web-based applications
is that you can use Lisp. When you're writing software that is
only going to run on your own servers, you can use whatever language
you want.
> What do you mean by characterizing Snap! and its HTML extensions as a "custom-made visual programming kit"?
This is what I mean by custom-made:
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
To me the fact that someone had to create this for this class indicates that this is not a common and well-supported way to build database-backed websites.
> Are Lisp macros a "custom-made domain specific language", therefore it's bad to make websites with Lisp if you use macros because they're "custom-made"?
I'm not saying that making websites with any tech is bad, but I think students should learn how to make websites using standard tech. And that's how I understood the goal here: My students build websites. And maybe a freelance web developer would be a better teacher then a CS professor.
You're moving the goalposts. You said "custom-made visual programming kit" not "custom-made functions in a visual programming language".
It's strange that you would object to writing "custom made" functions in a visual programming language, while you seem just fine with writing functions in JavaScript. Why are "custom made JavaScript functions" ok but "custom made Snap! blocks" aren't?
It sounds to me like you originally misunderstood that Snap! has already existed for many years, and that you could "build your own blocks" with it (which was its original name: BYOB), and mistakenly thought the teachers wrote their own entire block based visual programming language just to generate html. And now you're trying to move the goalposts when it's clear that simply isn't true, because Snap! and the other block and text based programming languages that inspired (like Scratch, Logo, and Scheme) have decades of experience and widespread use in education.
And you're also totally missing the point that this is about a multidisciplinary university, not a trade school for pumping out code monkeys and search engine optimization "experts".
People definitely use this idea of choosing boring technology to justify the use of visual languages and/or domain-specific tools when building systems, instead of general-purpose programming. Lots of people might say go for FileMaker or Access over writing your own lower-level JS & SQL, if you want to generate a site or use a database to generate any kind of automated report or output.
To be honest, these types of posts come off with a level of smugness that I don't have words for. It's this holier-than-thou attitude that prevents us from getting people to use their computers better. Yes, there are 1,000 better options than a visual programming language. But to your point about "using boring technology" the professor chose the most boring technology available that will convey the message effectively. When considering an audience of Non-CS, possibly non-technical, people you will look like a jackass trying to tell them life will be better learning something more complicated. Not everyone wants to spend 6-12 months learning something just to start what they want.
It may humble you to go volunteer to teach adults how to program. Once you're outside the bubble of technically minded people it becomes very obvious how intractable the problem can become. If you're smart, you will arrive at the same conclusion the professor did. In some cases it's often better to start people off with PlaySkool My First Language than immediately plunging them into the depths of language hell. Especially if the goal is simply to improve their productivity.
An example from my personal life. I have taught business people how to think about programming. I generally will sit them down and teach them about Excel, Excel macros, etc. I don't use these in my daily life. I might prefer R, Pandas, or something else. If I recommended those to a non-technical person they would learn nothing. But if I teach them something they can click, play with, etc they will not only be more effective but perhaps eventually be inspired to spread their wings a little. It's not a hit to my ego and I don't look down on them.
> It may humble you to go volunteer to teach adults how to program.
Indeed I've never done that. I would have thought that college students are young and intellegent enough to learn to code, but if that's not the case, and they're supposed to learn how to make websites, then they should learn wordpress, or some other CMS that's actually used.
> An example from my personal life. I have taught business people how to think about programming. I generally will sit them down and teach them about Excel, Excel macros, etc.
Yes, Excel is a tool that's used in the real world, and that's the kind of tool people should learn.
We can reasonably presume these students are young and intelligent, but whether they have any interest in becoming computer programmers is a different matter entirely.
Remember, these are liberal arts students; their focus of learning is going down a completely different path from computer science or anything to do with engineering.
As the history professor wants to show her students, a computer can be used to construct a database of information and a website can be used to present that information for subsequent use. This is for furthering their subject of liberal arts, none of them care exactly how computers or websites work because it doesn't matter to them.
So long as they have a rudimentary understanding of what a database is, what a website is, and how they can be used for their goals of studying liberal arts, that's all that matters. They will likely just hire someone with the professional expertise to actually handle the database and website itself later in their careers, because their job is bigger than being a webmaster or a programmer.
It's like how the CEO of a company will want to know how a website could further his business endeavours, but wouldn't necessarily be interested in knowing what a website is because his job is running a company and not a web server.
Context: These visual programming tools were not in fact available but had to be custom-made. EDIT: This is what custom-made refers to:
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
If you want to learn something, you need lots of examples. You have that with javascript and SQL, and today you even have ChatGPT.
If you want to deploy websites you need something well-supported.
Snap! is hardly a "custom made" visual programming language -- version 9 was just released, it's been widely available for many years, many people and schools are using it, many papers have been written about it, there are many extension packages and forks for network, game, AI, and embedded device programming, even controlling embroidery machines and robots, and much thought and experimentation and learning from experience in the real world of college and high school classrooms has gone into it:
>The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum using Snap!, developed at the University of California, Berkeley and Education Development Center, Inc., intended for non-CS majors at the high school junior through undergraduate freshman level. It is a College Board-endorsed AP CS Principles course. It is offered as CS10 at Berkeley.
Your mischaracterization of Snap! as "not in fact available but had to be custom-made" is only true in the narrowest sense that every programming language, including JavaScript and SQL, were once not in fact available but had to be custom made.
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
I assume because it’s faster, easier, and requires less expertise to get started with a Visual Programming Language (VPL). This is why people use Scratch to introduce kids to programming, so maybe it makes for humanities students? But people have certainly been using VPLs for a long time for web site generators, for business automation, CRUD apps, point-of-sale systems, etc. There are lots of different goals people talk about with VPLs, including simplifying maintenance, limiting technical debt and over-engineering, having the ability to hire and employ people who have non-CS expertise, or just don’t have a CS degree, reducing training time, etc.
What do you mean by “insistence”, are you referring to this article or the broader ongoing existence of visual programming languages?
The vast majority of actual software engineers can't even write JS and SQL right.
It would make no sense to send humanities students on a wild goose chase trying to learn two harder languages when visual programming delivers the message just as effectively.
We often get lost in this industry thinking anyone can do what we do. We even see it with this new "ChatGPT is going to take your job" non-sense. The truth is what we do, when we do it well, is hard. If the goal is to deliver a greater point and use some programming construct as a conduit you can't get simpler and more effective than something visual.
Because Javascript and SQL are not the basic principles needed to get started. Logic, algorithms, loops, functions, variables, and other such things are. So you learn the basics with whatever tool is easiest, and then once you have those down, apply them when learning a new language.
> ... students use the HTML blocks to create a resume for a fictional or historical character in a homework assignment.
This is probably the most valuable exercise described in the article. It is essentially an exercise in art, where you can reflect on the path that someone you actually admired took, and what your own representation to the world looks like. The tone of the course materials about justice and power are sort of gross to me, but maybe the physical competence and reflection will imbue the students with more character and insight than their instructors. The "write the resume of a historical or fictional figure," idea looks like a really interesting project.
> The tone of the course materials about justice and power are sort of gross to me,
In what way?
I quite like the precrime cluedo, which will show what the problems with that approach are:
"Department of Police of Clueville, Pennyslvania has contacted you. They received a tip that someone planning a crime used our Eliza chatbot. They think that it was either Colonel Mustard, Professor Plum, or Mr. Green. The tip to the police said that the person was really angry and seemed to think that Eliza was a real person. “I think they told Eliza about their plans,” said the tip.
The fakelog.txt dataset is based on the log file from when our class was interacting with Eliza. Your job is to figure out: The IP address of who is planning the crime, what they said to Eliza, and see if you can figure out (a) the room where they are planning their crime and (b) what weapon the planner intends to use. (Hint: Probably mentioned on this page https://en.wikipedia.org/wiki/Cluedo.)."
>> The tone of the course materials about justice and power are sort of gross to me,
Which is:
> The focus of the course is on text, which is at the traditional heart of the humanities. We study how text appears and is used in computing, and how computation has changed the experience of text. Most of the text we deal with daily is on the Web. We trace the development of computational text from the early days to today’s Web, as a lens to understand computing’s impact on the world. We will address directly how early computing biased towards supporting only certain kind of texts for only certain kinds of people. The Web was created with a bias towards America and Europe, men, and most strongly, towards English.
Each section of the course will teach about computing, explicitly including programming, in the frame of justice. How was computing created, and for who and what purposes – both explicit and implicit? What computational skills, knowledge, and insights support critical study of the impact of computation on our lives?
I think there is a way to acknowledge that someone whose views are opposite to your own has done something valuable or made a good point without endorsing the rest of their views, and that the resume exercise is such a good idea that it rises above the disagreements in principle that are otherwise not reconcilable. I have irreconcilable differences of principle and axioms with the totalitarized, but as people, some of them are still capable of producing some useful ideas.
It looks like the author did not take their humanities conversation seriously. All the humanities person wanted was for the students to understand databases and the use of templates to present database information. Why the use of Snap at all? All the students need to understand is information is maintained in a database, and here's one simple way to make a template, which when run though this "software black box" replaces the template variables with database information. That software black box being nothing more than a string replacement engine. That is all they really need. The use of Snap feels like still clinging to the idea that the students "must program", when writing a template already is programming.
55 comments
[ 7.4 ms ] story [ 123 ms ] thread- A dual-Ph.D. physicist/electrical engineer, whose career had been spent doing "the hard stuff" fabbing modern x86 CPU's
- A successful programmer
Likely false. He is in a brutally demanding 1mm wide x 1km deep niche specialty. And the programmers he is exposed to are in a similar, adjacent niche.
I you interpret my "what aspiring programmers need to know" as "to do their jobs as programmers" - well...by definition, the successful programmer knows that (implicitly or explicitly).
If you interpret it more as general education requirements for young people these days - then I'd suggest a biologist, a climatologist, and a civil engineer.
The expert wanted to teach SYN/ACK, which is completely irrelevant to the non-experts.
1. The author is a CS professor who wanted to make a "CS for non-majors" course that non-majors would find actually useful/interesting. So he asked a historian colleague what she wanted her students to know about computers.
2. She replied that she wanted her students to know that (a) databases exist, and if properly designed/indexed can make complex queries very fast, and (b) websites can be automatically populated from the results of DB queries, which makes these search results human-comprehensible.
3. In his CS department, databases and HCI/web design are courses which come late in the sequence, after stuff like algorithms, data structures, and networking.
4. To make (2) accessible without a bunch of pre-reqs, he designed an extension to Scratch/Snap (block-based visual programming languages) which let novices more easily write SQL queries and generate database-backed HTML documents.
5. As a result, he can now teach history majors CS concepts in a way which makes their relevance to historical work directly clear.
In CS courses you teach students to be CS scholars so it's normal that you teach the fundamentals to make them achieve that goal. When teaching stuff to a people of different background you need to first ask why, why do you need this and then adapt the curriculum to that.
Weeder courses signal to the students "Hey, if you're struggling in this class, it's not too late to switch majors". Every student "weeded out" frees up a disproportionate amount of resources for the rest of the students who are ready and willing to learn.
But sometimes they are a real problem from the student’s perspective, especially when the class is made artificially difficult to pass, and this does happen. They are not always used to prune students who can’t handle a degree, they are sometimes used to limit enrollment in a program that doesn’t have enough capacity, which isn’t an issue with student preparation or capabilities.
Their proposals were beaten back, but it took a lot of effort.
Czechia, 1998-1999. No tuition involved, study was still completely financed by the taxpayer.
Out of necessity, academia historically selected for students who could learn from being read to just once without much context, and there was little pressure to fundamentally change the education format. It's very easy to better serve most modern students by actually designing the program for those students for a change.
Debates over this get muddled by zero-sum concerns. E.g. catering to the average student hurts the top performers; putting applications first replaces rigorous education with training.
The absolute lack of context and meaning to anything that was done in math education meant I never appreciated them, they were literally just wastes of time to me. Anything beyond simple arithmetic made no sense to me, because I was never taught how they made sense.
It was only once I started playing around with programming when everything suddenly clicked. All at once, concepts like variables and equations had meaning, I could sincerely understand what the numbers and letters stood for.
Math education in general really would benefit students of all ages more if they had more of the Hows and Whys before engaging in all the Whats.
E.g. chapter 1 of the "Computing for Expression" ebook https://runestone.academy/ns/books/published/comp-expression... starts with "We saw the Riley Quilt program in class." and dumps a huge pile of Snap spaghetti on the unsuspecting reader, which makes it rather unsuitable as a standalone textbook.
A pity, because curating subsets of CS skills useful to non-CS folks seems quite promising to me.
It's natural for the CS professor to instinctively teach how computers work first, because the computer is the goal. The inner workings of computers are the means to an end: "How do I make a computer say 'hello world'?"
But for everyone else like the history professor, they want to know how and why making a computer say "hello world" can be useful to them and their goals. The computer is simply just another tool that might help them achieve something, and nobody cares about how any of it specifically works.
[1]: https://mcfunley.com/choose-boring-technology
You, on the other hand, are asking why she isn't teaching what a website is. So yes, you're seeing computers as the end to a means while the history professor is asking how computers could be a means to an end.
Did you know in the 70s and 80s, common undergrads (not CS students) used to program Fortran on punchcards? My mother was an undergrad biology student, when she learned I was interested in programming she pulled a dusty box of punchcards out of the attic to show me programs she had written. If colleges are using Snap instead of asking students to write some basic SQL queries, I think they're damning those students with faint expectations.
If any of those students in humanities need to do data science later for their own careers how does building websites with Snap help them?
If you'll please take the time to read some of the things they've written, especially the The Beauty and Joy of Computing, and the long history of Scratch and Logo and Scheme that led to and inspired the development of Snap!, you'd probably find that you agree with a lot of things they say.
https://en.wikipedia.org/wiki/Brian_Harvey_(lecturer)
https://bjc.berkeley.edu/team/snap/
https://snap.berkeley.edu/research
https://www.snapcon.org/users/5
https://en.wikipedia.org/wiki/Cynthia_Solomon
https://news.ycombinator.com/item?id=36755836
Seymour Papert, introducing "The Turtle":
https://www.youtube.com/watch?v=-V_OPfmbbCk
https://www.youtube.com/watch?v=fTO-Ruby-Uo
https://www.youtube.com/watch?v=CJlRGe5QGhs
Also thanks to Lars Brinkhoff's research: Here's a video uploaded by Cynthia Solomon. Seems legit.
https://www.youtube.com/watch?v=c4kMzrDr4jQ
Definitely check out the rest of Cynthia Solomon's youtube video treasure trove, with lots of great stuff by Marvin and Margaret Minsky, Seymour Papert, and others from MIT and Atari Cambridge Research:
https://www.youtube.com/user/cynthiaso/videos
Seymour Papert on Logo, Turtles and Giraffes:
https://www.youtube.com/watch?v=maDzjHIiXZc
https://www.youtube.com/watch?v=lDyym_9-E-g
https://www.youtube.com/watch?v=ha8sTgtUejM
A gestural programming system developed by Margaret Minsky, Danny Hillis, Daniel Huttenlocher, David Wallace (Gumby), and Radia Perlman at the MIT-AI Lab:
https://www.youtube.com/watch?v=-Wq6SQTVM9M
Marvin Minsky demonstrating a Logo Machine with an acoustic modem and cassette tape, talking about education theory, and showing a part of his first "thinking" machine: a simulated nerve synapse (1 of 40) with an adjustable knob that he built in 1951 out of WW-II surplus hardware, and discussing playing with Tinker Toys as a child:
https://www.youtube.com/watch?v=c4kMzrDr4jQ
https://www.youtube.com/watch?v=S72xF3gd-mI
https://www.youtube.com/watch?v=yZRQQl8mA0c
How is it "custom-made", and what's wrong with that?
The HTML extensions to Snap! are essentially just block based macros.
Are Lisp macros a "custom-made domain specific language", therefore it's bad to make websites with Lisp if you use macros because they're "custom-made"?
Paul Graham would probably disagree. What's wrong with using "any language you want", what's so "custom-made" about Snap!, and why is that a problem?
https://news.ycombinator.com/item?id=606619
https://ep.turbifycdn.com/ty/cdn/paulgraham/bbnexcerpts.txt
Lisp in Web-Based Applications
Paul Graham
(This is an excerpt of a talk given at BBN Labs in Cambridge, MA, in April 2001.)
Any Language You Want
One of the reasons to use Lisp in writing Web-based applications is that you can use Lisp. When you're writing software that is only going to run on your own servers, you can use whatever language you want.
[...]
This is what I mean by custom-made:
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
To me the fact that someone had to create this for this class indicates that this is not a common and well-supported way to build database-backed websites.
> Are Lisp macros a "custom-made domain specific language", therefore it's bad to make websites with Lisp if you use macros because they're "custom-made"?
I'm not saying that making websites with any tech is bad, but I think students should learn how to make websites using standard tech. And that's how I understood the goal here: My students build websites. And maybe a freelance web developer would be a better teacher then a CS professor.
It's strange that you would object to writing "custom made" functions in a visual programming language, while you seem just fine with writing functions in JavaScript. Why are "custom made JavaScript functions" ok but "custom made Snap! blocks" aren't?
It sounds to me like you originally misunderstood that Snap! has already existed for many years, and that you could "build your own blocks" with it (which was its original name: BYOB), and mistakenly thought the teachers wrote their own entire block based visual programming language just to generate html. And now you're trying to move the goalposts when it's clear that simply isn't true, because Snap! and the other block and text based programming languages that inspired (like Scratch, Logo, and Scheme) have decades of experience and widespread use in education.
And you're also totally missing the point that this is about a multidisciplinary university, not a trade school for pumping out code monkeys and search engine optimization "experts".
It may humble you to go volunteer to teach adults how to program. Once you're outside the bubble of technically minded people it becomes very obvious how intractable the problem can become. If you're smart, you will arrive at the same conclusion the professor did. In some cases it's often better to start people off with PlaySkool My First Language than immediately plunging them into the depths of language hell. Especially if the goal is simply to improve their productivity.
An example from my personal life. I have taught business people how to think about programming. I generally will sit them down and teach them about Excel, Excel macros, etc. I don't use these in my daily life. I might prefer R, Pandas, or something else. If I recommended those to a non-technical person they would learn nothing. But if I teach them something they can click, play with, etc they will not only be more effective but perhaps eventually be inspired to spread their wings a little. It's not a hit to my ego and I don't look down on them.
Indeed I've never done that. I would have thought that college students are young and intellegent enough to learn to code, but if that's not the case, and they're supposed to learn how to make websites, then they should learn wordpress, or some other CMS that's actually used.
> An example from my personal life. I have taught business people how to think about programming. I generally will sit them down and teach them about Excel, Excel macros, etc.
Yes, Excel is a tool that's used in the real world, and that's the kind of tool people should learn.
Remember, these are liberal arts students; their focus of learning is going down a completely different path from computer science or anything to do with engineering.
As the history professor wants to show her students, a computer can be used to construct a database of information and a website can be used to present that information for subsequent use. This is for furthering their subject of liberal arts, none of them care exactly how computers or websites work because it doesn't matter to them.
So long as they have a rudimentary understanding of what a database is, what a website is, and how they can be used for their goals of studying liberal arts, that's all that matters. They will likely just hire someone with the professional expertise to actually handle the database and website itself later in their careers, because their job is bigger than being a webmaster or a programmer.
It's like how the CEO of a company will want to know how a website could further his business endeavours, but wouldn't necessarily be interested in knowing what a website is because his job is running a company and not a web server.
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
If you want to learn something, you need lots of examples. You have that with javascript and SQL, and today you even have ChatGPT.
If you want to deploy websites you need something well-supported.
https://forum.snap.berkeley.edu/t/whats-new-in-snap-9/14534
I've been writing about Snap! on Hacker News for years, including just recently, comparing it to Logo and Scheme and Scratch:
https://news.ycombinator.com/item?id=36755852
Here's the discussion of Version 5 from four years ago, and it's come a long way since then:
https://news.ycombinator.com/item?id=20309162
There's a whole book of computer science curriculum that's being taught at UCB and many other high schools and universities:
https://snap.berkeley.edu/bjc
>The Beauty and Joy of Computing
>The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum using Snap!, developed at the University of California, Berkeley and Education Development Center, Inc., intended for non-CS majors at the high school junior through undergraduate freshman level. It is a College Board-endorsed AP CS Principles course. It is offered as CS10 at Berkeley.
Your mischaracterization of Snap! as "not in fact available but had to be custom-made" is only true in the narrowest sense that every programming language, including JavaScript and SQL, were once not in fact available but had to be custom made.
> Undergraduate Fuchun Wang created a great set of blocks explicitly designed to look like SQL for manipulating CSV files. We used these blocks to talk about queries and database design in the class.
>If you want to deploy websites you need something well-supported.
That's not what Paul Graham believes.
https://ep.turbifycdn.com/ty/cdn/paulgraham/bbnexcerpts.txt
The final project of the course is a static web page. Databases need not be involved at all, much less JS code. Why not just HTML and CSS?
What do you mean by “insistence”, are you referring to this article or the broader ongoing existence of visual programming languages?
It would make no sense to send humanities students on a wild goose chase trying to learn two harder languages when visual programming delivers the message just as effectively.
We often get lost in this industry thinking anyone can do what we do. We even see it with this new "ChatGPT is going to take your job" non-sense. The truth is what we do, when we do it well, is hard. If the goal is to deliver a greater point and use some programming construct as a conduit you can't get simpler and more effective than something visual.
This is probably the most valuable exercise described in the article. It is essentially an exercise in art, where you can reflect on the path that someone you actually admired took, and what your own representation to the world looks like. The tone of the course materials about justice and power are sort of gross to me, but maybe the physical competence and reflection will imbue the students with more character and insight than their instructors. The "write the resume of a historical or fictional figure," idea looks like a really interesting project.
In what way?
I quite like the precrime cluedo, which will show what the problems with that approach are:
"Department of Police of Clueville, Pennyslvania has contacted you. They received a tip that someone planning a crime used our Eliza chatbot. They think that it was either Colonel Mustard, Professor Plum, or Mr. Green. The tip to the police said that the person was really angry and seemed to think that Eliza was a real person. “I think they told Eliza about their plans,” said the tip.
The fakelog.txt dataset is based on the log file from when our class was interacting with Eliza. Your job is to figure out: The IP address of who is planning the crime, what they said to Eliza, and see if you can figure out (a) the room where they are planning their crime and (b) what weapon the planner intends to use. (Hint: Probably mentioned on this page https://en.wikipedia.org/wiki/Cluedo.)."
Which is: > The focus of the course is on text, which is at the traditional heart of the humanities. We study how text appears and is used in computing, and how computation has changed the experience of text. Most of the text we deal with daily is on the Web. We trace the development of computational text from the early days to today’s Web, as a lens to understand computing’s impact on the world. We will address directly how early computing biased towards supporting only certain kind of texts for only certain kinds of people. The Web was created with a bias towards America and Europe, men, and most strongly, towards English.
Each section of the course will teach about computing, explicitly including programming, in the frame of justice. How was computing created, and for who and what purposes – both explicit and implicit? What computational skills, knowledge, and insights support critical study of the impact of computation on our lives?
Strange thing to be grossed out about, but hey..