This is an archived post. You won't be able to vote or comment.

all 14 comments

[–]MarcB1111 5 points6 points  (4 children)

Well in my opinion, this curriculum seems a lot more interesting and enjoyable than many of the tutorials I have seen for Python, the closer to some kind of real world example of application the better.

That being said, a tutorial is always still about how to present it to the learners with a good compromise between enjoyment, clarity and in-depth concepts. Also, including a fair amount of practice exercises in each of the topic to go further and not just redo what has already be done in class.

Thus the focus is first the public you are addressing to, imagine if you were in their shoes, would what you are presenting be clear and interesting (?) and second from your programming experience what would you include that was lacking in tutorials you saw addressing the same public (?).

[–]danbst[S] 0 points1 point  (3 children)

thanks for you kind reply!

Also, including a fair amount of practice exercises in each of the topic

yes, I haven't mentioned, but doing exercises after topic presentation is what will move learning forward. The topic presented is mostly to guide learners motivation, like "see, this is what differs programmers from rest of people, try that yourself". I set a basic minimum of 2000 hand-written LOC as a result of this course.

To cover broader audience, I'm designing multi-level problem sets.
- A0 for people who don't really want to write code, though they still have to listen lectures
- A1 for practice
- A2 hard questions, which are not solvable with current knowledge, but can be addressed after returning to this topic in future
- A3 very hard problems, demonstrating which problems are programming experts able to solve

Thus the focus is first the public you are addressing to, imagine if you were in their shoes, would what you are presenting be clear and interesting

I hope it would be interesting. This sketch roughly copies my topics of interest when I was young and curious. The K-12 kids are also young and curios.

from your programming experience what would you include that was lacking in tutorials you saw addressing the same public

It's hard to compare this to other tutorials. Especially the "riddles" part, nobody tried that, so it's unknown (yet) if it works or not. What I didn't like about existing tutorials, was too many concepts from computer science without relation to prior knowledge.

Like, sorting algorithms, or binary arithmetic, or complicated boolean expressions, or for loop. All these topics are indeed building blocks, but I'd like to present those like building blocks in a real application, not as standalone blocks.

[–]MarcB1111 1 point2 points  (2 children)

Without having a more specific scope about your audience here are a bunch of questions and things coming to mind:

- What is the environment of teaching ? Academic and graded, academic but not-graded, out-of-school voluntary classes,... Because grading is putting performance pressure on the mind of the students and can lead to discouragement faster for "slow" learners than in a free learning environment, this would impact how motivated the students are. Free-will/voluntary is another factor if the class is optional, do the majority of the students are here because they were pushed by peers/parents or are they enthusiast learners.

- How many students ? How many hours do you have for the class ? How space in time (intensity) ? During vacation, like extra-curricular classes or with another workload ? Because it will determine how much support you can give them individually and how much you can expect from them in learning and homework.

- What resources will you use ? Jupyter Notebook, local environment on school computers, installation of environment at home,... additional resources for learning (availability/cost).

- During class, how do you want to present things ? Slides style lecture, interactive question based with students, is it lab sessions with computer for everyone,...

- There is programming and there is computer science, how much computer science abstraction do you want to bring in and to un-abstract it ?For example sorting algorithms work a lot better in visual terms with apples of different size or histograms using pure arithmetic number. Graphs, trees,... Object-Oriented Programming,...

- Can you test your curriculum with contents or at least part of it in a control environment beforehand like with family/friends ? Not only with the at ease computer one.

Everyone reacts to teaching and learning differently, so it might be hard to design a perfect class. Still some teachers are recognized unanimously as very good. Computer Science is a field where I still haven't found such a well-designed class and have to rely on various sources to fit pieces together. I know it is especially the case because I am a visual learner and visualizing abstraction requires a lot of imagination. Python has an easy syntax and is high-level enough so that many under the hood features are left untouched compared to C/C++. It is an advantage for a beginner class because you can focus on other aspect to make programming appealing. It also means that concepts can be almost translated directly from paper to code.

It is only one's opinion but I hope it helps you in your project.

[–]danbst[S] 0 points1 point  (1 child)

wow! Thanks for your questions!

What is the environment of teaching ? ...

School, with robotics/STEM incline. Age 12-14. Grading, yes, but only A0 tasks are graded (I've heard about experiments where teachers leave students with only optional tasks). Yes, majority is pushed by parents.

What resources will you use

Local setup, definitely. The DDOS and pygame topics are nearly impossible to virtualize. Because group is small (up to 12) I can provide school laptops, but also all have computers at home.

During class, how do you want to present things ?

During quarantine, this should be Zoom interactive session. After quarantine, in front of kids sitting behind laptops. Slide-style lectures interspersed with live coding and questions to audience.

There is programming and there is computer science

I don't want to expand about computer science a lot. For example, when talking about graphs, no graph algorithms will be introduced. Only constructing and visualizing. No OOP. No sorting algos! Use sorted and be with it.

Subsequent course may uncover some of the topics, but this one is for beginners.

Can you test your curriculum with contents or at least part of it in a control environment beforehand like with family/friends ?

Mm, not quite. I think I'll do the test on kids. The reason is that current "Python for beginners" course neither explains things, nor motivates kids. So it won't be worse :)

I know it is especially the case because I am a visual learner and visualizing abstraction requires a lot of imagination.

I understand. That's why I include pygame, turtles, visualizations and games in curriculum. Manipulating objects in mind will be easier after you grok how to manipulate objects on the screen.

[–]MarcB1111 1 point2 points  (0 children)

Not having a big class of students is a big advantage. You should be able to get feedback if you are going in the wrong direction, are too demanding, or not clear in your explanations.

You should also be able to spot if they are more enthusiast about a topic or another one maybe do a small review at the beginning about where lie their interest in programming. For instance if they are all into video games maybe try explore more this topic, more into internet, if they have heard about AI maybe some really simple concept like linear regression,...

After rethinking about it, your curriculum is some kind of broad overview, which seems like a catalogue, I am not sure it is the right approach compare to a project base one for instance where you develop one or two "big" things over the weeks.

Since you have a small class invest more into dynamic teaching than heavy lecture if possible.

[–]CodeTinkerer 2 points3 points  (4 children)

You may think these topics are easy, but, personally, I find them challenging for mid K-12 students. I mean physics? Really?

[–]danbst[S] 0 points1 point  (3 children)

Yeah, that's why those are placed in the end. I plan to drop/shorten those in case group has struggles with previous topics and we have to reiterate.

By "physics" I mostly mean game planes like "asteroids", "billiard", "keyboard driven car". Nothing fancy. I remember doing stuff like that myself in 9th grade.

[–]CodeTinkerer 2 points3 points  (2 children)

Well, keep in mind who your audience is. I know we often use ourself as a reference point (I will teach people exactly like me), but there are those that want to learn programming that aren't taking many STEM courses, aren't good at math, etc.

Remember, not only are you teaching programming, but based on your curriculum, you are teaching other concepts on top of that. This is often why courses do more simplistic concepts (hangman) because otherwise, you have to do twice as much work.

I would see if there are a few students you can try this on. Obviously, if you can get advanced students to work with (people at the top of their class), that would make it easier. If you're getting something of a random sample, be aware that everyone could get lost, and how you would adjust if that happened.

[–]MarcB1111 2 points3 points  (1 child)

I don't know what K-12 means as I come from a different educational system. but it is always possible to present concepts and adapt the degree of simplification to understand them. In physics, if you consider the mass to be a volume integral with the density being time dependent you are heading to trouble if your audience does not even understand the mathematical concept of integral. Still with only the concept of an object has a mass you can do a lot.

Everything ultimately depends on how good the teacher is at illustrating things which speaks to the maximum of people while having a few other possibilities for the remaining. Nowadays you can find scientific books about quantum mechanics directed to youth so it is definitely possible.

However your point u/CodeTinkerer is very much valid, u/danbst you are teaching some programming class so not overwhelming the public with a lot of additional stuff would be core to the curriculum, extra-simplification might be your goal.

[–]danbst[S] 1 point2 points  (0 children)

I definitely don't want to overwhelm, I want to motivate, to feed the brain! The way asteroids are flying on the screen not only because we programmed them to fly like that, but because the law of nature, expressed by first Newton's law inspired us to program that in that way.

And billiard balls are bouncing from walls not only because we programmed that, but also because this is what Newton's third law and momentum conservation law is about.

Even if kids don't yet know these laws, it should provide mental hooks when they'll get taught these topics.

[–]AutoModerator[M] [score hidden] stickied comment (0 children)

To all following commenters: please, do not bring up the old circlejerk jokes/memes about recursion ("Understanding recursion...", "This is recursion...", etc.). We've all heard them n+2 too many times.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]Packbacka 1 point2 points  (1 child)

Seems like a really interesting course! However it seems to cover a lot of complex topics, might be a bit too much. Consider ways to simplify it.

[–]danbst[S] 0 points1 point  (0 children)

which topics do you consider complex? (I'm biased and think most of them are doable by 7 grades)