O'Really?

November 3, 2022

Join us to discuss novice use of Java on Monday 7th November at 2pm GMT

Java is widely used as a teaching language in Universities around the world, but what wider problems does it present for novice programmers? Join us to discuss via a paper published in TOCE by Neil Brown, Pierre Weill-Tessier, Maksymilian Sekula, Alexandra-Lucia Costache and Michael Kölling. [1] From the abstract:

Objectives: Java is a popular programming language for use in computing education, but it is difficult to get a wide picture of the issues that it presents for novices, and most studies look only at the types or frequency of errors. In this observational study we aim to learn how novices use different features of the Java language. Participants: Users of the BlueJ development environment have been invited to opt-in to anonymously record their activity data for the past eight years. This dataset is called Blackbox, which was used as the basis for this study. BlueJ users are mostly novice programmers, predominantly male, with a median age of 16. Our data subset featured approximately 225,000 participants from around the world. Study Methods: We performed a secondary data analysis that used data from the Blackbox dataset. We examined over 320,000 Java projects collected over the course of eight years, and used source code analysis to investigate the prevalence of various specifically-selected Java programming usage patterns. As this was an observational study without specific hypotheses, we did not use significance tests; instead we present the results themselves with commentary, having applied seasonal trend decomposition to the data. Findings: We found many long-term trends in the data over the course of the eight years, most of which were monotonic. There was a notable reduction in the use of the main method (common in Java but unnecessary in BlueJ), and a general reduction in the complexity of the projects. We find that there are only a small number of frequently used types: int, String, double and boolean, but also a wide range of other infrequently used types. Conclusions: We find that programming usage patterns gradually change over a long period of time (a period where the Java language was not seeing major changes), once seasonal patterns are accounted for. Any changes are likely driven by instructors and the changing demographics of programming novices. The novices use a relatively restricted subset of Java, which implies that designers of languages specifically targeted at novices can satisfy their needs with a smaller set of language constructs and features. We provide detailed recommendations for the designers of educational programming languages and supporting development tools.

All welcome, as usual we’ll be meeting on zoom, details at sigcse.cs.manchester.ac.uk/join-us

References

  1. Neil C. C. Brown, Pierre Weill-Tessier, Maksymilian Sekula, Alexandra-Lucia Costache and Michael Kölling (2022) Novice use of the Java programming language ACM Transactions on Computing Education DOI:10.1145/3551393

June 23, 2017

Nine ideas for teaching Computing at School from the 2017 CAS conference

CAS

Delegates at the Computing at School conference 2017 #CASConf17 answering diagnostic questions, picture by Miles Berry.

The Computing At School (CAS) conference is an annual event for educators, mostly primary and secondary school teachers from the public and private sector in the UK. Now in its ninth year, it attracts over 300 delegates from across the UK and beyond to the University of Birmingham, see the brochure for details. One of the purposes of the conference is to give teachers new ideas to use in their classrooms to teach Computer Science and Computational Thinking. I went along for my first time (*blushes*) seeking ideas to use in an after school Code Club (ages 7-10) I’ve been running for a few years and also for approaches that undergraduate students in Computer Science (age 20+) at the University of Manchester could use in their final year Computer Science Education projects. So here are nine ideas (in random brain dump order) I’ll be putting to immediate use in clubs, classrooms, labs and lecture theatres:

  1. Linda Liukas demonstrated some intriguing ideas from her children’s books and HelloRuby.com that are based on Montessori education. I shall be trying some of these out (particularly the storytelling stuff) at code club to keep girls involved
  2. Sue Sentance and Neil Brown from King’s College London gave an overview of some current research in pedagogy.  They discussed research questions that can be tackled in the classroom like (for example) do learners make more progress using visual programming languages (like Scratch and Blockly) or traditional text-based languages (like Python and Java etc)? Many of these research questions would make good projects for undergraduate students to investigate in secondary schools, see research on frame based editors, for example.
  3. Michel Wermelinger from the Open University demonstrated using iPython notebooks for teaching data literacy at the Urban Data School. Although I’m familiar with iPython, it had never occurred to me to actually use iPython in school for teaching. It is a no-brainer, when you think about it, even for primary, because you have your code, inputs and outputs all in one window, and can step through code execution instead of (or as well as) using more conventional tools like Trinket, Thonny or IDLE. Data literacy is fun to teach.
  4. Miles Berry from the University of Roehampton demonstrated Diagnostic Questions in Project Quantum. These are a collection of high quality quizzes to use interactively for example as hinge questions, where teaching is adapted depending on answers given, like this multiple choice question:
    Consider the following Python code:
    
    a = 20
    b = 10
    a = b
    
    What are the values of a and b?
    
    A: a = 10, b = 10
    B: a = 20, b = 20
    C: a = 30, b = 10
    D: a = 10, b = 20
    

    You’ll have to try these five questions to check your answer. The useful thing here is that DiagnosticQuestions.com (the platform on which this is built) allows you to see lots of responses, for example each answer (A, B, C or D) above was selected by 25% of participants. You can also view explanations which illuminate common misconceptions (e.g. the classic mistake of confusing assignment with equality) as well as providing a bank of free questions for use in the classroom.

  5. Mark Guzdial from GeorgiaTech discussed using learning sciences to improve computing teaching. He demonstrated predictive questions (e.g. ask students What do you think will happen when we run this code? before actually executing it) alongside what he called subgoal labelling. These are simple ideas (with proven benefits) that can be put to use immediately. I’ll also be trying the Live Coding (with Sonic Pi) and Media Computation he demonstrated asap.
  6. Laurence Rogers demonstrated Insight: Mr. Bit  this looks like a good app for using BBC microbits in the classroom, connected to a range of sensors, provided you’ve got access to iPads.
  7. A copy of Hello World magazine was in the conference bag. The summer 2017 issue has an unusual article from Ian Benson from Kingston University and Jenny Cane describing their use of the Haskell programming language to teach 5-7 year olds to reason symbolically and learn algebra before arithmetic with help from Cuisenaire rods. The Scratch Maths project at University College London are doing similar things, building mathematical knowledge using Scratch, rather than Haskell. These are experimental ideas you could try out on unsuspecting (junior) family members.
  8. Lee Goss from Barefoot Computing, described the free CPD for primary school teachers on offer from BT. I’ve signed up and hope to plug some of the shortcomings in the Code Club Curriculum.
  9. Richard Jarvis demonstrated appJar, a handy Python library for teaching Graphical User Interfaces (GUIs). That’s Jar as in Jarvis and Jam, not JAR as in Java ARchive BTW. I’ve not tried GUIs at code club yet, but appJar looks like a good way to do it.

There were lots more people and projects at the conference not mentioned here including tonnes of workshops. If you’re interested in any of the above, the CAS conference will be back in 2018. Despite the challenging problems faced by Computer Science at GCSE level, it was reassuring and inspiring to meet some members of the vibrant, diverse and friendly community pushing the boundaries of computing in schools across the United Kingdom. Thanks again to everyone at CAS for putting on another great event, I will definitely consider attending next year and maybe you should too.

February 25, 2010

Apache Maven: A Misbehavin’ Build Tool?

Filed under: ChEBI,programming,technology — Duncan Hull @ 11:00 am
Tags: , , , , , ,

Chocolate Tools by JanneMOne of the many tools we use in our team to manage the development of the ChEBI software is an automated build tool called Apache Maven. Opinions are often divided on whether Maven is a good or a bad thing. Most of them are very subjective, argumentative and often very extended. See why does Maven have such a bad reputation? and 25 things* I hate about Maven for examples.

All this is fairly predictable, and I could add a few tales of Maven woe to the pile myself. But wondering if Maven is any good reminded me of something Bjarne Stroustrup [1,2,3] (one of the people behind the C++ programming language) once said in an article on the problem with programming:

“There are just two kinds of [programming] languages: the ones everybody complains about and the ones nobody uses.”

Actually when you think about it this applies to build systems too, there are two kinds. It also applies to just about any technology you care to name, you can crudely classify them all into two categories:

  1. Those technologies everybody complains about…
  2. … and the rest, that nobody uses.

So is Maven any good? Worth using? Worth the pain? Depends on who you ask. What we can say for sure, is that like many technologies, everybody complains about it.

References

  1. Bjarne Stroustrup (2010). Viewpoint: What should we teach new software developers? Why? Communications of the ACM, 53 (1) DOI: 10.1145/1629175.1629192
  2. Bjarne Stroustrup (2007). Evolving a language in and for the real world: C++ 1991-2006 Proceedings of the third ACM SIGPLAN conference on History of programming languages DOI: 10.1145/1238844.1238848
  3. Bjarne Stroustrup (1993). A history of C++: 1979–1991 The second ACM SIGPLAN conference on History of programming languages DOI: 10.1145/154766.155375

* Only 25? That seems like quite a short list to me.

[CC-licensed Chocolate Tools image by JanneM, some commentary on this post over at friendfeed.]

July 23, 2009

Josh the Java Junkie

Joshua Bloch at scifooOne of the people I enjoyed seeing at Science Foo Camp this year was Joshua Bloch. Josh is a Java Junkie [1,2,3] and software engineer at Google. When he wasn’t playing harmonica around the foo camp fire (see picture right), he was giving interesting talks about optical illusions, some of which can be found in his book Java Puzzlers. So I bought the book, and have been doing a puzzle a day to keep the doctor away. Most of the puzzles in this book are short Java programs that behave in ways you would not expect. The one below is a nice example:

public class Indecisive {
    public static void main(String[] args) {
        System.out.println(decision());
    }

    static boolean decision() {
        try {
            return true;
        } finally {
            return false;
        }
    }
}

What does this program do? Return true or false? Perhaps it does both or something else completely? Does it even compile? Can’t decide? Welcome to public class Indecisive…

References

  1. Joshua Bloch and Neal Gafter (2005). Java Puzzlers: Traps, Pitfalls, and Corner Cases (isbn:032133678X) Addison-Wesley
  2. Joshua Bloch (2006). How to design a good API and why it matters OOPSLA ’06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, 506-507 DOI: 10.1145/1176617.1176622
  3. Neal Gafter (2008). Is the Java Language Dying? Neal Gafter’s blog: Thoughts about the future of the Java Programming Language.

Blog at WordPress.com.