Posts tagged ‘undergraduate’

Lamport and how Education works: The Coming Software Apocalypse

Several people sent this article to me. It’s so one-sided and contrary to empirical evidence that I found it hard to finish. The belief that we can fix all of software through the use of software proofs and verification is contrary to software social processes, as shown by DeMillo, Lipton, and Perlis in 1979. Belief that Toyota sudden acceleration was due to a software bug ignores the empirical evidence about other causes for the phenomenon (as Gladwell described in his podcast last year).

It’s the paragraph quoted below that led to people sending me the article. Leslie Lamport suggests that if we just taught people TLA+, that would lead to better software.

Education of novices never works as a mechanism to change professional practice.  (Or at least, I’ve been trying to find an example of successfully changing a community through education of the young, and I haven’t found one yet.) Students who want to become software developers want to do what software developers do — that’s Lave and Wenger’s model of situated learning, where students join a Community of Practice through Legitimate Peripheral Participation (which I describe in this blog post). If you tell students to learn TLA+, you would most likely get a response like, “Why are we learning THIS? We want to real thing, not some academic toy!”

If you want to change a community of practice, you have to get the leaders in the community of practice to change. Students follow them. It doesn’t work the other way around.

But TLA+ occupies just a small, far corner of the mainstream, if it can be said to take up any space there at all. Even to a seasoned engineer like Newcombe, the language read at first as bizarre and esoteric—a zoo of symbols. For Lamport, this is a failure of education. Though programming was born in mathematics, it has since largely been divorced from it. Most programmers aren’t very fluent in the kind of math—logic and set theory, mostly—that you need to work with TLA+. “Very few programmers—and including very few teachers of programming—understand the very basic concepts and how they’re applied in practice. And they seem to think that all they need is code,” Lamport says. “The idea that there’s some higher level than the code in which you need to be able to think precisely, and that mathematics actually allows you to think precisely about it, is just completely foreign. Because they never learned it.”

Source: The Coming Software Apocalypse – The Atlantic

October 30, 2017 at 7:00 am 19 comments

Start from where they are: Rochester Institute of Tech Opens Center Focused on ‘Computing Science for All’ 

Paul’s last line below says it all.  If you want to teach CS to all majors, you start by looking at the computing needs in those disciplines. You don’t start by asking computing experts what they do. Bravo!

“The Golisano College embraces a vision in which the computing domain is accessible to everyone, regardless of discipline, disability or diverse background,” said Anne Haake, dean of the college, who is spearheading the launch of the center from within her college. CS professor Paul Tymann will serve as director.

“Computers have become part of the fabric of virtually every discipline, and I don’t think you can be successful in today’s society without having a basic understanding of how computing works,” said Tymann, in a press release. “That’s why we are looking to understand the computing needs of every discipline at RIT.”

Source: Rochester Institute of Tech Opens Center Focused on ‘Computing Science for All’ — Campus Technology

October 16, 2017 at 7:00 am Leave a comment

Preparing Tomorrow’s Faculty to Address Challenges in Teaching Computer Science

I’ve blogged here when we have opened registration for the New Computing Faculty workshops (e.g., here), but I haven’t really explained why we’re doing them.  We took a lot of grief on Twitter for the workshops in the Spring, and 120 characters just isn’t enough to explain the whole story. We (Leo Porter, Cynthia Lee, Beth Simon, and me) wrote an article that appeared in the May CACM explaining the rationale.  If you don’t have ACM Digital Library access, you can grab the paper from my Guzdial Papers page here in the blog.

The new challenges compound existing teaching-related challenges for the field. We still need to broaden participation in our field, with the lowest percentage of women majors in all of STEM. The economic rewards of a computing career make it even more important to bridge the digital divide. If there are more students than faculty can teach effectively, they may be inclined to lean on a pessimistic belief that success is dependent on “brilliance” and innate ability where only a subset of students can succeed. If CS faculty feel there is little they can do to change students’ outcomes in their individual classrooms, it will be true. Research shows that more CS faculty hold this mistaken and unproductive view of students than faculty in other STEM disciplines.

Source: Preparing Tomorrow’s Faculty to Address Challenges in Teaching Computer Science | May 2017 | Communications of the ACM

October 2, 2017 at 7:00 am Leave a comment

The Community of Practice for CS teachers? Suggestion: It’s not teachers

My Blog@CACM post this month is on the AAAS symposium I attended on undergraduate STEM education (see post here).  The symposium set up for me a contrast between computing education and other STEM education.  In math and science education, faculty are more likely to get continuing professional development and to value education more than CS faculty.

Why is it different in CS?  In the blog post, I suggest that part of the issue is maturation of the field.  But I have another hypothesis — I suggest that most CS teachers, especially at the undergraduate level, don’t think of themselves as teachers.

In my book Learner-Centered Design of Computing Education, I use Lave & Wenger’s situated learning theory as a lens for understanding motivations to pursue computing education.  Lave & Wenger say every learner aims to join a community of practice.  Learners start out on the periphery of the community, and work their way towards the center, adopting the skills, values, and knowledge that those in the center hold. They might need to take classes because that’s what the community values, or maybe they do an apprenticeship. The community of practice provides the learner and the practitioners a sense of identity: “I belong with this group. I do this practice. This is who I am.”

Lijun Ni taught me the value of teacher identity. Someone who says “I’m a math teacher” (for example) will join math teacher organizations, will seek out professional development, and will more likely be retained longer as a teacher. That’s their identity.

I believe that many science and math teachers (even at the undergraduate level) feel a sense of identity as teachers. Even at research universities, those teaching the intro courses in mathematics and science are likely teachers-first. They know that they are mostly no preparing future mathematicians, biologists, chemists, and physicists.  They are preparing students for their chosen professions, perhaps in engineering, medicine, or computer science. The math and science teachers belong to a community of practice of teachers, e.g., they have a goal to be like the best teachers in their profession.  They have an identity as teachers, e.g., they strive to be better math and science teachers.

I suspect that CS teachers feel a sense of identity as software developers. They see themselves as programmers primarily. They see themselves as producing future programmers. They take pride in what they can do with code. They have a sense of guardianship — they want the best and brightest in their field.

There’s a difference between CS teachers as programmers vs CS teachers. Programmers train other programmers. They learn new programming languages, new techniques of programming, the latest tools. Teachers teach everyone, and they learn how to be better at teaching. We need CS teachers to be teachers. It’s less important that they know the latest industry gadgets. It’s more important that they learn how to teach “all” about CS, and how to teach that CS better.

When Grady Booch came to SIGCSE 2007, I was surprised at how excited everyone was — people still talk about that visit (e.g., see the explanation for the BJC approach to computing). I realized that, for most of the people in the room, Grady was a role model.  He was at the center of community that they most cared about.  Note that Grady is not a teacher. He’s an exceptional software engineer.

There are serious ramifications of a teacher with an identity as a software engineer.  I had a discussion a few months ago with one of our instructors, who told me, “I just don’t get why women would even want to be in computer science.  Working in a cubicle is not a great place for women to be! They should get a better job.”  I was shocked. I didn’t tackle the gender issues first. I started out trying to convince him that computer science doesn’t just lead to a cubicle. You could study computer science to become something other than a software developer, to work somewhere other than a cubicle. He wasn’t buying my argument. I realized that those cubicle jobs are the ones he wants to prepare students for. That’s where he imagines the best programmers working. He doesn’t want to teach computer science for whatever the students need it for. He prepares future programmers. That’s how he defines his job — a master software engineer with apprentice software engineers.

I am calling out undergraduate CS teachers in this post, but I suspect that many high school CS teachers see themselves as software developers (or as trainers of software developers), more than as teachers of computer science.  I hear about high school CS teachers who proudly post on the wall the t-shirts of the tech companies who employ their former students.  That’s a software developer focus, an apprenticeship focus. That’s not about teaching CS for all.

What would it take to shift the community of practice of CS teachers to value teaching over software development?  It’s an important change in perspective, especially if we care about CS for all. Not all of our students are aiming for jobs in software development.

How did other STEM disciplines do it?  How did they develop a culture and community of practice around teaching?

May 23, 2016 at 7:35 am 23 comments

The capacity crisis in academic computer science – guest blog post by Eric Roberts

I’ve shared Eric’s insights into computing enrollments in the past (for example here and here). With his permission, I’m sharing his note after the recent SIGCSE 206 conference

Welcome back from Memphis and SIGCSE 2016! At this year’s conference, we heard many stories about skyrocketing student interest in computer science and the difficulty many colleges and universities are having in meeting that demand. For several years now, evidence has been building that academic computer science is heading toward a capacity crisis in which the pressures of expanding enrollment overwhelm the ability of institutions to hire the necessary faculty. Those signs are now clearer than ever.

The challenges involved in developing the necessary capacity are not easy. Fortunately, they are also not entirely new. Academic computer science has faced similar capacity crises in the past, most notably in the mid 1980s and the late 1990s. Each of those periods saw an increase in student interest in computer science at a pace so rapid that universities were unable to keep up.

For better or worse, I have had a ringside seat during each of these enrollment surges. In the mid 1980s, I was chairing the newly formed department of Computer Science at Wellesley College. During the dot-com expansion in the late 1990s, in addition to directing the undergraduate program at Stanford, I was a member of the ACM Education Board and a contributor to the National Academies study panel convened to address the situation.

In the current crisis, I have been asked to offer my historical perspective in many different venues. I was one of the authors — along with Ed Lazowska at the University of Washington and Jim Kurose at the National Science Foundation — of a talk on this issue at the 2014 Snowbird Conference and the National Center for Women in Information Technology’s 10th Anniversary Summit earlier that year. Along with Tracy Camp, who is the cochair of the Computing Research Association’s committee to study the impact of rapidly increasing enrollments and who presented a panel discussion at this year’s SIGCSE, I have been appointed to the National Academies’ Committee on the Growth of Computer Science Undergraduate Enrollments, which holds its first face-to-face meeting in two weeks.

After listening to the audience comments at the SIGCSE panel on the CRA effort, it is clear that many people struggling to keep up with the increased enrollments are still having trouble convincing their administrations that the problems we face are real and more than a transient maximum in a cyclical pattern. In many ways, the difficulty administrators have in appreciating the severity of the problem is understandable because our situation is so far outside what is unfamiliar to most academics. It is hard for most people in universities to imagine a field in which the number of open positions exceeds the number of applicants by a factor of five or more. Similarly, it is almost impossible to imagine that a faculty shortage could become so extreme that universities and colleges would be forced to cut enrollments in half, despite high demand from both students and prospective employers. Both of those situations, however, are part of the history of academic computer science. The crisis our field faces today is at least as serious as it has been at any time in the past.

It occurred to me that it might help many of you make the case for more resources if I shared a white paper on the history of the crisis that I wrote earlier in the year, originally to make the case at Stanford but now also to support the deliberations of the National Academies’ committee. I have put the white paper on my web site, both as a single PDF report and as a web document with internal links to facilitate browsing. The two versions of the document are:

I welcome any comments that you have along with ideas about solutions that I can share with the full National Academies’ committee.

Sincerely,

Eric Roberts

Charles Simonyi Professor of Computer Science, emeritus

Stanford University

March 14, 2016 at 8:02 am 9 comments

What can undergraduate courses do to improve diversity in computing?

Dan is one of the best computer science teachers I know, and I strongly agree with the goals he describes below.  I’m not sure how much intro courses can do to recruit more diverse students.  At Georgia Tech, Media Computation has been over 50% female since we started in 2003, but that’s because of what majors are required to take it and the gender distribution in those majors.  I know that Harvey Mudd, Stanford, and Berkeley have grown their percentage of females, but their undergraduates get to choose their majors while on-campus.  At schools like Georgia Tech, where students have to choose their major on the application form, the decision is made off-campus.

One clear thing we can do in undergraduate courses is retain more diverse students.  In our BS in CS, we graduated 16% female BS in CS students in Spring 2015, which is pretty good.  Taulbee Survey says that the national average is only 14.1% (see report here).  But our enrollment in CS is 25% female.  We lose a LOT of women who decide to try CS.  I’ve talked about some of the reasons in past blog posts (see post here about bad teaching practices and here about my daughter’s experience in CS at Georgia Tech).

Dan Garcia says there’s another important issue: Once courses are created, educators must make sure they’re reaching a diverse audience. Women and minorities are grossly under-represented, not just in tech fields, but also in computer science classes.Teachers should shake the trees and reach out to more kinds of students, not just the student who’s doing well in math. And, he says, connect computer science to bigger, more controversial topics, Garcia says, because coding and data are connected to issues of power. With the persistent digital divide, he says, educators must ask, “What does that mean for equity? What does that mean for fairness? Privacy issues? Hopefully the curriculum brings equity as part of it,” he says.

Source: Adding ‘Beauty And Joy’ To Obama’s Push For Computer Science Teaching : NPR Ed : NPR

February 22, 2016 at 7:26 am 12 comments

Students concerned about demand for CS classes at Berkeley: First of many

The article below is from the Berkeley student newspaper, but it’s not just a Berkeley issue.  Enrollment is surging, and schools have too few resources to meet demand.  Dealing with the enrollment surge was a big topic at the ACM Education Council last month.  Based on what I heard at last year’s meeting of the Ed Council, I predicted that the enrollment surge would like lead to less diversity in CS (see blog post here). This year, I came away with the sense that most attendees believe it’s quite likely.  The issue now is measuring the impact and seeing what resources can be marshaled once there’s evidence that there has been damage to diversity.  Both CRA and the National Academies are conducting studies about the impact of the enrollment surge.  Right now, action is more about studying the impact than responding to the need — people might be willing to respond, but we have so few options.  Google has funded several projects to invent new ways to respond (see blog post here), but those are just starting now.  We won’t know for months if they’ll work.

When the culture at UC Berkeley simultaneously stresses the importance of a computer science education and heightens GPA requirements for the major, barriers to entry become increasingly difficult to overcome. More and more students entering UC Berkeley feel pressured to learn basic computer science skills to meet the needs of the postgraduation job market — a notion that the campus and its highly ranked computer science department encourage…But the upsurge in enrollment means fewer resources for beginner students, especially in terms of access to teaching assistants and professors.

The computer science department recently changed its requirements for petitioning for admission to the major: Students who entered UC Berkeley before this fall needed a cumulative GPA of 3.0 in the seven lower-division course requirements, whereas students who came in this fall need to complete, specifically, CS 61A, 61B and 70 with a cumulative GPA of 3.3. These are arguably the more difficult “weeder courses” within the prerequisites, and increasing the average required GPA from a B to a B+ makes a real difference for many deserving students hoping to earn a computer science degree. In CS 61A, for example, the past average is a 2.84, or a B-. Holding beginners to such a high standard, especially given the amount of pressure from an increasingly technologically focused society, is a tool to sort students into winners and losers rather than educate them.

Source: Campus computer science program does not compute | The Daily Californian

September 14, 2015 at 7:26 am 7 comments

Older Posts


Recent Posts

December 2017
M T W T F S S
« Nov    
 123
45678910
11121314151617
18192021222324
25262728293031

Feeds

Blog Stats

  • 1,460,181 hits

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

Join 5,193 other followers

CS Teaching Tips