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

Monday, March 07, 2022

What Should APCS A Really Be About?

Perhaps my favorite panel of SIGCSE 2022 was debating the question of should the APCS A course switch its language from Java to Python? During the discussion it occurred to me that there was a bigger question that had to be answered first That is “what is the purpose of APCS A?” Now the normal and obvious answer is that it should be equivalent to university CS1 courses – the first course CS majors take in university. That's too easy and also not helpful.

What should CS1 be all about? Traditionally, CS 1 was a course taken by CS majors and was preparation for the rest of the CS curriculum. Today it is not that simple. Increasingly, other departments in other disciplines are wanting their students to take CS1 or something much like it. Engineering, astronomy, physics, and business are just some of the areas where programming is growing as a tool. The CS department is the best department to teach this first course.

What does that mean? Well, for one thing it opens the door to more programming languages. While Java and C++ are the big languages for a next course for CS majors the same is not true for other departments. Without getting into the language discussion (until my next post) we need to look at what concepts are needed and ask if they are similar enough for everyone.

Owen Astrachan suggested at SIGCSE that the “A” in “APCSA” has traditionally stood for “Algorithm” but should now stand for “API.” Not that we ignore algorithms of course but that APIs were the way computing was increasingly being done. If we look at how non-CS programs are using programming we see that this is very much the case. This probably means that for CS to remain and improve as a teaching, learning, research tool it has to focus on APIs as well.

That is probably only one example of things we should look at changing (in APCSA and CS1) I  get the impression that many university departments are already changing and looking at changes as they see their CS1 course serving more than just CS majors.

Circling back to APCSA in particular, are all of our APCSA students going to major (or minor) in CS? Probably not. Many? Perhaps. But a majority are probably going to move into other areas of study. To we ignore their needs to focus only on future CS majors? That seems a recipe for turning students off from computing completely. High school courses should never be weed out course. One can have a rigorous impactful course without scaring people away from the field.

There is a lot of thinking about what CS1/APSCA should be about and I want to learn more about how university departments are adjusting to today’s  needs for students. Keeping things the way they are today just because we have always done it that way seems a lot less than ideal.

What is your thinking? What should CS1/APCSA be focusing on?

Sunday, March 06, 2022

Final Thoughts on SIGCSE 2022

I had a great time at SIGCSE 2022. As an introvert I probably suffered less from not being with people than many but after two years I really needed to be with people. I was able to connect in-person with friends I had not seen in years. Some a decade or more. That was truly awesome. The community building of an in-person conference should not be understated.

I had some great “hallway track” conversations. This is not nearly as easy in a remote conference and it contributed to what I was learning. Besides being with people I really did want to learn. So my hallway conversations were not all catching up with friends. I was able to ask a lot of questions about the work various people were doing. Things often outside the scope of a specific talk or panel that I attended.

I visited with Ruthe Farmer of the Last Mile Fund. The Last Mile fund is “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.” It’s an amazing program that helps students who are missed by a lot of programs giving them the help they need to complete their educations. They are particularly focused on women but have some money for men in community  colleges. Check them out if you know someone who needs a little help making it through.

It seemed like there were multiple interesting sessions in every time slot. Where I had to choose I picked panel or supporter sessions over paper sessions. Mainly that was because with paper sessions I could at least read the paper. Not the same thing but it was that or miss out on a panel completely.

The elephant in the room may have been COVID and masks. COVID times was a topic of conversation but masks? Not that I heard. The conference organized stated that even though CDC guidelines had changed the attendees had signed up expecting everyone would be masked so they were going to stick with that. I think it was the right decision. While masks are not always comfortable and they make it a little harder to recognize people it added to comfort levels for many attendees. Including me.

Sessions were split between the Rhode Island Convention center and the Omni hotel. The two are connected and traveling between them was pretty easy. I have a bias to all being in the same building but honestly I have walked further between sessions in some convention centers so there is that. The rooms themselves were large, accommodating people sitting apart if that made them more comfortable. I suspect that is what required using both facilities when one might have divided large rooms under normal circumstances.

Hybrid sessions where some or all of the presenters were remote were interesting. It worked pretty well overall. I hear there were some that were played recordings with no interaction but I didn’t “attend” any of them. The real bonus of a paper session is being able to ask the author questions so that is important. Mike Zamansky has more on this on his post at SIGCSE 2022 - Conference format.

I left Providence with a lot to think about and some great memories of visiting with people face to face – even with masks. Now to renew my passport so I can attend next year in Toronto!

Saturday, March 05, 2022

SIGCSE 2022 Day 3

Saturday at SIGCSE was a short day but there was still plenty to learn. Shaundra Daily. Her talk, based on her own history, was about how their are barriers making it hard for women, especially women of color and women who are also mothers, and who generally don’t fit a specific mold. This fit in with other conversations I had this conference about getting students to start CS at the university level don’t have the support they need once they get there. Filling the pipeline is not enough if the exit is blocked.

After the keynote I grabbed a quick bite to eat and ran into Mike Zamansky. Mike has a great blog post about the things he plans to write longer posts about. SIGCSE2022 - Things I plan to blog about We spent a lot of time discussing those topics. We agree on much and disagree (in a friendly way) on some. Look for future posts from both of us on these topics. Mike Zamansky blog

My first paper session was CSF2: Formative Feedback in Autograding. I'm of mixed feelings about autograders but more on that another time. This particular tool moves away from the binary pass/fail of autograders to provide feedback and hints. The tool also helps educators see where students are getting stuck. I want to look into this one some more.BTW, hinting is hard.

After the morning break, Nifty Assignments. I just could not resist as I love new assignments. This year’s assignments as well as previous year’s assignments are available at Nifty Assignments (stanford.edu) So I’m taking the easy way out and not saying much more about them.

For lunch time, SIGCSE set up a K-12 meetup lunch time in a conference room. I really enjoyed chatting with other K-12 people. Next year I hope they can come up with a way for us to connect earlier though. The k-12 ribbons were nice but ribbons get visually lost at times.

Friday, March 04, 2022

SIGCSE 2022 Day 2

The morning keynote was by Barbara Ericson. She talked about a lot of her early work including some of her online books CSAwesome and her work with the free online CS textbooks at Runestone Academy. I need to look at these some more https://runestone.academy/runestone/books/index She also talked a lot about Parsons Problems - a subject I am really interested in. One project is Sisters Rise Up which provides mentorship for women taking AP courses. She’s got a lot going now as well. She is an inspiration.

First Paper Session:Trends in CS Teacher Professional Development: A Report from the CSTA PD Committee. A lot of CS teachers are experienced teachers but not experienced in CS. Teachers want PD but it can be hard to find. The PD committee is evaluating and accrediting CS Ed professional development. You can see their efforts at the CSTA web site

Next up was Detecting Struggling Students from Interactive eBooks Data: A Case Study Using CSAwesome This talk was by Barbara Ericson and was about data from ebooks on Runestone and CSAwesome. Barb was able to collect a lot of data.  Students don’t watch videos to completion a lot which doesn’t surprise me that much. A lot of information in this talk. I recommend reading the actual paper. (Available for free for a limited time) I really need to look at these ebooks and see if they are something I can/want to try and create myself.

Last of my morning papers was Who Belongs in Computer Science? This study looked at middle school students to see what their perception was of computer scientists and how that impacted their feeling of belonging. In brief, boys and girls had the same perceptions but girls didn’t see themselves in what they perceived as being a computer scientist.

I took advantage of the “hallway track” to talk to Aman Yadav (author of the paper above) about the importance of CS teachers talking about race and computing. We need students to understand how bias works its way, usually unintentionally, into software. Both white and non-white students need to know about this. We clearly need a diversity of involvement in computing if we are going to have a chance as software that is fair to all.

After lunch, a GitHub Supporter Session: Scale your classroom with GitHub Classroom and Codespaces. A tough decision as there was also a panel I was interested in attending. I was curious about GitHub though so … The features of GitHub classroom including connections to LMSs, automated assignment distributing, auto grading and more seem pretty exciting. I also like the idea that students will create GitHub repositories that can act as a portfolio. The demo was great. I have set up a GitHub Classroom but I need to play around and try some things before I feel like I can use it. I think I need to create a “student account” as well. We’ll see how much time I can put to it.

Next up was a Microsoft Supporter Session: Core developer tools for your computer science classroom because I wanted to  see what Microsoft was promoting for educators to use for teaching CS. That was once my job.

They started with talking about VS Code and VS Code Coding packs are a tool to make it easy for students to set up a development environment. They are available to set up VS Code for Java, Python, and .NET. The packs for .NET and Java are available for both Windows and MacOS.

Next up was Development Containers and VSCode.dev which is a web past development environment so no installation is needed. This combination makes it easy to ensure that all students have the same development environment. This looks pretty cool for bring your own devices schools. There was a lot presented in a short period of time. I need to dig into some of these things on my own.

Over all a great day for me. I have some things to look through tonight.

Thursday, March 03, 2022

SIGCSE 2022 Day 1

SIGCSE 2022 is my first in-person conference in over 2.5 years. It’s my first SIGCSE in a lot longer than that. It looks to be a great conference . There are 1518 people registered in total with 780 attending in person. I HAD to come in person. Honestly, I missed people and a lot of people I know in CS Education and CS Ed research are here. There is a lot to learn here as well.

The opening keynote was Barbara Liskov. This was a fascinating talk that covered a lot of the history of her work. She started publishing and researching what became object oriented programming while I was in the early stages of my career. Several papers she studied and referenced were published the year I got my undergraduate degree. I remember clearly many of the issues she discussed and problems she was looking to solve back then. I hope we can get access to her talk and show it to students.

My first session of the day was a panel discussion of should AP CS A switch to Python from Java. Needless to say, the room was full. The stick with Java people had two main issues. One was the work involved in changing – new resources, teaching aids, test questions, and the like. The second was that while there is a slight edge in universities using Python over Java for CS1, Java and C++ are FAR more widely used in CS2 courses. The current course results in students who do very well in CS2 and that is important.

The argument for Python is multiple. One is that it opens the door wider for using APIs for making more interesting projects. Another is that there is less syntactic “cruft” in Python which reduces cognitive load. A third is that Python is increasingly used in disciplines that are not computer science. For example the Physics and Chemistry departments are Stanford want their students to take a Python based CS1 course. FWIW, the school I retired from added Python in part because the Physics teachers encouraged it. I am finding the arguments for Python more convincing than I expected.

After lunch, It Seemed Like a Good Idea At The Time (COVID-19 Edition). The session opened with examples from the past: see if you can hack the department mail server; open book exams without a time limit; exponential time examples are actually cubic. Victoria Hong shared a study she did where she asked one section to write questions for the final exam. The cohort that wrote questions did worse on the final than the cohort that didn’t write questions. The opposite of what was expected. Ellen Spertus talked about a course without deadlines. This set off a lot of discussion about deadlines and the different ways to allow or not extensions. Some have tokens that students can use for an extension. I hope this was recorded because I can’t do the discussion justice here.

Next up for me was another panel: Advancing Opportunities for CS Teachers: How To Best Support Professional Development for Experienced Teachers in K-12 CS Education This session was hybrid which means that most of the panel was remote and not physically at the conference. More on that later perhaps.

Most professional development for CS teachers is focused on new and early career CS educators. We have a good number of experienced teachers (10+ years of teaching CS) and their needs and backgrounds tend to be different from new  CS teachers. A lot of the initial presentations was stating the problem.

Don’t tell anyone but I jumped out early and dropped in on a Special Session: K-12 Computing Education and Education Research Resources. Colleen Lewis talked about Computer Science Teaching Tips (csteachingtips.org) and a Teaching Practices Game. This can help teach about microaggressions. Briana Morrison introduced Engage CSEDU: www.engage-csedu.org which has a searchable database of CS Ed resources. Davina Pruitt-Mentle introduced NATIONAL INITIATIVE FOR CYBERSECURITY EDUCATION (NICE) which has a lot of resources for teaching and learning about cybersecurity. More information can be found at Cyberseek.

Got some dinner skipping the Birds of a Feather but I’ll go back for the reception. Overall, a very good day for me. Learned some things and connected with a bunch of great people. More tomorrow I expect. If you are reading this and at SIGCSE please look me up and say “hello.”