soft but not squishy enhancing social realism in computer science education l.
Download
Skip this Video
Download Presentation
Soft but not Squishy: Enhancing Social Realism in Computer Science Education

Loading in 2 Seconds...

play fullscreen
1 / 44

Soft but not Squishy: Enhancing Social Realism in Computer Science Education - PowerPoint PPT Presentation


  • 125 Views
  • Uploaded on

Soft but not Squishy: Enhancing Social Realism in Computer Science Education. Andrew Begel Microsoft Research, Redmond, USA. User-centered tool design. We study software development recording current practice observing in the lab & in the field evaluating tool solutions.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Soft but not Squishy: Enhancing Social Realism in Computer Science Education' - willow


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
soft but not squishy enhancing social realism in computer science education

Soft but not Squishy: Enhancing Social Realism in Computer Science Education

Andrew Begel

Microsoft Research, Redmond, USA

user centered tool design
User-centered tool design
  • We study software development
  • recording current practice
  • observing in the lab & in the field
  • evaluating tool solutions
  • We create new tools
  • based on what we observe
  • releasing within Microsoft
  • influencing Microsoft products
slide3

Bill

James

Background

Programmed in Basic on his Mac in elementary school.

Dad is a software engineer.

Was into math, web programming in high school

Computer Science major, Bachelors degree

Educated in coastal USA

Favorite class: Cryptography

Participated in contests to break ciphers

Languages: C, C++, Java, Javascript, Python

Learned ASP, COM, Win32

james joins microsoft
James Joins Microsoft
  • Meets manager – meets team
  • Has no mentor – sets up computer, toolchain by himself
  • Gets first task from Developer Lead
  • First assignment
    • Take over two bugs from another dev who is out
    • Debug some code owned by another team
james fixes a bug
James Fixes a Bug
  • While reading through the code, spots a funny-looking line of code.
  • Decides it’s wrong, fixes the code.
  • The rules say to file a bug report, so he does.
  • At bug triage meeting the next day, he volunteers for the bug.
  • At his desk, he checks in his fix and marks the bug closed.
  • His “fix” breaks the build, and he must revert.
what did james do wrong
What did James do wrong?
  • James did not follow team’s procedure for finding and triaging bugs.
  • The code is MUCH bigger and more tightly integrated than James realized.
  • James did not ask anyone to check his fix before deciding it was right.
  • The code in question actually did not need to be fixed.
  • James wanted to impress his team with a non-essential bug fix.
three beliefs about starting a job in software engineering
Three Beliefs about Starting a Job in Software Engineering
  • I have to be perfect, or else I’ll get fired.
  • It can’t be the documentation, it must be me.
  • If it compiles, I’m done. If it doesn’t work, I will try every possible thing I can to make it work,even if it is unlikely I will succeed.
technical education vs social education
Technical Education vs. Social Education
  • Computer Science Curricular Organization
    • Hard skills – programming, debugging, design
    • Soft skills – specifications, documentation, development methodology, teamwork
  • Newcomer Socialization – Organizational Behavior
    • Function, Hierarchy, Social Network
    • Evaluation Metrics
      • Stress, Anxiety, Role Clarity, Role Orientation, Job Satisfaction, Person-Group Fit, Person-Organization Fit, Intention to Quit
slide11
Xin

Background

Played games on computers since junior high.

Programmed a little in high school.

Education

Computer Science major, Bachelors, Ph.D.

Educated in China and USA.

Learned technology useful for research in college anduniversity

Worked on multimedia codecs for his Ph.D.

xin joins microsoft
Xin Joins Microsoft
  • Joins team – meets manager
  • Group reorganized – no more manager
  • Xin gets manager after a few weeks
  • First task – fix a bug
it must be me
It must be me
  • Follows bug reproduction steps, but cannot reproduce the bug
  • Tries a new machine, new OS, debug/release binaries, 32/64-bit code, new binaries from a file share. Nothing works.
  • After 45 minutes, asks guy across hall for help, but doesn’t get good advice.
  • After 40 minutes, asks guy again, but again, doesn’t get good advice.
  • After 20 minutes, makes guy come over to his office, where he finds out he has the wrong understanding of the system, and he screwed something up 1.5 hours ago.
what did xin learn
What did Xin learn?
  • Just because someone with more experience than you wrote it down, it isn’t necessarily correct.
  • Persistence without reflection = STUCK
  • When asking a question, make sure you explain enough to get the answer you want.
  • Live in-person helps always beats documentation.
fixing a bug university
Fixing a Bug (University)
  • Reproduce the bug in the runtime,
  • Isolate the bug in a debugger,
  • Read the source code for the program,
  • Fix the bug by programming workaround code,
  • Test the fix,
  • Check in the fix into source control.
fixing a bug industry
Fixing a Bug (Industry)
  • Read the bug report,
  • Reproduce the bug in the runtime,
  • Isolate the bug in a debugger,
  • Read the source code for the program,
  • Ask questions of co-workers to understand the source code and the root cause of the bug,
  • Fix the bug by programming several different code workarounds,
  • Test the fixes,
  • Get the fixes reviewed by a manager or co-worker,
  • Attend a bug triage meeting to report on the status of the bug,
  • Convince co-workers that one of the fixes is the right one under the circumstances,
  • Figure out if a new regression test should be written,
  • Work with a tester to verify that the chosen fix did not cause any further regressions,
  • Attend another bug triage meeting to report on the status of the bug,
  • Meet with managers of other components that may be affected by the bug fix and persuade them to sign off on it,
  • Check in the fix into source control,
  • Finally, write up the results of the investigation and bug fix in the bug report.
fixing a bug industry17
Fixing a Bug (Industry)
  • Read the bug report,
  • Reproduce the bug in the runtime,
  • Isolate the bug in a debugger,
  • Read the source code for the program,
  • Ask questions of co-workers to understand the source code and the root cause of the bug,
  • Fix the bug by programming several different code workarounds,
  • Test the fixes,
  • Get the fixes reviewed by a manager or co-worker,
  • Attend a bug triage meeting to report on the status of the bug,
  • Convince co-workers that one of the fixes is the right one under the circumstances,
  • Figure out if a new regression test should be written,
  • Work with a tester to verify that the chosen fix did not cause any further regressions,
  • Attend another bug triage meeting to report on the status of the bug,
  • Meet with managers of other components that may be affected by the bug fix and persuade them to sign off on it,
  • Check in the fix into source control,
  • Finally, write up the results of the investigation and bug fix in the bug report.
slide18
Esperanza

Background

Worked with computers in primary school

Usually created software by herself

Computer options at school were too much about playing

Decided on software engineering in high school

Education

Computer Science major, Bachelors degree

Educated in Mexico

Favorite classes: Compilers, AI, Graphics

Languages: Java, C and C++

Worked with Microsoft and FOSS toolsets

Had coding projects, but never wrote tests

esperanza joins microsoft
Esperanza Joins Microsoft
  • Meets manager – meets team
  • Meets mentor, who helps her set up computer, toolchain
  • Gets first task
    • Port software from 32-bit to 64-bit
    • First assignment: Fix 200 out of 1300 compiler warnings
automation is the solution
Automation is the Solution
  • Many of the compiler warnings are similar
  • Write a Perl script to fix 60 warnings at a shot!
    • Check out code
    • Execute perl script to regexp replace code
    • Use WinDiff to check 2-3 files to see if replacement looks good
      • If not, revert changes that WinDiff reported, edit Perl script regexp, go back to #1
    • Compile whole program
      • If # of errors went down, we’re done!
what did esperanza do wrong
What did Esperanza Do Wrong?
  • No testing of her own.
  • Not methodical about verifying results.
  • Overreliance on others to find her mistakes.
    • Ad hoc absorption of MS developer culture.
  • No awareness of helpful tools.
  • Too eager to impress others with her speed.
but the best way to learn the truth is from others
…but the best way to learn the truth is from others.

“You can figure out something in five minutes by asking someone instead of spending a day of looking through code and design docs.”

2 when in rome
2. When in Rome…

“When I first got here, I would compose a verbose email with the problem, possible solutions, and my recommendations, [but] most people weren't reading the whole email. Now [my] emails are shorter. If it's going to take more than a paragraph, I probably need to do it in person.”

3 social interactions are the key
3. Social interactions are the key

“What I think I need to improve on is being a team player… When my teammates have a success, or when they need help, I want to be more willing to make their goals my goals as well. Because their success is the success of the team and I want to help the team to be successful.”

lethbridge survey cseet 1998
LethbridgeSurvey, CSEET 1998
  • What do professional software engineers think was important in their CS Education?
    • Programming Languages
    • Data Structures
    • Software Design
    • Software Architecture
    • Requirements Gathering
lethbridge survey cseet 199829
LethbridgeSurvey, CSEET 1998
  • What was missing from their CS Education that they needed and would have liked?
    • Negotiation
    • Human-Computer Interaction
    • Leadership
    • Real-time Systems
    • Management
a multitude of opportunties
A Multitude of Opportunties
  • Communication Skills
  • Social Simulation
  • Peer Mentoring
  • Pair Programming
  • Brownfield Software Engineering
  • Community-based Service
  • Global Distributed Software Development
  • Legitimate Peripheral Participation
  • Competition
  • Microsoft Partnership
teach communication skills
Teach Communication Skills
  • “Incorporating Communication Skills Throughout the Computer Science and Software Engineering Curricula”
  • Augment CS curricula with explicitly designed communications learning goals, instruction, assignments, and evaluation.
    • NSF CPATH II Project
    • Leads:Miami University of Ohio, NCSU
    • Participants from 14 institutions
    • From Computer Science and Communications

http://cpath.csi.muohio.edu

For more information, come to our panel!

Today, 3:30pm-5pm, Honolulu 3

global distributed software development
Global Distributed Software Development
  • “Internationalization of CS Education”
  • Provides awareness of culture and needs of international communities; exposes students to issues related to distributed development.
    • NSF CPATH Project
    • Leads: U Oregon, Portland State U, Willamette U
    • Participants from 13 US & 16 Asian universities

http://www.CPATHi18n.org

enter competitions
Enter Competitions
  • Imagine Cup for secondary and university age students
  • Kodu Cup for kids ages 9-17
  • Imagine Cup Categories
  • Software Design
  • Embedded Dev
  • Game Design
  • Digital Media
  • Win Phone 7
  • Interoperability Challenge
  • IT Challenge
  • Orchard Challenge
  • Windows 7 Touch Challenge

http://www.ImagineCup.com

http://KoduCup.us

partnerships with microsoft
Partnerships with Microsoft
  • Local sponsorship of capstone courses
    • Imagine Cup Mobile Voting application created by one team from Seattle University
  • Technology facilitation
    • Project Hawaii: Cloud services for Mobile Computing (30 universities world wide)
    • Kinect SDK
  • Shepherd nascent research communities
    • eScience, video games, cloud futures
microsoft software engineering innovation foundation 2010 seif
Microsoft Software Engineering Innovation Foundation 2010 (SEIF)

Come see 4 SEIF recipients talkabout their projects!

Friday 5:45pm, South Pacific 4

whatever happened to
Whatever Happened to…
  • James
    • Has better email writing skills: “what to say, when to not send a mail.” At the beginning, he was “more scared to write.” He now understands “what people expect when they write ‘I want this’ and it doesn't align with your priorities or what you're doing.” Knows “how to answer in the right way.”
  • Esperanza
    • “Understandability is more important than making the fastest or most clever code.”
  • Xin
    • "It's important to become an expert on something. When people recognize that, they give you ownership of it. Ownership is the way to move forward in your career. Dabbling in a little bit of everything doesn't help at all."
andrew begel@microsoft com

Talk references:

Andrew Begel and Beth Simon: Novice software developers All Over Again, ICER 2008

Jane Margolis and Allan Fisher: Unlocking the Clubhouse

Timothy Lethbridge: A Survey of the Relevance of Computer Science and Software Engineering Education, CSEET 1998.

“Incorporating Communication Skills Throughout the Computer Science and Software Engineering Curricula” NSF CPATH II: http://cpath.csi.muohio.edu

Orit Hazzan, James Tomayko: Human Aspects of Software Development.

“Internationalization of Computer Science Education” NSF CPATH: http://CPATHi18n.org

Jean Lave and Etienne Wenger: Situated Learning: Legitimate Peripheral Participation

Mark Guzdial and Barbara Ericson: Introduction to Computing and Programming in Python: A Multimedia Approach

Imagine Cup: http://www.ImagineCup.com

Kodu Cup: http://KoduCup.us

Project Hawaii: http://research.microsoft.com/hawaii

Kinect SDK: http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/

Microsoft SEIF: http://research.microsoft.com/en-us/collaboration/focus/cs/seif.aspx

andrew.begel@microsoft.com

http://research.microsoft.com/~abegel