Introduction to Programming (well, kind of.)

4,347 views
4,314 views

Published on

I worked through these slides during the THATCamp New England 2010 Introduction to Programming Bootcamp Session. For more info on THATCamp NE see http://www.thatcampnewengland.org/

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,347
On SlideShare
0
From Embeds
0
Number of Embeds
1,657
Actions
Shares
0
Downloads
80
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introduction to Programming (well, kind of.)

  1. 1. Introduction to Programming Well, Kind Of. THATCamp New England 2010 Julie Meloni // @jcmeloni // jcmeloni@gmail.com
  2. 2. What’s missing in the slides... • A lot of extemporaneous talking about how everyone is already a programmer. • In fact, you all probably know a lot of this, but just didn’t know the terms. • What’s more, the applications of the future come from the needs of the present: your needs. ▫ When you can articulate them to someone who can do the codework, we all win.
  3. 3. Why Program? • Express complex logic and perform computations. ▫ We make the computer do what we want it to do. ▫ These behaviors come from our imaginations. ▫ The processes come from our needs and desires. • Do things that take a long time or are difficult for humans to do (counting, comparing, repeating)
  4. 4. What is a “Programming Language”? • An artificial language with a limited purpose • A means of expressing computations (math) and algorithms (logic) Thanks, @wayne_graham. I “repurposed” some of your content on this slide and the next.
  5. 5. What Does a Programming Language Look Like? • ...a lot like human language. They have: ▫ Syntax (form) ▫ Semantics (meaning)  signs/words (variables, symbols, numbers, strings)  expressions  flow control (decisions, conditions, loops, narrative)  complex entities (methods, structures, & objects)
  6. 6. A Few Types of Programming Uses • Job control or shell scripting; text processing • Graphical User Interface (GUI) programming • Application-specific programming • Web applications ▫ Front-end ▫ Back-end
  7. 7. Some Programming Languages You May Have Heard About • C++ • Java • JavaScript (completely unrelated to the former) • Perl • Python • Ruby • PHP
  8. 8. A Few Basic Programming Components (pretty much regardless of language) • Variables & Arrays • Operators • Flow Control • Functions Putting together these pieces adds up to programming (or scripting, or in general “writing some stuff to tell the computer what to do”)
  9. 9. Variables & Arrays • A variable is a bucket that holds one piece of information. • Examples (language doesn’t matter here; the concept does): ▫ $string_variable = “THATCamp”; ▫ $numeric_variable= 4; ▫ $myname = “Julie”;
  10. 10. Variables & Arrays • An array is a type of variable (or bucket) that holds many pieces of information. • Example (language doesn’t matter here; the concept does): ▫ $THATCamps = array(“Prime”, “New England”, “Pacific Northwest”)  $THATCamps[0] holds “Prime”  $THATCamps[1] holds “New England” ▫ $THATCamps = array(“1” => “Prime”; “NE”=> “New England”, “PNW” => “Pacific Northwest”)  $THATCamps[“NE”] holds “New England”
  11. 11. Operators • Arithmetic ▫ +, -, *, / (add, subtract, multiply, divide) • Assignment ▫ = (“Assign the value of 4 to the variable called a”)  $a = 4; ▫ += (“Add the value of 5 to the variable that already holds 4”)  $a += 5; // $a now holds 9 ▫ .= (“Attach the value ‘World’ to the end of ‘Hello’ to make a new value for the string variable”)  $string = “Hello”;  $string .= “World”; // would print “HelloWorld” (no space because we didn’t add that!)
  12. 12. Operators • Comparison ▫ == (“when I compare the value in variable a to the value in variable be, that comparison is true”)  $a == $b ▫ != (“when I compare the value in variable a to the value in variable be, that comparison is not true”)  $a != $b ▫ === (“when I compare the type of and value in variable a to the type of and value in variable be, that comparison is true”)  $a === $b ▫ >, >= (“the value of variable a is greater than (or greater than or equal to) the value of variable b”)  $a > $b ▫ <, <= (“the value of variable a is less than (or less than or equal to) the value of variable b”)  $a < b
  13. 13. Operators • Logical ▫ && (and) ▫ || (or) ▫ ! (not)
  14. 14. Flow Control (conceptual structures virtually independent of language, although might look a little different) • if if (something is true) { do something here } • if ... else ... else if if (something is true) { do something here } else if (something is true) { do something here } else { do something here }
  15. 15. Flow Control (conceptual structures virtually independent of language, although might look a little different) • while while (something is true) { do something here } • for for (something is true) { do something here }
  16. 16. Flow Control (conceptual structures virtually independent of language, although might look a little different) • switch switch (some_variable) { case “some_value”: do something here break; case “some_other_value”: do something here break; default: do something here }
  17. 17. Procedures and Functions • Scripts can contain linear, procedural code. • Scripts can also contain references to reusable bits of code, called functions. ▫ Built-in language functions ▫ Functions you write yourself. • [Note at this point in the presentation I talked a bit about how every element you see in an application can be boiled down to its logical structures and the code you want to execute within those structures.]
  18. 18. Some Application Examples • Static web site with some snippets of interactivity ▫ The example I used was a simple form on a web site. • A library catalog with a content discovery mechanism ▫ I showed VIRGO (http://search.lib.virginia.edu). • Custom Web-based application like NINES ▫ That would be http://nines.org • WordPress/dynamic platform such as Omeka ▫ I showed two Omeka sites: Lincoln at 200 (http://lincolnat200.org) and MITH’s Vintage Computers (http://mith.umd.edu/vintage-computers/) ▫ Clicked through to show exhibit & item conceptually same in both sites (because of framework). ▫ Data goes in, data is pulled out; it exists in one place but accessed many ways
  19. 19. Let’s Design an Application • What do you want it to do? • What type of programming is required? • Does language matter? • What elements of programming are required (GUI? Actions? Frameworks? etc) • What can you leverage? • What comes next? ▫ Being logical, being incremental, being procedural, being functional, being a programmer...and then talking to specialists.
  20. 20. And then... • Asked the group for examples of ideas/tools/things they wanted to do. Some examples: ▫ Discover similarities between two data sets ▫ Social annotation of images/primary sources ▫ Visualizing relationships between data • Turns out you need three things for all of the projects/ideas people had: ▫ Primary material ▫ Metadata ▫ Interface/use thoughts
  21. 21. And THEN... • We walked through several examples and kept coming back to: ▫ Logical construction of actions; explain it to someone in “pseudocode”  “If I click on this link, I want X to happen, and if I select this form element and that form element together, I want Y to happen”, etc. ▫ Most processes can be broken into smaller processes, all loopy or controlled structures in some way. ▫ If you can think of what you want to see or do, you can tell the computer how to do it so you can see it. ▫ You don’t need to be a Comp. Sci. person to do any of the above – just an imaginative and relatively logical person.

×