Women Who Code Atlanta
September 9, 2014
Announcements
- Connect JS WIT Scholarship
- Atlanta Javascript Meetup: Js Fundamentals
- Atlanta Code Camp
- Rails Girls Athens Fall Workshop
- Women's iOS Developer's Group: Intro to iOS Development with Swift
Connect JS WIT Scholarship
- 40+ Speakers
- Plan out your schedule. We’ll see you at Piloting Hyperdrive Spacecrafts through Asteroids and Happy Hour.
- Located at Cobb Galleria
-
There’s 5 scholarships (worth $1750) up for grabs. Thanks to Connect.Js, Code, Voxa, and Huge for the opportunity. (Deadline: 9/ 19/ 2014)
JS Fundamentals:
Scope and Closures
- beginner friendly talk and QA session
- hosted by the Atlanta JavaScript Meetup on 9/15/2014
- presented by Chris Aquino
- will be helping with our upcoming JavaScript Study Group
Atlanta Code Camp
- Located at the Southern Polytechnic State Univerisity
- Saturday, October 11, 2014.
- Call for Speakers ends Monday, October 15, 2014
- Only $10 to Attend!
Rails Girls Athens
Fall Workshop
- Will be held October 10 - 11, 2014
- Bring Laptop; No prior experience required
- Register here
Intro to iOS Development with Swift
- hosted by the Women's iOS Developer Group
- October 21, 2014
- RSVP here
Other Announcements?
How to Think Like a Programmer
Being a Programmer
IS
KNOWLEDGE
NOT
Being a Programmer is
A STATE OF MIND
Nebulous Destination.
More than one right way.
Not About Knowing Everything
CODE IS...A STORY!
Code explains something
In such detail, a machine can do it
(And other humans can understand it)
Requires creativity, syntax, and strategy
Separated into pieces to enable reuse & maintenance
LEARNING A LANGUAGE
THOUGHT => ENGLISH
LEARNING TO CODE
THOUGHT => ENGLISH => CODE
CODING
THOUGHT => CODE
LINES = SENTENCES
An operation, or small set of operations
Actions like...
Declare a new variable
Read a variable
Write a variable
Apply an operand between variables
Call a function
BLOCKS = PARAGRAPHS
FUNCTION
A reusable set of instructions
CONDITIONALS
Block modifier that may cause a block to be skipped
LOOPS
Block modifier that may cause a block to repeat
Programming can be hard, but also rewarding
- Jobs Aplenty
- By 2020, there will be 1,000,000 more jobs in the computer science field than students to fill them
- Flexibility
- Work hours, Telecommuting, Generous Vacation
- Fame & (Relative) Fortune
- The challenge is its own reward.
Elements of a Developer Mindset
- Be patient with yourself and the process.
- Always keep in mind why you're doing what you're doing.
- Remind yourself that everyone needs help. Reach out!
- Sharing is caring.
- Growth mindset vs Fixed Mindset
Solving Problems => Creatively
!=
Skills
- Technologies, Artifacts
- Devices
- Programs
- Languages/ Environments
- Products
Useful, but too specific, Dates quickly
Disciplines
- Ideas
- Principles
- Laws
- Techniques
- Methods
Broadly applicable, Dates Slowly
How Students Are Taught
- Given lots of information about a languages syntax and what different instructions do
- Shown lots of sample code
- Shown how to read programs
- Told to go program
Syntax-first Approach
What's wrong with the
Syntax-first Approach?
- Students "get" code, but don't "get" how to code
- The "Blank Screen" Problem
- Driving in Circles
- Programming by trial and error, with no real strategy
Problem Solving is the missing link
A problem solving approach to learning programming
- Learn syntax elements slowly
- Learn to combine a small number of elements before learning a large number of elements
Learning language elements more slowly, means you can develop your problem solving skills more quickly.
The Problem Solving Approach
Programming Knowledge
Programming Knowledge
Ability to Apply
Ability to Apply
Syntax-First
Problem-Solving
Learning to Combine Language Elements
- Helps you with programs that use those particular language elements
- Builds a "cook book" of programs for later use
- Helps you with all programs, because you develop problem solving strategies
Benefits of Making Up Your Own Problems
- Learn the utility of each construct through exploration
- Keep Asking "What can I do with this?"
- Try to develop guidelines about when you prefer one approach over another
- For loop vs While loop
- Always have a plan
- Restate the problem
- Divide the problem
- Start with what you know
Basic Techniques for Solving Problems
- Reduce the problem
- Look for Similarities
- Experiment
- Don't Get Frustrated
Next Steps for Solving Problems
- Data Structures
- Present strategies for organizing information in programs
- Algorithms
- an input, a defined set of steps, an output
- Design Patterns
- Reusable concept for structuring code
- A writing "cliche" for code
- Reusable concept for structuring code
Language Agnostic
Books for Further Reading
Other Resources
- Codility
- codewars
- Stanford Online
- Coursera
- iTunes U
- Udacity (paid courses)
Presentation Sources
- https://www.youtube.com/user/vantonspraul
- http://brikis98.blogspot.com/2014/05/dont-learn-to-code-learn-to-think.html
- http://slides.com/erikralston/how-to-think-programmer-introduction/#/
- http://happybearsoftware.com/how-learning-data-structures-and-algorithms-makes-you-a-better-developer.html
- http://skillcrush.com/2014/06/26/the-developer-mindset/
- http://blog.andrewshell.org/developers-and-the-growth-mindset/
WWC September Meetup: Think Like a Programmer
By Erica Stanley
WWC September Meetup: Think Like a Programmer
Have you been teaching yourself to code and aren't sure where to go next? This session is intended to provide an introduction to the things they don't teach you on CodeAcademy, including: problem solving, ways to structure your code and how to use algorithms, data structures, and design patterns to build applications, plus the soft skills you'll need to succeed as a developer.
- 4,989