Tuesday, July 05, 2022

Teaching Computer Science–Moving atoms not pixels

On my first visit to the Lifelong Kindergarten Group and the MIT Media Lab, I notices a message on the windows. “Some people would rather move atoms than pixels.” That has stuck with my for years now. And it is quite true. Robots, game controllers, Internet of Things, and more are ways that computer science interacts with physical objects and not just pixels on a screen. These are ways that teachers can bring more students to more interesting (to the student) to get involved with computer science. But where to start?

Recently I posted curriculum resources that are especially good for teaching traditional computing courses. Well, cyber security is a bit new but anyway. Read that post at Welcome New Computer Science Teachers Today I want to provide some resources to bringing physical computing into the classroom.

Starting with a couple of devices that operate as “brains” for deeper involvement.

Raspberry Pi and the Micro:Bit are two of the most popular. Arduino and the Lego ev3 have been around for longer and are in wide use as well. One could get lost exploring all that LEGO Education has to offer. The Arduino Online Shop has a lot of resources as well.

Personally, I am a fan of both the Raspberry Pi and the Micro:Bit. Both the Micro:bit Educational Foundation and the Raspberry Pi Foundation have a lot of resources. Those are great places to start your exploration.

Ok, let’s talk hardware. While the sites for the Pi, Micro:Bit, Arduino, and Lego EV3 have a lot of links to resources there are more places to go depending on your interests.

Two of my favorites are AdaFruit Industries and Kitronik Ltd. They have devices that work with a lot of "brains." They have devices for all sorts of robotics or Internet of Things projects. I can spend hours looking through both getting idees for projects.

Also for the Internet of Things, I have bought a bunch of devices from Phidgets Education. I have been using these sensors and controls with Raspberry Pi in Python but Scratch, MakeCode, and Java are among other language choices. Speaking of MakeCode, that is an awesome platform for programming Micro:Bits.

I recently discovered Jacdac from Microsoft Research. Right now these devices only work with Micro:Bit but Raspberry Pi and a USB connection for laptops/desktops are projected for the future.

I could, and probably should do a post just about robots and robotics. But here are a few places to get started.

I promise a more comprehensive post of robotics soon.

Sunday, July 03, 2022

Welcome New Computer Science Teachers

Spring is an interesting time on social media. I help moderate a couple of CS teacher groups on Facebook and let me tell you, membership is booming! Why? Well, several reasons. For one thing a lot of teachers have been voluntold that they are going to teach computer science in the fall.Some have never taught CS before. Others have some CS background but are being asked to teach a more advanced course. In general, a lot of teachers are looking for help getting ready.

Hopefully, all CS teachers join the Computer Science Teachers Association (CSTA). There are both free and paid levels of membership. I am a paid member (AKA CSTA+) It’s worth it for the extra benefits. You’ll want to join and get active in a local CSTA chapter as well.

A book I highly recommend for anyone teaching computer science is Computer Science in K-12: An A-to-Z Handbook on Teaching Programming I can’t tell you how much I learned from this book.

Instructors are many Advanced Placement Summer Institutes are pointing teachers to Facebook groups. Two favorites for AP CS teachers are:

They're both outstanding resources for teachers of those courses.

Many people also join Computer Science Educators which is a wide ranging group for CS teachers.

Cyber Security is getting huge in schools (which is a good thing) and there is a great Facebook group for that. Cybersecurity Educators

If game development is your thing there is the Unity Teach Community group.

If you’re teaching an advanced placement course, hopefully, someone has pointed you to AP Summer Institutes. Really valuable for first time AP teachers.

There are also some curriculum providers that offer training and resources. A few of them are:

  • code.org – they offer several levels of courses including pre-AP courses as well as AP courses.
  • CMU CS Academy – curriculum, resources, and (I think) training
  • CodeHS – Curriculum and resources
  • CYBER.ORG – Cyber security resources, training, and curriculum
  • Project Lead The Way – curriculum, training
  • Bootstrap – CS with math, physics, or Data Science

I’ll finish off with a couple of blog suggestions

  • Mark Guzdial – He’s currently doing research on teaching other subjects using computer science and what he calls “Teaspoon Languages” but he has a lot to say about how to teach CS.
  • Mike Zamansky – Mike is building a program to teach CS teachers at Hunter College in NYC. Mike shares a lot of good advice and ideas about teaching.
  • Garth Flint – Garth teaches at a small private Catholic school where he wears a lot of hats. He has some interesting takes on things and shares a lot of good ideas.

I’ve only scratched the surface here of course. But they’re a good start with places to ask for more help. Welcome to teaching computer science!

[Edit] if you are interested in using some physical devices in your course check out Teaching Computer Science–Moving atoms not pixels

Monday, May 16, 2022

BINGO Inspired Projects

My son’s school, he’s principal of an elementary school, had a Bingo themed fundraiser yesterday. I can’t help but think about how things are done with any event like this. My first thought was about the Bingo cards themselves.

Typical Bingo cards consists of a five by five grid. The letters B I N G O label the columns and each column has a random number. The center square of the grid is a “free” square and doesn’t have a number. Obviously, generating Bingo grids is a logical project. The numbers in each column must be without a specific range and duplicates are not permitted.

The next obvious project is one to “call” the numbers. The numbers must be identified by number and column where the column is identified by the letter above the column. Drawing duplicate numbers is not permitted so keeping track of numbers drown is important. Keeping track of numbers drawn is also important for verifying Bingos. A program should have a way to do that . This becomes a user interface problem as well as a data storage problem. That may be the most interesting part of the project. At least it is for me.

Now if you really wanted to get complicated, one could design a system where Bingo cards are numbered and their contents stored. One might then be able to use that data with the data of numbers drawn to verify if a Bingo was on the card using only the number of the card. I see this as a group project where individual students would write parts of the program and have them work together. A lot of planning would have to go into this of course.

The Bingo at my son’s school used a traditional ball cag. That seems more fun somehow than drawing the numbers on a computer. That doesn’t mean that software would be a bad way to keep track of numbers drawn and used to verify a Bingo. Another project idea perhaps?

On the other hand, the whole idea opens a discussion of “just because something and be computerized does that mean is should be?” The human factor is an important one. I’d love to have student discuss the pros and cons of computerized Bingo and old fashioned ball cages and physical tracking of drawn balls. Which is more authentic? What does authentic even mean?  That discussion might be just as useful as discussion of what data structures should be used to track Bingo numbers.

Friday, May 13, 2022

Teach CS in K-12? Please Help Gather Data

The Computer Science Teachers Association (CSTA) and the Kapor Center are conducting a survey of K-12 computer science teachers in the United States. The CS education landscape continues to evolve, and we want to hear directly from teachers about your experiences, challenges, and what resources would be most useful to you at this time. Having detailed and current information allows policymakers, curriculum & PD providers, State Departments of Education, membership associations, and other organizations to better understand and meet the needs of teachers. Results will be used to make specific recommendations to improve support for CS teachers.

If you teach K-12 computer science, we need your voice!

We invite you to participate in this national survey, which will take approximately 20 minutes of your time. Responses are confidential and optional.

As thanks for your time, the first 3,000 teachers who complete the survey will receive their choice of a $10 Tremendous gift card. All participants will be entered in a raffle for one of five $200 gift cards.

Please encourage other CS teachers to also complete the survey, and if you have any questions, please contact membership@csteachers.org or research@kaporcenter.org. Many thanks again for contributing vital insights to improving K-12 computer science education!

With appreciation,

CSTA and Kapor Center

Build

Learn more about the Computer Science Teacher Association here.

Learn more about the Kapor Center here.

Wednesday, April 13, 2022

Last Mile Education Fund–Making a Big Difference

We often underestimate the difference that small things can make. When I was in high school all I could afford was a cheap plastic slide rule (no calculators back then) and it really slowed me down with math. I sometimes wonder what a more expensive and accurate slide rule would have done for me. I had other privileges and did well in the long run. But that is not the case for everyone.

Privilege often gets conflated with potential when in fact a lot of potential gets short circuited because of obstacles that are more common for non-privileged students. Things that are non-issues for many become showstoppers for far to many others.

Picture a student with great potential in computer science who can’t afford a good laptop? Or cannot afford her textbooks or lab fees? Low income students often take longer to graduate because they don’t have adequate preparation and need some extra courses and time to catch up. That often means they run short of funds even with the finish line in sight.  Even good scholarships often leave gaps in funding that limit students from underprivileged backgrounds.

That’s where the Last Mile Education Fund is making a difference today. From the mission statement of the Last Mile Education Fund:

  “The Last Mile Education Fund takes an abundance approach, investing in a broader group of students already committed to technology and engineering fields, providing support for challenges they face beyond their control, and incubating them to be the next generation of innovators. “

Last Mile Education Fund invests in striving, low-income students pursuing degrees in the high-demand fields of technology and engineering to support them in their last mile to graduation and into a career.

A number of grant programs are available. Some of them specifically for female and non-binary students but a number of them are available to all genders.  The Microsoft Cybersecurity scholarship is for community college students of any gender for example. Full information about these opportunities is available at the Current Funding Opportunities page. I have links attached to some that have pages with more details.They include:

  1. EMERGENCY MINI-GRANTS
  2. Bridge Grants
  3. LAST MILE GRANTS
  4. MICROSOFT CYBERSECURITY SCHOLARSHIP PROGRAM
  5. NORTH TEXAS BIOTECH WORKFORCE FUND
  6. REU PARTICIPATION FELLOWSHIP

If you know of students who could take advantage of these grants please spread the word.  And let teams/people at universities and colleges who support low-income students know about these programs as well. They can help a lot of high potential students with some hurtles that could but shouldn’t hold them back.

Monday, March 21, 2022

Word Games and Cryptography

My latest discovery, thanks to Doug Peterson, is Crazy Phrase. Crazy Phrase is something of a variation of Wordle except that in Crazy Phrase the player is a phrase to discover. Clues are similar to Wordle with visual clues like green being a letter in the right place, yellow being in the wrong place but in the right word and blue being a good letter for the phrase but placed in the wrong word.

I was a bit intimidated when I first visited this new puzzle. I soon realized that some things involved in decoding cryptograms can be helpful. As with Wordle, looking for common letters is particularly helpful. With phrases we have the added option of looking for common words. This is especially true with two and three letter words. Words like “to”, “on”, “of” and the like can be very helpful in spotting the direction a phrase of going.

There is a proliferation of games on the internet inspired by Wordle these days. They offer a lot of possibilities for teaching problem solving. Creating new versions of games is an obvious programming project. Discussing these as cryptography related is an other possible topic. The use of computers to analyze strings is widely used for many applications so getting students to think about the process as used in games can be very helpful. And fun.

Tuesday, March 08, 2022

APCS A–Java or Python?

There is a lot of discussion about moving the Advanced Placement CS A exam to Python from Java. The Collegeboard is reluctant to do so. They see APCSA as the equivalent to CS1 or the first course for CS majors in university. They cite research that indicates that APCSA students for very well in CS2 (usually data structures) and that CS2 is almost always taught in Java or C++. On the other hand, at many universities the purpose of CS 1 is growing and the audience is widening to include students from many different majors. I wrote about that yesterday (What Should APCS A Really Be About?) Mike Zamansky took it on on his blog as well (SIGCSE 2022 - What language APCS-A part 1 - the intent)

It seems like we have to first agree on the intent or purpose of APCSA (and CS1) before we discuss language. Given that agreement is never going to happen – CS people can’t agree on anything. So I will start my discussion from the standpoint of APCS A should increase diversity in computer science and prepare students for using computing in CS as well as other disciplines.

This is a concepts first decision not a language first decision. I feel that non-CS majors need the same concepts as CS majors. SO what are those concepts? Not a lot changes except that in computing widely APOs are bringing far more critical than they used to. They enable programmers to easily do things that used to be hard. They also more things we used to do early to later in a CS major.

Sorting is one example. With so many libraries to do sorting why should we spend a lot of time in a first course having students write sorts? We know they sorts they will write are not going to be up to the standards and power of sorts they can call that exist already. Algorithms? Surely there are other algorithms we can focus on to help students learn to study problems and developing algorithms?

So if we want to increase the number of students who study computer science beyond the limited scope of would be computer science majors preparing students for CS2 loses some power in the argument. And Python gains some because of all the APIs that are available and all the other disciplines that are already using it.

At SIGCSE, the panel members arguing for Python talked about much of what I write above. They also talked about Python avoiding some of the “cruft” of Java. How much easier “Hello world” is in Python for example. The “other side” focused mostly on the costs of changing and not specific criticisms of Python. There are things about Python that people do raise. It’s dynamic typing rather than Java’s strict typing. I’m a strict typing person myself but I can be open minded. Also the use of white space. Now it is not clear to me that either white space or curly braces have advantages over the other so I see that as a wash as well.

The post panel poll, FWIW, had 57% saying to switch to Python and 28% saying “keep Java” with the rest being answers all over the map.

I have no dog in this fight since I no longer teach AP CS but I am leaning toward that it is time for a change. I like the idea of a high school course, even on modeled on a university course, preparing a wider range of students for a wider range of majors.

The Collegboard is going to do what they want and the costs of changing may be as big a factor as anything. They are also driven by what universities do and as universities revisit the purpose of CS1 that will have more impact on anything anyone in high school has to say.

Mike Zamansky has a different take on this at SIGCSE 2022 - APCS-A Language strengths and weaknesses