graphic designers who program as informal cs learners
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 PresentationTRANSCRIPT
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
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
End User ProgrammersEnd User Programmers
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)
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?
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
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
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)……
} …} …}}
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)……
} …} …}}
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)……
} …} …}}
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)……
} …} …}}
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)……
} …} …}}
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
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
DemographicsDemographics
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
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”
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
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%)
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)
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
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
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
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
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
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
AcknowledgementsAcknowledgements
You!You! Survey participantsSurvey participants National Science Foundation National Science Foundation
(CISE)(CISE) Travel funds:Travel funds:
– NSFNSF– GVU, Georgia TechGVU, Georgia Tech
QuestionsQuestions
Brian Dorn Brian Dorn [email protected]@cc.gatech.edu
Mark GuzdialMark [email protected]@cc.gatech.edu