Resources

Resources

This page features resources that students, teachers, Dev Day Yuma mentors or anyone interested in computer science or computer science education can use to discover more about software.

Scratch

Scratch is the free and easy-to-use drag-and-drop programming environment used for Dev Day Yuma 2017.  Scratch was developed at MIT to help pre-teens and teens learn to create software, but Scratch is also used by teachers, engineers and scientists for professional applications such as rapid prototypes and software simulations.  Scratch doesn't require users to learn a programming language to create working software, and there are a number of online tutorials and learning resources that have been developed specifically for Scratch.  The Scratch website is here: https://scratch.mit.edu/

 

Easy Scratch Tutorial

Here's a simple, 10-minute Scratch tutorial that appears to have been created with Scratch itself: https://scratch.mit.edu/projects/31407152/

 

Dev Day Yuma Scratch Orientation Videos

Below is a series of Scratch orientation videos recorded by Derek Konofalski:

 

Scratch Orientation Video 1  - Intro to Scratch; the stage; sprites; blocks; moving objects.  Time: 9:33.

 

Scratch Orientation Video 2  - Looks blocks; think blocks; show/hide blocks; Sprite costumes; layers; sounds.  Time: 8:56.

 

Scratch Orientation Video 3  - Control blocks (wait, repeat, forever).  Time: 8:31.

 

Scratch Orientation Video 4  - Making a project interactive; creating a game; control blocks (if then else); sensing blocks; Sprite info; duplicating blocks; new sprites; data blocks; variables; operators; Scratch help.  Time: 19:03.

 

Dev Day Yuma 2017

Dev Day Yuma 2017 Exercises

Here are links to the Scratch exercises used during Dev Day Yuma's 2017 event:

Driving game (easy)

Clay shooting (medium)

Cat and mouse (medium-difficult)

Moon landing (difficult)

 

Dev Day Yuma 2017 Presentations

Here are links to PowerPoint presentations (in PDF format) shown at Dev Day Yuma 2017:

Computer Software Basics

Careers in Software

Online Learning

Here are links to some cool online learning resources for software.   All offer free courses or programs.

 

Lynda.com

Have a Yuma County Library card?  You can use it to gain free access Lynda.com's vast array of software and web design tutorials - everything from game design to object-oriented programming to designing iOS apps with Swift.  Here are the Library's instructions on how to access Lynda.com.

 

Coursera

Coursera provides free online learning resources from a number of leading universities.  Topics include data science, Python, MySQL, algorithms, programming languages and machine learning.

 

edX

edX is similar to Coursera and provides free online courses from MIT, Harvard and UC Berkeley, among other top universities.

 

Software Carpentry

Software Carpentry's Lessons page features some unique and free courses on software development, including topics like version control.

 

Code.org

Code.org is a Seattle-based non-profit dedicated to improving access to computer science education for students of all ages, especially females, minorities and disadvantaged participants.  Code.org is perhaps best known for its "hour of code" events, which it promotes around the world.  Code.org's web site also features a comprehensive 3rd-party resource page, categorized by education level.

 

Codecademy 

Codecademy provides free and paid online tutorials for a number of programming languages, and will soon provide a tutorial for the Java programming language.

 

Khan Academy

Khan Academy provides free online learning resources for a wide variety of subjects, one of which is computer programming.

Computer Science Education

Below are links to resources for pursuing college-level computer science and software education in Yuma and in Arizona.  If you're a high school student, see your career counselor about all of the options available to you around higher education in computer science or computer information systems.

 

STEDY and AWC (Yuma):

The Southwest Technical Education District of Yuma (STEDY - Yuma's JTED district) will offer a programming course and a software certificate in the Fall of 2017.  STEDY also offers a CIS (computer information systems) curriculum.  Arizona Western College (AWC) offers Associates' degrees in computer information systems and computer science.

 

UofA and ASU:

The University of Arizona and Arizona State University both offer a complete set of undergraduate and graduate degree programs in computer science, including Bachelors, Masters, and PhD programs.  Learn more about the University of Arizona's computer science programs here.  Learn more about Arizona State University's computer science programs here.

Programming languages

High-level programming languages

 

Python is a popular, general purpose programming language that is frequently recommended as a great first language to learn.  Python is an interpreted language that is used for a wide variety of applications, including web applications, operating systems, 3D animation applications, video games and security apps.  Python is used by many large organizations such as Google, Yahoo!, NASA and Reddit.

 

Python resources:

Python website: https://www.python.org/ - this site has links to lots of Python resources, including pages that cover programming in Python for beginners.

Python Wikipedia article - lots of good background information on Python.

 

Python IDEs:

Thonny - a free IDE that's optimized for beginners; features run-time visualization tools.

pythonanywhere - a free, cloud-based (multi-platform) integrated development environment (IDE) for Python - looks like a great tool for students!

PyScripter - a free Python integrated development environment (IDE) for Windows.

 

Python books:

Python Programming: an Introduction to Computer Science (Amazon.com) - John Zelle - this widely regarded text uses Python syntax to teach computer programming.

Fluent Python: Clear, Concise, and Effective Programming (Amazon.com) - Luciano Ramalho - a popular hands-on guide to Python programming.

Python Pocket Reference: Python In Your Pocket (Amazon.com) - Mark Lutz - a pocket reference to the Python programming language.

 

 

 

 

Java is an immensely popular, object-oriented, general purpose programming language.  Java is widely used in client-server applications and is the standard language for Android mobile applications.  Java was developed at Sun Microsystems and is now owned by Oracle Corporation.

 

Java resources:

Java website: https://www.oracle.com/java/index.html

Java Wikipedia article - contains lots of info on the history of Java.

 

Java IDEs:

Android Studio - the official IDE for Android.

Eclipse - the most popular Java IDE.  Neon is the current version as of March 6, 2017.

NetBeans - a free IDE for Java, JavaScript, HTML5, PHP and C/C++.

IntelliJ IDEA - the Community version is free.

 

Java books:

Learning Java by Building Android Games (Amazon.com) - John Horton - this book combines teaching about Java with example games built in Android Studio.

Head First Java, 2nd Edition (Amazon.com) - Kathy Sierra - popular on Amazon, and used as a text in some college-level introductory programming courses.

Learn Java in One Day and Learn It Well (Amazon.com) - Jamie Chan - a handy intro guide to Java programming.

 

 

 

Swift is the language for developing iOS (iPhone and iPad) mobile apps.  Swift, introduced in 2014, is Apple's replacement for Objective C.

 

Swift resources:

Swift website: https://swift.org/

Swift Wikipedia article

Swift playgrounds - an interactive tutorial app designed to help developers learn Swift via a video game-like interface.  Download the mobile version of Swift playgrounds at iTunes.

 

Swift IDEs:

Xcode - Apple's own IDE for Swift.

AppCode - JetBrains's IDE for iOS and MacOS development.  AppCode supports Swift, C, C++, JavaScript and HTML.

 

Swift books:

Learn to Code in Swift: The new language of iOS Apps (Amazon.com) - Kevin J McNeish - a clearly written guide that is reportedly a great resource for beginners.

Swift 3 Game Development - Second Edition (Amazon.com) - Stephen Haney - this recently released edition has no reviews yet but Stephen Haney's previous book on this topic (Game development with Swift) was well-liked.

Swift for the Really Impatient - 1st Edition (Amazon.com) - Matt Henderson - a great intro to swift for experienced programmers and Objective C users.

 

More languages

 

 

Ruby is a general purpose, object-oriented programming language that, like Python, is relatively easy to learn and use.  Ruby is the key element of the popular Ruby on Rails web application framework.  Ruby is used by Twitter, Groupon and GitHub and is popular for backend development on sites such as Airbnb, Shopify, Bloomberg, Hulu, and Slideshare.  Learn about Ruby and Ruby on Rails via Wikipedia.

 

 

C is a venerable structured programming language that has been widely used in embedded (microprocessor-based) systems and mainframe computing applications.  C++ is a newer, object-oriented variant of C that has found wide use in resource-constrained and performance-critical applications.

 

 

 

HTML 5 is a markup language that supports audio and video in web pages and is thus frequently compared to Adobe Flash.

 

 

 

PHP is a general purpose scripting language that is primarily used in web server applications.   Learn more about PHP at its Wikipedia page.

Scripting languages

Scripting languages are heavily used in web pages and in web software design.  The "holy trinity" of scripting languages consists of JavaScript, HTML and CSS.  Each is described below:

 

 JavaScript

JavaScript is an immensely popular scripting language that should not be confused with Java.  Though JavaScript shares some syntax with Java, the two languages are different and are used for different applications.  JavaScript is used in most web pages but is also used in non-web applications such as PDF documents.

 

 

 

HTML (hypertext markup language) is an ubiquitous markup language that is used to create web pages and web applications. 

 

 

 

CSS (cascading style sheets) is a language for describing how web pages are presented, i.e. for defining the "style" of web pages.  CSS enables web developers to create web sites that have a consistent design across different pages.

 

Making HTML, CSS and JavaScript work together: check out this great tutorial video on YouTube: Web Design 101: Understanding How HTML, CSS, and JavaScript Fit Together on the Web

Programming tools

Good programming warrants the use of programming tools: software applications that make programming easier and in some cases, possible.   Here are several important types of programming tools: 

 

IDEs (integrated development environments) - IDEs typically contain several functions that are critical to the process of creating good software code: a source code editor / syntax checker, a compiler or interpreter , build automation tools and a debugger.  An editor / syntax checker helps a programmer write code in a specific software language; the syntax checker helps the user ensure that the code being written is syntactically correct.  The compiler and build automation tools of an IDE help the user convert the source code (the code the user has written in a high-level language) to machine code, i.e. a file or set of files that the target computer can run.  A debugger helps programmers debug and correct software. A debugger typically allows a programmer to set "breakpoints" - places in the code where the program stops running - and to step through code, one instruction at a time.   The Programming Languages section of this page (above) lists several popular IDEs.

 

Version control tools - version control applications help programmers keep track of changes made to different versions of software code.  Version control becomes critically important when multiple versions of an application are released to end-users or the public, and when multiple programmers are involved in creating an app.  Popular version control applications include CVS, SVN, Git and Mercurial.  All of these are available for free; here's an article that discusses the pros and cons of each.  GitHub is a popular startup that provides enhancements to Git as well as source code hosting collaboration tools for a monthly fee; students can get free access.

 

Issue tracking tools - which generally include bug tracking features, are software applications that help development and support teams manage software bugs and customer support issues.  Complex software applications can accumulate many bugs or anomalies during development and after release to end-users - too many to track without the help of a tool.   Issue tracking tools can help software development teams identify which bugs are most severe; they can also track progress on implementing a fix.  Popular issue tracking applications include Bugzilla, MantisBT, Fogbugz and JIRA.

Our Sponsors