sauropods.win is one of the many independent Mastodon servers you can use to participate in the fediverse.
A Mastodon instance for sauropod appreciators everywhere.

Administered by:

Server stats:

105
active users

Many people have said "teach everyone to code!" or cheer-leaded for "learning to code!" but there hasn't been enough discussion about what a Computer Science component to a liberal arts education ought to look like.

In mathematics we have many lists and trees of what mathematicians think people ought to learn, what order it should be learned in.

Not so in computer science. We just say "learn to code" this would be like if math people said "learn to integrate functions!"

Notice that "integrating functions" is an outcome, a specific skill. A nice one that implies you know a lot of math... maybe. But not all math curriculums end there. There is a robust debate in math education about if we obsesses about The Calculus too much, everyone understands that doing some integrals isn't "knowing math."

I think most CS educators understand something similar but there is much less consensus about what it is that we are teaching if not "how to code."

For me the major topics of a CS education for the general public are:

* Computer Hardware
* Encoding and Decoding
* Logic and Control Structures
* Iterration
* Objects & Functions
* Databases
* Ethics and Applications
* User Interfaces and Design
* Computer Networks
* Computer History

This list keeps changing every time I revise my courses which is every year.

I added functions with objects, but students learn about functions almost from day one.

**File Structures need a clear home.

If you asked experienced math teachers to list the core topics for k-12 math education you'd get a number of different lists, but the lists could be combined and grouped into what math education *is* (for better or worse) today.

I'm looking to be able to do that same thing for CS.

The one area I'm avoiding is so-called "digital citizenship" this includes "what happens when you post your photo online?" and "what is a good password?"

This is taught in HEALTH class.

@futurebird

I'm not entirely sure about several of these:

Computer Hardware

What level is this taught at? Logic gates are fun, but most people struggle to understand how you go from 'and gate' to 'mobile phone'. That's a huge leap. If you take it a bit further and talk about memory and compute (and sequential execution) then you've got some useful building blocks you're straying quite a way from hardware because it's the abstractions that are the important bit.

Encoding and Decoding

In the sense of encoding text as numbers and so on? Definitely core to computer science, but there's a lot there where even most practitioners don't really need to know the details, people who just want a side knowledge of computer science are going to get lost.

The core learning I'd want from this is people to understand that you can represent anything with numbers. The rest of it is information theory, and I'd teach that without direct reference to computers, with problems like:

  • Given 12 balls where one is heavier than the others, how many times do you have to weigh it to get the answer?
  • Given 12 balls where one is either heavier or lighter (but you don't know which), how many times do you have to weigh it?

Ans so on.

Logic and Control Structures

I'm not sure what this is. Flow control? Conditional and repeated execution is important. The computer science unplugged curriculum had some nice things for teaching this.

Iterration

That's weirdly specific.

Objects & Functions

It's really easy to get into the weeds with details here. A few things:

  • Do you think functions and procedures are the same thing?
  • Are objects the C model (blocks of data), the Alan Kay model (simple models of computers that communicate by exchanging messages), a language-level representation of abstract data types, or something else?

Databases

To actually understand databases, you need a solid grounding in set theory as a prerequisite. That seems a bit too specialised for a general class.

Ethics and Applications

Very broad, but important.

User Interfaces and Design

A lot of this also doesn't need to start with computers. The Design of Everyday Things has a bunch of good examples. Though you do get to have fun explaining to people why every dialog box on Windows has the buttons the wrong way around.

This has a lot of overlap with psychology, but it's nice to show people that this side of computer science exists.

Computer Networks

At the very least, teaching people the difference between an application, a service, and a protocol, would make the world a better place.

Computer History

Again, this is very board and the value can change a lot depending on what it includes.

The key thing that I don't see on the list is anything about systematic thinking and building abstractions. To me, these are the most important parts of computer-touching and run through a lot of the underlying computer science.

@david_chisnall

What would be your list? "I don't see on the list is anything about systematic thinking and building abstractions"

That's done through: Encoding and Decoding, Logic and Control Structures, Objects & Functions and Databases. Systematic thinking (using and designing algorithms) building abstractions (modeling, variables, etc) could be math or physics topics. What makes it CS?

This could be a misalignment of vocabulary. So it might be faster to tell me your list.

@futurebird I’m not sure I have a list. Coming up with a good taxonomy for computer science is something I’ve struggled with. At a minimum, I would like people to understand how to decompose problems into smaller ones (induction can help here as a concept, but it!s often taught as an ends to itself) and how to think about unambiguously specifying things so that they can be automated. These skills are essential to programming but are also generally useful. I’d also like people to learn some graph theory and queueing theory, because many real-world problems (as well as bits of computer science) depend on them.

Edit: The thing I’d like to see form any such list is why the things are important. There’s a lot that we claim is computer science (including a load of things other people claim are their own discipline, such as maths, engineering, psychology, economics, or physics). I’m not so interested in what an exhaustive list of ‘things that are computer science’ looks like (I don’t really think siloing knowledge is helpful), but in a list of ‘what things are traditionally regarded as computer science but should be general knowledge’.

@david_chisnall

What do you think the most powerful theorems of graph theory are in a CS context?

I love graph theory, but I find it's more about a framework for organizing problems, but it can feel thin on solutions.

I'm glad someone else who cares about CS sees the value of graph theory but since it's never been allowed in the "standard" math, much like CS, it's not as focused and distilled as Algebra or Calculus.

What is the "fundamental theorem of graph theory" what is the slogan?

@futurebird Algebra and calculus are in the curriculum for different reasons. Algebra is important as a tool for abstraction. Being able to express a general solution by abstracting over concrete values is one of the most powerful tools that we have for thinking.

Calculus is in the curriculum because of Sputnik. The USA redesigned the curriculum to produce people who could solve rocket equations to catch up with the USSR. Most of the western world copied this shift. In most cases, it is a complete waste of time. In the very few times when I have encountered a problem where the solution involved forming a differential equation, it never involved solving the equation because a computer can do that orders of magnitude faster than I can. The time I spent at school practicing these things so that I could solve one in 5 minutes instead of 30 was no help, given that I could enter on into a computer in a few tens of seconds and it could solve it in well under a second.

I would happily kill 90% of calculus in the curriculum.

Graph theory, to me, is closer to algebra. It’s not that there are specific things like A* that are useful, it’s that it’s an important way of framing problems. Once you understand graphs, you can understand finite automata. You can understand Markov chains. And you can understand how data is represented in most modern programming languages. It’s a tool for thought and the thing that gives it that property is, in part, the fact that it’s really hard to name the one thing that showcases it.

@david_chisnall

Teaching calculus just for doing physics is a missed opportunity. Calculus shows several reasonable ways to deal with infinity, counter intuitive aspects of infinite processes-- huge stuff.

Just because it was put there for one purpose doesn't mean that's what it must be.

If graph theory were taught by tens of thousands of teachers for decades it would change. Could be very exciting.

Might we anticipate some of that maturity since this is unlikely to happen?

myrmepropagandist

@david_chisnall

This is a subtext of what I'm talking about here with curriculum development. Teaching and lessons are proven *in the classroom* you can plan all you want but until you try it with students you know very little. Class time is precious, knowing the pitfalls, benefits and bonuses of how you present each problem and challenge can make a huge impact on what students learn.

A subject is forever changed by being taught to massive numbers of people many many times.

@david_chisnall

Were Calculus an obscure unsupported area of math and not promoted by outside forces it would probably be very difficult to teach as much as we do in the best-run courses.

There are also negative impacts when a subject becomes "mandatory" it can be watered down, it can become test focused. And I think educators are more aware of the negatives than the positives.

@david_chisnall

This also means that if we kicked out Calculus and put Graph Theory in its place I think many people would come to hate graph theory.

But, there would also be benefits.

@david_chisnall

Right now? If you know anything about Graph Theory it's because one of your teachers loved it or because you discovered you loved it yourself.

But, it's also a subject that's easy to get into ankle deep, then you step right off the continental shelf and its very very hard. I would love to have the time to make the kind of lessons and materials that could help change that.

@futurebird @david_chisnall Sign me up for those! This stuff keeps coming up in various coding I do and I'd love to get a formal grounding in it rather than the bits I've picked up here and there.

@futurebird This was my experience with topology. It is a short trek from donuts and coffee cups to very dense equations.

@futurebird @davew if you ever decide to give it a go again, consider the algebraic/synthetic approach :)

@davew @futurebird in GIS you cannot perform a network analysis without building a topology.

@david_chisnall @futurebird yes, exactly, and accessible materials beyond ankle depth is not easy to find!

@futurebird @david_chisnall

everyone hated sentence diagramming. Well, except me; I thought it was neat, but was saddened to realize the simplistic approaches necessary to teach sentence diagramming to a class of 35 children made many common sentences impossible to diagram. Oh well ... (No; 35 is NOT hyperbole; I was in Utah.) And of course, nobody said "this is a weird niche application of graph theory, a much broader topic you might learn more about if you get a math or cs degree."

@llewelly @futurebird @david_chisnall I gave up on sentence diagrams (as taught in elementary school) after trying to diagram a sentence out of a Charles Dickens book. But up to that point I loved them.

And now I'm all into knowledge graphs. Funny world.

@futurebird @david_chisnall

I have this to read properly this week ”Graph theory and combinatorial calculus: an early approach to enhance robust understanding”, Springer Nature

link.springer.com/article/10.1

In their ZDM-Educational journal which is OA. The usage of the term calculus in this context is weird to me but as a method of using Graph Theory to understand and teach Combinatorics what they describe is interesting.

SpringerLinkGraph theory and combinatorial calculus: an early approach to enhance robust understanding - ZDM – Mathematics EducationThe objective of this work is to show an educational path for combinatorics and graph theory that has the aim, on one hand, of helping students understand some discrete mathematics properties, and on the other, of developing modelling skills through a robust understanding. In particular, for the path proposed to middle-school students, we used a connection between k-permutations and colourings of graphs: we indicated a way to solve problems related to counting all the possible arrangements of given objects in a k-tuple under given constraints. We solve this kind of problem by associating a graph with the constraints related to the k-tuple and by using graphs’ colourings, in which every colour is associated with one of the objects. The number of arrangements is given by finding the number of colourings through an algorithm called the Connection-Contraction Algorithm. The educational path is set within the Teaching for Robust Understanding framework and the goal, from the mathematical skills perspective, is to enhance modelling, passing from real situations (the fish problem in our experiment) to mathematical problems (the graph’s colouring in our experiment) and vice versa through the use of technology (the Connection-Contraction Algorithm with yEd editor, in our experiment), by using an extended modelling cycle. The meetings with students were videotaped and some results of the experimentation are given.

@futurebird For good examples of curriculum, there are two places I’d recommend:

Computer Science Unplugged has done amazing work. Some people I worked with were involved in developing the material and I was really impressed with the result.

The new (by which I probably mean almost ten years old) GCSE Computer Science curriculum in the UK. This was created to be a useful introduction to the subject for 14-16 year olds. The BBC has some supplementary material. This is more designed as an on-ramp for a Computer Science degree rather than an ‘everyone should know this about computer science’. The curriculum is good, unfortunately most schools don’t have good teachers and so it’s actually made things a bit worse for admissions (if you want to a school that offers this and the A level, you have a head start on the first six months of a degree, if you went to a school in a poorer area you either taught yourself or start a long way behind).

www.csunplugged.orgCS Unplugged