Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Friday, July 19, 2024

CSTA Day Four

Last day of the conference and I woke up to news of a global network outage that was causing delays in thousands of flights. Including my trip home. Oh well. I wonder if I will need this fan that was in the conference bag at the airport. I hear it is crowded.

I still jumped into the conference though.

My first session was AP Computer Science A: Using Data Files for Authentic Problem Solving. I've been using files in class for a while but not in Java or an AP course. This session was really APCS A teachers who haven't been using data files in class before. So not what I was looking for but I think it was probably super valuable for the target audience. The room was pretty full so I suspect that the addition to the exam requiring file usage is going to make some work for a lot of teachers.

Nest up was Visual Programming Graphics and GUI for Beginning Students. I was surprised by the light attendance. The talk was about an open source package called GUI4Sher. The system was designed based on Visual Basic but for Python. It was also designed to make things easier for students to create graphic, which can be hard in Visual Basic. I don’t think it is really Visual Basic like but it is interesting. I have downloaded it and I do intend to play with it some when I get home. If you are teaching Python it may be worth a look. But it is pretty simplistic.

Last up for the conference is, After the Classroom: Reflecting on the K-12 CS Experience. The reflections of a pair of students was interesting. I think we all appreciated the credit they gave to their teachers.

Honestly, with all the travel mess, I largely stayed to the end to find out where the next two conferences will be located.

2025 – Cleveland OH

2026 – Atlanta, GA

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