graphic designers who program as informal cs learners

28
Graphic Designers Who Graphic Designers Who Program as Informal CS Program as Informal CS Learners Learners Brian Dorn and Mark Brian Dorn and Mark Guzdial Guzdial College of Computing, Georgia Tech College of Computing, Georgia Tech

Upload: markku

Post on 06-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

Graphic Designers Who Program as Informal CS Learners. Brian Dorn and Mark Guzdial College of Computing, Georgia Tech. Outline. End User Programmers Survey Method Respondent Demographics Results Why Program? Evidenced CS Knowledge Learning Strategies Discussion. End User Programmers. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Graphic Designers Who Program as Informal CS Learners

Graphic Designers Who Graphic Designers Who Program as Informal CS Program as Informal CS LearnersLearners

Brian Dorn and Mark GuzdialBrian Dorn and Mark GuzdialCollege of Computing, Georgia TechCollege of Computing, Georgia Tech

Page 2: Graphic Designers Who Program as Informal CS Learners

OutlineOutline

End User ProgrammersEnd User Programmers Survey MethodSurvey Method Respondent DemographicsRespondent Demographics ResultsResults

– Why Program?Why Program?– Evidenced CS KnowledgeEvidenced CS Knowledge– Learning StrategiesLearning Strategies

DiscussionDiscussion

Page 3: Graphic Designers Who Program as Informal CS Learners

End User ProgrammersEnd User Programmers

Page 4: Graphic Designers Who Program as Informal CS Learners

End User ProgrammersEnd User Programmers

Make use of features like Make use of features like scripting, declarative scripting, declarative specification, automationspecification, automation

Face common problems as in Face common problems as in general-purpose languagesgeneral-purpose languages

Struggle with issues of testing Struggle with issues of testing and reusability (Panko, 1998)and reusability (Panko, 1998)

Page 5: Graphic Designers Who Program as Informal CS Learners

Why Study EUP in CS Why Study EUP in CS Ed?Ed? A significant and growing populationA significant and growing population

– Outnumber (or will soon) professional Outnumber (or will soon) professional programmers by a factor of 4:1 (Scaffidi, Shaw, and programmers by a factor of 4:1 (Scaffidi, Shaw, and Myers, 2005)Myers, 2005)

– EUP-developed software errors are just as costly EUP-developed software errors are just as costly (Panko, 1995)(Panko, 1995)

– Perhaps software design techniques could help?Perhaps software design techniques could help?

Potential to inform CS learning (formal & Potential to inform CS learning (formal & informal)informal)– What motivates them to take up programming?What motivates them to take up programming?– How did they learn (naturally) what they learned?How did they learn (naturally) what they learned?– Can we leverage this in our classrooms?Can we leverage this in our classrooms?

Page 6: Graphic Designers Who Program as Informal CS Learners

Graphic Design End Graphic Design End UsersUsers An emergent, but unstudied An emergent, but unstudied

groupgroup Use tools like Photoshop, GIMPUse tools like Photoshop, GIMP Engage in scripting through Engage in scripting through

JavaScript, Python, and SchemeJavaScript, Python, and Scheme Build automate batch jobs, Build automate batch jobs,

custom effects, etccustom effects, etc

Page 7: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

Golden Ratio Golden Ratio BuilderBuilder 1:1.6181:1.618

558 line script558 line script Adobe Studio Adobe Studio

ExchangeExchange Has value for usersHas value for users

Page 8: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

var docRef = app.activeDocumentvar docRef = app.activeDocument……var phi = (Math.sqrt(5)-1) / 2var phi = (Math.sqrt(5)-1) / 2var goldx = Math.round( sizex * phi)var goldx = Math.round( sizex * phi)……if (grDraw == true) {if (grDraw == true) {

//Gold ratio//Gold ratiovar artLayerRef = docRef.artLayers.add()var artLayerRef = docRef.artLayers.add()//prawa pionowa//prawa pionowaif (this.params["right"]==true) {if (this.params["right"]==true) {

var shapeRef = [Array(goldx-hthick,0), var shapeRef = [Array(goldx-hthick,0), Array(goldx+hthick,0), … ]Array(goldx+hthick,0), … ]

docRef.selection.select(shapeRef)docRef.selection.select(shapeRef)docRef.selection.fill(gFillColor)docRef.selection.fill(gFillColor)……

} …} …}}

Page 9: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

var docRef = app.activeDocumentvar docRef = app.activeDocument……var phi = (Math.sqrt(5)-1) / 2var phi = (Math.sqrt(5)-1) / 2var goldx = Math.round( sizex * phi)var goldx = Math.round( sizex * phi)……if (grDraw == true)if (grDraw == true) { {

//Gold ratio//Gold ratiovar artLayerRef = docRef.artLayers.add()var artLayerRef = docRef.artLayers.add()//prawa pionowa//prawa pionowaif (this.params["right"]==true)if (this.params["right"]==true) { {

var shapeRef = [Array(goldx-hthick,0), var shapeRef = [Array(goldx-hthick,0), Array(goldx+hthick,0), … ]Array(goldx+hthick,0), … ]

docRef.selection.select(shapeRef)docRef.selection.select(shapeRef)docRef.selection.fill(gFillColor)docRef.selection.fill(gFillColor)……

} …} …}}

Page 10: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

var docRef = app.activeDocumentvar docRef = app.activeDocument……var phi = (Math.sqrt(5)-1) / 2var phi = (Math.sqrt(5)-1) / 2var goldx = Math.round( sizex * phi)var goldx = Math.round( sizex * phi)……if (grDraw == true) {if (grDraw == true) {

//Gold ratio//Gold ratiovar artLayerRef = docRef.artLayers.add()var artLayerRef = docRef.artLayers.add()//prawa pionowa//prawa pionowaif (this.params["right"]==true) {if (this.params["right"]==true) {

var shapeRef = var shapeRef = [Array(goldx-hthick,0), [Array(goldx-hthick,0), Array(goldx+hthick,0), … ]Array(goldx+hthick,0), … ]

docRef.selection.select(shapeRef)docRef.selection.select(shapeRef)docRef.selection.fill(gFillColor)docRef.selection.fill(gFillColor)……

} …} …}}

Page 11: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

var docRef = var docRef = app.activeDocumentapp.activeDocument……var phi = (Math.sqrt(5)-1) / 2var phi = (Math.sqrt(5)-1) / 2var goldx = Math.round( sizex * phi)var goldx = Math.round( sizex * phi)……if (grDraw == true) {if (grDraw == true) {

//Gold ratio//Gold ratiovar artLayerRef = var artLayerRef = docRef.artLayers.add()docRef.artLayers.add()//prawa pionowa//prawa pionowaif (this.params["right"]==true) {if (this.params["right"]==true) {

var shapeRef = [Array(goldx-hthick,0), var shapeRef = [Array(goldx-hthick,0), Array(goldx+hthick,0), … ]Array(goldx+hthick,0), … ]

docRef.selection.select(shapeRef)docRef.selection.select(shapeRef)docRef.selection.fill(gFillColor)docRef.selection.fill(gFillColor)……

} …} …}}

Page 12: Graphic Designers Who Program as Informal CS Learners

Sample ScriptSample Script

var docRef = app.activeDocumentvar docRef = app.activeDocument……var phi = (Math.sqrt(5)-1) / 2var phi = (Math.sqrt(5)-1) / 2var goldx = Math.round( sizex * phi)var goldx = Math.round( sizex * phi)……if (grDraw == true) {if (grDraw == true) {

//Gold ratio//Gold ratiovar artLayerRef = docRef.artLayers.add()var artLayerRef = docRef.artLayers.add()//prawa pionowa//prawa pionowaif (this.params["right"]==true) {if (this.params["right"]==true) {

var shapeRef = [Array(goldx-hthick,0), var shapeRef = [Array(goldx-hthick,0), Array(goldx+hthick,0), … ]Array(goldx+hthick,0), … ]

docRef.selection.select(shapeRef)docRef.selection.select(shapeRef)docRef.selection.fill(gFillColor)docRef.selection.fill(gFillColor)……

} …} …}}

Page 13: Graphic Designers Who Program as Informal CS Learners

Survey MethodSurvey Method

Goal: Who? What?Goal: Who? What? Extended questions from previous EUP Extended questions from previous EUP

studiesstudies– Informal web developers Informal web developers

(Rosson, Ballin, and Rode, 2005) (Rosson, Ballin, and Rode, 2005)– Business application usersBusiness application users

(Scaffidi, Ko, Myers, and Shaw, 2005) (Scaffidi, Ko, Myers, and Shaw, 2005) 39-question survey for users of 39-question survey for users of

Photoshop, Illustrator, GIMPPhotoshop, Illustrator, GIMP– Tool use habits, Motivation for scripting, Tool use habits, Motivation for scripting,

Programming concept familiarity, Programming concept familiarity, Development behaviorsDevelopment behaviors

Page 14: Graphic Designers Who Program as Informal CS Learners

Survey MethodSurvey Method

Recruited from 6 online Recruited from 6 online communitiescommunities

Targeted Targeted local developers local developers (Nardi, (Nardi, 1993), but open to all1993), but open to all

Small sample size overall (~20)Small sample size overall (~20)– Varied by questionVaried by question– Prevented statistical comparisonPrevented statistical comparison

Page 15: Graphic Designers Who Program as Informal CS Learners

DemographicsDemographics

Page 16: Graphic Designers Who Program as Informal CS Learners

DemographicsDemographics

Highest Level of Education (n=18)

0.0%

5.0%

10.0%

15.0%

20.0%

25.0%

30.0%

35.0%

High School Some College Associate's Bachelor's Master's

70% (n=13) majored in photography, 70% (n=13) majored in photography, art, or mediaart, or media

Page 17: Graphic Designers Who Program as Informal CS Learners

DemographicsDemographics

61.1% (n=18) had NO formal 61.1% (n=18) had NO formal training in programmingtraining in programming

83.3% said “I’m not a 83.3% said “I’m not a programmer”programmer”

But yet:But yet: “I build database- “I build database-populated pages for print and CD populated pages for print and CD catalog distribution”catalog distribution”

Page 18: Graphic Designers Who Program as Informal CS Learners

The Path to The Path to ProgrammingProgramming

Why Users Start Scripting (n=13)

0.00%

10.00%

20.00%

30.00%

40.00%

50.00%

60.00%

70.00%

80.00%

90.00%

Tim

eS

ave

r

Cu

sto

mE

ffe

ct

Sh

ara

ble

Art

ifact

Su

gg

est

ion

Cu

rio

sity

Oth

er

Page 19: Graphic Designers Who Program as Informal CS Learners

Commonly Reported Commonly Reported UsesUses Iterative action application within Iterative action application within

project (85%, n=20)project (85%, n=20) Batch processing multiple files Batch processing multiple files

(75%)(75%) Conditional action application Conditional action application

(60%)(60%)

Page 20: Graphic Designers Who Program as Informal CS Learners

Elementary Elementary ProgrammingProgramming Inquired about term familiarity Inquired about term familiarity

and use of and use of variable, subroutine, variable, subroutine, conditional, loop, conditional, loop, andand compound compound data structure.data structure.

Examined those with and without Examined those with and without formal coursework separatelyformal coursework separately– 100% recognition for course (n=7)100% recognition for course (n=7)– 80+% among w/o course (n=11)80+% among w/o course (n=11)

Page 21: Graphic Designers Who Program as Informal CS Learners

Elementary Elementary ProgrammingProgramming

Programming Knowledge for those w/o Coursework (n=11)

0.0%

10.0%

20.0%

30.0%

40.0%

50.0%

60.0%

70.0%

80.0%

90.0%

100.0%

Variables Subroutines Conditionals Loops Data Structures

Knows

Uses

Page 22: Graphic Designers Who Program as Informal CS Learners

Software DevelopmentSoftware Development

Investigated tendencies to Investigated tendencies to engage in development practices engage in development practices

Provided free-form response Provided free-form response areas for elaborationareas for elaboration

Page 23: Graphic Designers Who Program as Informal CS Learners

Software DevelopmentSoftware Development

Design HabitsDesign Habits– Most (Most (60%, n=1360%, n=13) never pre-plan on paper) never pre-plan on paper– Design by template (reuse old code)Design by template (reuse old code)– Design by “experiment-and-record”Design by “experiment-and-record”

Reuse HabitsReuse Habits– Share/borrow code oftenShare/borrow code often– But, few design for reuseBut, few design for reuse

Testing HabitsTesting Habits– Likely to test, but lack structureLikely to test, but lack structure

Page 24: Graphic Designers Who Program as Informal CS Learners

Sources for Sources for Learning/SupportLearning/Support What they use:What they use:

– Examples, code snippets, related Examples, code snippets, related projectsprojects

– FAQs, books, tutorialsFAQs, books, tutorials What they don’t:What they don’t:

– ClassesClasses– Tech SupportTech Support

Where it’s not clear:Where it’s not clear:– WizardsWizards

Page 25: Graphic Designers Who Program as Informal CS Learners

DiscussionDiscussion

Results from this initial study Results from this initial study suggest:suggest:– Graphic designer programmers existGraphic designer programmers exist– And we underestimated themAnd we underestimated them– Lack “formal” trainingLack “formal” training– Similar habits to other EUP domainsSimilar habits to other EUP domains

Page 26: Graphic Designers Who Program as Informal CS Learners

Why Study EUP in CS Why Study EUP in CS Ed?Ed? Help a large body of informal Help a large body of informal

learnerslearners– Increase effectivenessIncrease effectiveness

reliabilityreliability share-abilityshare-ability

– Introduce CS as a disciplineIntroduce CS as a discipline Insight for CS classroomsInsight for CS classrooms

– Power of a contextPower of a context programming is a relevant activityprogramming is a relevant activity

– New methods for teaching/learningNew methods for teaching/learning case-based, discovery, collaborationcase-based, discovery, collaboration

Page 27: Graphic Designers Who Program as Informal CS Learners

AcknowledgementsAcknowledgements

You!You! Survey participantsSurvey participants National Science Foundation National Science Foundation

(CISE)(CISE) Travel funds:Travel funds:

– NSFNSF– GVU, Georgia TechGVU, Georgia Tech

Page 28: Graphic Designers Who Program as Informal CS Learners

QuestionsQuestions

Brian Dorn Brian Dorn [email protected]@cc.gatech.edu

Mark GuzdialMark [email protected]@cc.gatech.edu