Posts tagged ‘computing education’

European Best Practices in Education Award: Focus on Inclusive Education

I know several members of the awards committee this year, and was asked to share this broadly.

Best Practices in Education Award

2019 Edition
‘Inclusive Education’

Presented by Informatics Europe
Sponsored by Microsoft

Call for Submissions Now Open
***********************************************************************

Informatics Europe proudly announces its 2019 Best Practices in Education Award devoted to initiatives targeting Inclusive Education of different student groups such as the elderly, immigrants or people with functional diversity.

The Informatics Europe Best Practices in Education Award recognizes outstanding European educational initiatives that improve the quality of Informatics teaching and the attractiveness of the discipline, and can be applied and extended beyond their institutions of origin.

The Award rewards a successful teaching effort in Europe that:

  • has made a measurable difference in informatics education;
  • is widely applicable and useful for the teaching community;
  • has made a measurable impact in its original institution and beyond.

Examples of impact include course results, e-accessibility frameworks and techniques, such as guidelines or frameworks based on robotics; traditional and online courses, learners’ projects, textbooks, professional development, and influence on the curriculum of other institutions/countries. The initiatives are not limited to programming but include design and use of technology.

The 2019 Award is devoted to outstanding European educational innovations that address Inclusion in Informatics teaching in the classroom or beyond, at school or university level, or outside of institutions. Innovation maybe technology-based (for example using instructional technologies, MOOCs, learning analytics, etc.) or pedagogical. The Award honours original contributions that focus on innovative Informatics teaching practice toward Inclusion.

Experiences and reports showing how to use software or hardware tools in order to improve inclusion and learning in other disciplines than informatics will not be considered.

The Award is sponsored by Microsoft and carries a prize of EUR 5,000.

Submissions:

The Award can be given to an individual or to a group. To be eligible, participants must be located in one of the member or candidate member countries of the Council of Europe (www.coe.int), or Israel. Members of the Informatics Europe Education Working Group and of the Award Committee are not eligible.
The Award Committee will review and evaluate each proposal. It reserves the right to split the prize between at most two different proposals (individuals or teams).

Proposals should be submitted only at:

https://easychair.org/conferences/?conf=iebpea2019

The proposal should include:

  • Names and addresses of the applicant or applicants;
  • Indication of whether the submission is on behalf of an individual or a group;
  • Description of the achievements (max 5 pages);
  • Evidence of availability of the outcomes of the initiative to the teaching community (max 2 pages);
  • Evidence of impact (max 5 pages);
  • A reference list (which may include URLs of supporting material);
  • One or two letters of support. The letters of support may come for example from school or university management, associations, or colleagues in the same or another institution.

Deadlines:

  • Proposal: June 1, 2019
  • Notification of winner(s): August 1, 2019

The Award will be presented at the 15th European Computer Science Summit, in Rome, October 28-30, 2019, where a representative of the winning institution will be invited to give a talk on their achievements.

Award Committee:

  • Letizia Jaccheri, Norwegian University of Science and Technology, Norway (Chair)
  • Michal Armoni, Weizmann Institute of Science, Israel
  • Tone Bratteteig, University of Oslo, Norway
  • Sharon Lynn Chu, University of Florida, US
  • Michael Kölling, King’s College London, UK
  • Monica Landoni, Università della Svizzera italiana, Switzerland
  • Gabriela Marcu, University of Michigan, US
  • Jan Vahrenhold, University of Münster, Germany

Further inquiries:

education-award@informatics-europe.org

April 12, 2019 at 7:00 am 1 comment

Task-specific programming languages: People aren’t dumb. Programming is hard.

I’ve been thinking a lot about task-specific programming languages lately.  I’m inspired by the work on domain-specific programming languages (e.g., see blog post here), and have been wondering whether we can reduce the cognitive load even further by focusing on programming languages for specific tasks. I’m thinking that we should be applying HCI design techniques (e.g., user centered design) and apply them to the design of small, task-specific programming languages.

But that got me wondering: Surely this is not a new idea.  What do we know about task-specific programming languages? Do students learn generalized ideas about programming from learning a task-specific programming language? How does it change affect or cognitive load if students start with a programming language tuned especially to their task?

I did some literature searches, and found a highly relevant paper: “Task specific programming languages as a first programming language.”  And the lead author is…me.  I wrote this paper with Allison Elliott Tew and Mike McCracken, and published it in 1997.  I honestly completely forgot that I had written this paper 22 years ago. Guzdial-past knew things that Guzdial-present does not.

The paper doesn’t answer any of my questions.  It talks about some surveys and comparisons we were doing, but offers no results.  I have no idea where the data from those surveys and comparisons are today.

Abstract: This research investigates whether there is a difference in the acquisition of programming skills and knowledge as a function of a student’s first language. Our research is concerned with the comparison of task specific languages and general programming languages. In many engineering programs students are first exposed to the principles of computational solutions to problems by means of task specific languages, such as MatLab. They are then either expected to be able to use, or are specifically taught programming using more general purpose languages, such as C. Our question is whether there is a developmental preference for learning a task specific language first, or a general purpose language first. Historically, educators have emphasized fundamentals prior to application. A case could therefore be made that a student should be taught general programming skills in the context of a general purpose language before solving problems in a task specific language. More recently, contextualized educators would prefer the initial learning of task specific languages. Our research anticipates answering the question of the effectiveness of transfer of programming skills as a function of first language learning. The dimensions of this question include but are not limited to, how the languages are used, what types of problems are presented to the students, is transfer prompted between the languages, do students look for surface or structural similarities, and what are the assumptions and expectations of the faculty who teach these languages.

Here’s my favorite paragraph in the paper. Yup, still have all those same questions.

We have developed a comparison of task specific languages and general purpose languages to allow us to investigate ontological boundaries between languages and their impact on transfer. For example, MatLab essentially has no typing. It uses built in types. Whereas, general purpose languages have various types, including enumerated types, and support the construction of complex data structures around those types. Does this difference cause a boundary to transfer? If a student learns MatLab first, will data types be more difficult to learn? If a student learns a general purpose language first, will they be able to transfer their skills to a language that prevents them from constructing many of the structures they have previously used?

I’m still catching up on podcasts that I missed during my move.  One of those was a rebroadcast of an interview with Richard Thaler, one of the founders of behavioral economics and a recent Nobel prize winner in Economics.  He explains the central idea of behavioral economics: “People aren’t dumb. The world is hard.”

So, we don’t think people are dumb. We think the world is hard. I mean, figuring out how much to save for retirement is a really hard cognitive problem that very few economists have solved for themselves. And it’s not only cognitively hard, it involves delay of gratification, which people find hard. It’s just like navigating in a strange city is hard. So, why not try to help? When I first was working with the U.K. Behavioral Insight Team, the first “Nudge unit,” the phrase I kept saying in every meeting with some minister was, “If you want to get people to do something, make it easy. Remove the barriers.” That’s what we’re about.

If we want people to program, make it easy. Remove the barriers. That’s what we’re about. People aren’t dumb. Programming languages are hard.  If we can fix that, we should. That’s what I see task-specific programming as being about.

 

March 25, 2019 at 7:00 am 20 comments

Barbara Ericson’s AP CS Report for 2018 and her new blog cs4all.home.blog

Barb has written her blog post about the 2018 AP data (see 2017 report here and 2016 report here), and this year, she’s using it to launch her own blog!  Find it at https://cs4all.home.blog/

Every year I gather and report on the data for AP CS from the College Board which is at http://research.collegeboard.org/programs/ap/data/

There was a huge increase in Advanced Placement (AP) Computer Science Principles (CSP) exam takers nationally (from 43,780 in 2017 to 70, 864 in 2018 – a 62% increase). The Computer Science A (CSA) exam also grew (from 56,088 in 2017 to 60,040 in 2018 – a 7% increase).

Source: AP CS Report for 2018

March 4, 2019 at 7:00 am Leave a comment

Thanks. For all the fish, and everything else.

This morning, I’m giving the keynote at the SIGCSE Symposium after receiving the 2019 SIGCSE Award for Outstanding Contribution to Computer Science Education.

SIGCSE_2019_Agenda_by_WhovaThis award is so important to me. It comes from the SIGCSE Community, which I’ve been part of since 1995.  It’s an award that’s woven into our community.  I’ve been fortunate to win other awards, but those are over there.  They come from and are awarded someplace outside of the mainstream. Every year, the Outstanding Contributor gets in front of the SIGCSE Community and has his or her say.  It’s here, among all of us. I can’t tell you how many of those speeches I’ve attended.  Of course, I’ve wondered, “What if I was up there? What would I say to this community?” This year, I get my chance.

Sometimes, the award winner thanks the people who got them there.  I feel that same urge. I am so very grateful to all my collaborators over the years, without whom, I would not have done the work that got me to this award. But the audience isn’t so keen on hearing the Thank You’s. I want to use this opportunity to say something to the community — about how important they are, about our history, and about what we need to do next.

In the last few weeks, I’ve been interviewed twice where I got the chance to acknowledge some of my collaborators, influences, and mentors — in Marc Lesser’s podcast and in the recent SIGCSE bulletin. I’m grateful to have had those opportunities so that I could tell my stories and give thanks.  I’m so glad that Marc asked me how I got here. I have had the advantage of significant preparatory privilege.  My parents sent me to a private, parochial high school in 1976 that had two computer science teachers and classes in both Basic and Fortran. I had a microcomputer store open up a block from my house, where I was hired as an assistant in 1979.  By the time I got to Wayne State University, I had programmed in several high level languages and four assembler languages (6502, 6800, 8080, and Z-80). I started teaching computer science in 1980. I’m lucky — I had great parents and amazing opportunities.

In this blog post, let me just say three more BIG THANK YOU’s.

First, my wonderful students.  Everyone knows that work by a professor is work done by the graduate students, with a bit of the professor’s direction.  My PhD students have inspired me, taught me, and done the most important research in my career: Noel Rappin, Colleen Kehoe, Jochen Rick, Brian Landry, Allison Elliott Tew, Brian Dorn, Lijun Ni, Mike Hewner, Briana Morrison, Miranda Parker, Amber Solomon, Katie Cunningham, and Bahare Naimipour. Then there are all the PhD students whom I didn’t directly advise, but who collaborated with me on some terrific work: Jennifer Turns, Andrea Forte, Lana Yarosh, Lauren Margulieux, and many others. I am grateful to all of them for all the papers on this list and the many times they’re mentioned in the 10 years of this blog.

Second, my mentors.  At the start of Learner-Centered Design of Computing Education Researchthere is this dedication page.

mentors

That’s Elliot Soloway (my advisor and longest-time mentor), Janet Kolodner (who taught me how to be a learning scientist), Jim Foley (who continues to be my model for academic leadership, and who gave the green light to MediaComp), Peter Freeman (the Dean who hired me at Georgia Tech), Rich LeBlanc (who introduced me to SIGCSE), John Stasko (who has been my big brother in academia for over 25 years), and Alan Kay (who inspired me to get my PhD and has been my mentor for literally decades). “All my mentors” include people like Bob Kozma who convinced me to do this joint PhD thing, Joe Krajcik who taught me science education research, Kurt Eiselt who convinced Jim to green light MediaComp, Rick Adrion who explained US education public policy to me, and Carl Berger who continues to inspire me with his curiosity about everything. I am grateful for their guidance and support, and to many of them, for taking a chance on me.

Third, but most important, is Dr. Barbara Ericson.  Barbara and I were married in 1985 in July, and started our MS in CSE at the University of Michigan in September. We have supported each other through two PhD’s, umpteen papers, the only joint ACM Karlstrom award, some significant NSF grants — and three children, two homes, multiple jobs, and 30+ years of marriage.  Barb is my most important collaborator, critic, proponent, and dearest friend. I really can’t express the depth of my gratitude to and love for Barb.

 

 

March 1, 2019 at 8:00 am 3 comments

The biggest concerns for institutionalized CS education in the United States: Standards, limited models, and undergraduate enrollment caps

I was interviewed for the SIGCSE Bulletin by my long-time collaborator, Leo Porter (see https://sigcse.org/sigcse/files/bulletin/bulletin.51.1.pdf).  I talk about this blog, how I started teaching in 1980, about Media Computation, and about what inspires me.

One of the questions relates to the recent discussion about standards and frameworks (see post here).

LP: You have worked with education public policymakers in “Georgia Computes!” and Expanding Computing Education Pathways (ECEP) over the last dozen years. What’s your biggest worry as US states start institutionalizing CS education?

I have two. The first is that the efforts to standardize CS education are making the bar too low. When the K-12 CS Ed Framework was being developed, decisions were being made based on how current teachers might respond. “Teachers don’t like binary, so let’s not include that” is one argument I heard. I realize now that that’s exactly the wrong idea. Standards should drive progress and set goals. Defining standards in terms of what’s currently attainable is going to limit what we teach for years. Computing education research is all about making it possible to teach more, more easily and more effectively. I worry about setting standards based on our limited research base, not on what we hope to achieve.

The second is that most of our decisions are being made around the assumption of standalone CS classes and having teachers with a lot of CS education. I just don’t see that happening at scale in the US. Even in the states with lots of CS teachers in lots of schools, a small percentage of students take those classes. This limits who sees computer science. To make CS education accessible for all, we have to be able to explore alternative models, like integrating computing education in other subjects without CS-specific teachers. If we only count success in CS education as having standalone CS classes, we are incentivizing only one model. I worry about building our policy to disadvantage schools that want to explore integrated models, or have to integrate because of the cost of standalone CS classes.

Since this interview, I have a third concern, that may be more immediate than the other two.  This is what I wrote my CACM Blog on this month. The NYTimes just published an article “The Hard Part of Computer Science? Getting Into Class” about the growing CS undergraduate enrollment and about the efforts by departments to manage the load.  Departments used to talk about building capacity, but increasingly, the discussion is about capping or limiting enrollments.  The reason why this is concerning is because we’ve been down this road before — see Eric Roberts’ history of CS capacity challenges. Our efforts to limit enrollment send a message about computer science being only for elites and being unwelcoming to non-CS majors. This is exactly opposed to the message that Code.org, CS for All, and the AP CS Principles exam is trying to send. We’re creating a real tension between higher education and the efforts to grow CS, and it may (as Eric suggests) send enrollments into the next dive.

February 18, 2019 at 7:00 am 8 comments

Need for Reviewers for US Department of Education CS Education Grants – Guest Post from Pat Yongpradit

Pat Yongpradit of Code.org asked me to share this with everyone.

The US Department of Education has announced the EIR grant competition for FY 2019. This year EIR incorporates an exclusive priority for computer science with a focus on increasing diversity and equity in access, as compared to last year where the highlight was that CS was merged with STEM as a combined priority. See more detail in our blog.

There are many moving parts to the federal grant review and award process, including a merit-based review process. In order to adequately score grants featuring computer science, the US Department of Education must have enough reviewers with K-12 computer science education experience. There is more information on the merit-review process and the Department’s mechanism for selecting reviewers in this blog.

Code.org has been asked to put interested folks in touch with leaders of the EIR grant program. If interested, please send your CV to EIRpeerreview@ed.gov.

Having CS knowledgeable reviewers participating in the federal grant review process is crucial to maximizing the opportunity these grants present the field and our collective goal of expanding access to K-12 computer science.

Best,

Pat

February 14, 2019 at 9:45 am Leave a comment

Inverse Live Coding: A practice for learning web development

I finished my first semester teaching at the University of Michigan. I taught EECS 493 User Interface Development all on the Web. It was a tough class for me since I had never before this class used JavaScript, jQuery, or CSS. I learned a lot, but I also had to teach it.

As readers of this blog now, I am a fan of live coding (see blog post here) where a teacher writes code live in front of the class. The positive aspects of live coding include that the teacher will likely make mistakes, so students see that (a) mistakes are common and expected, (b) mistakes can be corrected, and (c) there is a process to recover from mistakes.

I could not live code in this class. I didn’t know the material well enough. It took me too long to code, and I couldn’t recover from mistakes in front of the class.

It was also so hard in the context of a Web-based user interface course. I had the advantage that I could watch videos of Mark Ackerman and Walter Lasecki teach the course before me. Both of them know JavaScript and Web technologies well enough that they could live code in front of the class. I couldn’t understand what they were doing. Part of it was the low-resolution of the video — I couldn’t read the screens well. But a bigger part of it was the cognitive load of remembering the HTML and the CSS while writing the jQuery code. I couldn’t figure out the code while also remembering the names of the divs and how they were nested, and what CSS formats were being applied to which divs and classes. Maybe the younger kids fare better than me in my mid-50’s.

So, I tried a different practice. Maybe call it Inverse Live Coding.

  • I wrote programs (HTML, CSS, plus JavaScript with jQuery) before class.
  • I demoed and lectured on those programs (briefly — maybe 10-15 minutes).
  • Critical: I gave the students the code and all the associated files (HTML, CSS, and JavaScript).
  • Then, live in-class, I had students pair up to make small changes to the code.

This is like in-class coding or a lab session, but short — like 8-10 minutes of coding. We can do three of these in a lecture period. It’s more like a Peer Instruction (PI) session than a traditional laboratory coding activity.  I typically put 2-3 of these in a 90 minute class, as part of a lecture. I have students use iClickers to “click in” when they’re successfully done with the change, so we’re using PI practices to make clear what kind of activity this is. That ritual (clicking in then re-joining the class session) helps with bringing people back to the whole-class context after the pair-programming activity.

Here’s an example: I wrote a small JavaScript/HTML/CSS project that had a balloon slowly float upward, and could be steered left or right with arrow keys. (Why yes, that is a Smalltalk balloon in the example.)

I explained the code, introducing ideas like closures and the ready() method in jQuery.

Then I gave them a challenge. In this case, make the balloon also drift to the left, or drift in different directions based on the time or a random variable.

Different kinds of questions: I was pleased by how well this worked. First, it didn’t take much time. 80% of the teams solved at least one of the challenges in less than 8 minutes. Second, the teaching assistants and I got tons of questions. Many of the questions were fundamental ones — things I never would have even thought to talk about in class if I was live-coding. These are (paraphrased) actual questions that I got during the inverse live-coding sessions.

  • “Okay, I made the changes in the JavaScript. Now, how do I compile it?”
  • “I made the changes using the debugger in Chrome. How do I make this work in the CSS, HTML, or JavaScript files?”
  • “So, the jQuery is changing the HTML or the CSS, right? How come my file isn’t changing?”

These were pretty easy questions to handle in class, but one could imagine that those could stymie a student working alone. When I got one of these questions 1:1 or 2:1 during the pair-programming/live-coding, I made sure I answered the question for the whole class, too. These were questions about the fundamental nature of how Web technologies work (e.g., that the interpreter/compiler is the browser itself, and that jQuery says it’s changing CSS/HTML, but it’s really changing the DOM tree, etc.). It was much better to push the students to do the programming, and thus face these questions, than for the teacher to do the programming. The teacher would have an expert blind spot and may not even think to explain those parts that are invisible and confusing.

Miranda Parker suggested a variation of this practice. I could invite students to come up to the front of class to solve the problem, or to explain their solution after the session. That could be helpful in making sure that everyone sees something that works.

I would still use live coding in an intro course, when there aren’t invisible other files involved in the task and increasing cognitive load. In classes like Web Design, I will use inverse live coding more in the future.

February 4, 2019 at 7:00 am 20 comments

Older Posts


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 6,196 other followers

Feeds

Recent Posts

Blog Stats

  • 1,637,520 hits
April 2019
M T W T F S S
« Mar    
1234567
891011121314
15161718192021
22232425262728
2930  

CS Teaching Tips