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.
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
https://www.youtube.com/watch?v=dfKRNHRyD64
David Levitt demonstrating his musical improvisation software:
https://www.youtube.com/watch?v=ocwsVkqEKys
List of Logo memos from MIT AI Lab:
https://github.com/pdp11/sits/wiki/List-of-Logo-memos
Brian Harvey’s Personal Narrative on Snap!: Scheme Disguised as Scratch
https://escholarship.org/uc/item/1623m1p3
>In 2009, the University of California, Berkeley, was one of several universities developing a new kind of introductory computer science course, meant for non-CS majors, to include aspects of the social implications of computing along with the programming content. Scratch wasn’t quite expressive enough to support such a course (it lacked the ability to write recursive functions), soProf. Daniel Garcia and I thought “What’s the smallest change we could make to Scratch to make it usable in our course?” After 20 years teaching Structure and Interpretation of Computer Programs [Abelson et al.1984], the best computer science text ever written, I knew that the answer to “what’s the smallest change” is generally “add lambda.” I joined forces with German programmer Jens Mönig, who had developed BYOB (Build Your Own Blocks), an extension to Scratch with custom (user-defined) blocks, including reporters and predicates. [...]
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:
>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.
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.
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?