These resources are for high school computer science teachers, university faculty, or anyone working in, studying, or curious about software engineering.
I was “out and about” online looking for some entry-level coding resources to help my daughter’s curious friend begin exploring and experimenting with coding. He is entering high school and has a lot of great ideas, along with the energy and enthusiasm to pursue those ideas. He had an idea for a new app, and he wasn’t quite sure where to even begin building his software development skills. That’s not something we’re really offering at this time, but in the interest of “helping him succeed” and feeding the needs of future technologists, I went in search of free, user-friendly resources that would allow him to learn by doing. Exploring and playing around with technology is the fastest, most effective and most affordable way to learn, and that’s what people need to get engaged and build new skills. I was so excited about what I found that I had to share the resources here. This blog is for you Rafael!
The guide provides tips and resources to help you develop your technical skills through self-paced, hands-on learning activities. It is intended for self-taught, advanced high school or university-level Computer Science students considering seeking an internship or full-time job in the tech industry generally. The resources shared here are intended to help supplement your education or provide an introduction to relevant topics.
Whether you’re a student or an educator, newer to computer science or a more experienced coder, or otherwise interested in software engineering, there’s something you can benefit from in this curated set of hands-on learning activities and other resources compiled into Google’s Guide to Technical Development. You can use any of the guide’s resources, in any order. But, if you’re not sure where to start, you can follow one of the recommended learning paths below based on your current skill level. These resources and recommended learning paths have been curated by university computer science faculty and Google engineers with students in mind..
Choose a Learning Path
You can use any of the guide’s resources, in any order. If you’re not sure where to start, why not follow one of these paths curated by university computer science faculty and Google engineers?
Foundations of Programming
This learning path includes free online learning resources created to reinforce basic software engineering skills for new programmers. If you’ve already taken a class or two, try this selection of resources to supplement and expand what you’re learning. This resource set is great for general practice and gets into topics like mastering lists, strings, objects and references, values and pointers, and testing and debugging.
With 33 free learning activities included in this subset of resources, you can decide where you’d like to start!
- Solve Problems! Do you prefer hands-on practice and putting your skills to the test in order to prefer to test your skills first to get a sense of what you may still need to work on? Start off trying to solve a few hands-on challenges and see how you do.
- Practice testing & debugging! Build confidence with learning activities that let you practice checking and fixing your own code!
- Complete them in order! Start with the easier resources first, and build your confidence as you advance through the material.
This learning path sharpens skills and tools for experienced programmers and advanced students. If you’re beyond introductory university courses or are an experienced coder, these resources may help you refine your skills and technical know-how as you prepare for a career in the tech industry.
With 21 free learning activities included in this subset of resources, you can decide where you’d like to start!
- Practice Problem Solving! For more experienced programmers with hard-to-spot knowledge gaps, the sequence of activities starts with questions and activities that help you identify those areas of skill building that may require a little more attention from you.
- Open Source First! Creating code from scratch is not cost-efficient or a good use of your time! Skillful [and resourceful] software developers know how to find and leverage great snippets of code that soeone else has already developed and used. In this sequence of hands-on learning activities, you’ll learn to “use open source code effectively”.
- Recommended Sequence. Complete them in order! Continue your coding journey by going through a sequence of activities that build important software engineering skills.
This learning path takes you to the cutting edge of computer programming – but keeps you from falling off! The hands-on learning activities in this curated content set help you get a good handle on machine learning through online coursework and competitions.
Consider this your Machine Learning Crash Course (MLCC). Once you have the basics down, you can build your skills and confidence by applying ML techniques to big datasets in real-world competitions.
If you are ready to move past traditional programming and explore machine learning, start here. Once you build the skills you need in this toolkit, you can practice real-world problems in Kaggle competitions.
With 60 free learning activities included in this subset of resources, you can decide where you’d like to start!
Check out these free machine learning resources!
These resources help you build your skills in three key areas: Cloud applications, Data & Machine Learning in the cloud, and cloud infrastructure management. The content curated and included in this subset of learning activities will help you build skills in the following areas:
- Application Development – Learn to use cloud to develop applicaitons, games and online services. Dig into Google’s Compute Stack, serverless architectures and clou storage in order to build products that take advantage of the cloud.
- Data & Machine Learning – Dissect massive datasets. Improve your understanding of data and new tools used to take maximum advantage of that data, like BigQuery, Dataprep and CloudML – all of which can be leveraged for data analysis and machine learning.
- Cloud Infrastructure for Application Optimization – Learn to monitor an application with Stackdriver, deploy microservices at scale with Kubernetes, manage access control and more [courtesy of Google].
With 53 free learning activities included in this subset of resources, you can decide where you’d like to start!
Hands-on Learning Activities
Foundational Programming Activities & Practice
These practice exercises and skill-building challenges have been curated by Google to help you build your foundational programming skills. Enjoy!
- Former Coding Interview Question: Find longest word in dictionary that is a subsequence of a given string
- Using strings in Java (Java For Beginners: Strings, String Functions & Chars)
- Using arrays in Java (Java For Beginners: Arrays)
- stringSplosion problem
- maxSpan problem
- withoutString problem
- sumNumbers problem
- canBalance problem
- Hangman Part 1: Challenge
- Hangman Part 2: One open source solution
- Concept Challenge: References and Objects
- Mapshare problem
- Java Object References
- Sort array problem
- Simple interpreter problem-solving, in Java
- Simple interpreter problem-solving, in Python
- Hash Tables
- Implementing a key value store in a hash table
- word 0 problem
- wordLen problem
- Pairs problem
- wordCount problem
- encoder problem
- Compiler Rules for Class Construction
- Riffing on Unit Testing
- Debugging Your App
- Testing Your App
- blackjack problem
- evenlySpaced problem
- collapseDuplicates problem
- makeBricks problem
- 5 Java Debugging Problems You Probably Have and How to Solve Them
- Former Coding Interview Question: Minesweeper
Advanced Programming Activities & Practice
These practice exercises and skill-building challenges have been curated by Google to help you build and practice more advanced programming skills. Enjoy!
- Former Coding Interview Question: Compression and Decompression
- Testing and confidence: Optimizing performance
- Algorithmic problem solving and interviews
- Challenge: Which tests should you run?
- Google’s Applied CS Skills program
- Learning multiple languages: Java for Python programmers
- Learning multiple languages: Java for C++ programmers
- Learning multiple languages: Python for Java programmers
- Working in multiple languages: “Distributing Candies” problem
- Working in multiple languages: Palindrome Permutation II
- Working in multiple languages: Maximum Vacation Days!
- Movie Review Sentiment Analysis
- Wikipedia accuracy review
- App development for infectious microbial genomics (former Summer of Code project with Google)
- Open source skills: Commonly used GitHub tips and tricks
- Open source skills: GitHub usage and workflows
- Tool up: A sampler of tools for software engineers
- Existing code base: Working on someone else’s code
- How to Read Code: 8 Things to Remember
- Existing Code Base: Hug Life
- Former Coding Interview Question: Find the Volume of Each Lake Created by Rainwater
Visit the Resource Library
Check out all the different learning resources in the guide: problems and projects, former Google interview questions, online courses, education sites, videos, and more.
If you don’t want to follow a sequence suggested by content curators, you can move freely throughout the available learning activities and content. The resource library includes all the items listed in all the pathways referenced above – all sortable by content category referenced above.
This is a great set of resources for any existing or aspiring technologist looking to build our their skills. As always, is it important to give credit for the curation of these resources where it is due. The information referenced above has been gathered via Google’s work with students, faculty, and universities. In particular, Google has acknowledged the contributions of their outstanding volunteer faculty advisors: Laleh Behjat, University of Calgary; Judith Gal-Ezer, Open University of Israel; Mia Minnes, University of California San Diego; Sathya Narayanan, California State University Monterey Bay; and S. Monisha Pulimood, The College of New Jersey. They gave substantial input to the design and content and helped keep the needs of their faculty peers and students front and center.
Call to action!
Share your favorite or most helpful learning activities in the comments below for others in the Cybr Community to benefit from!