Michael Safyan

Programming Resources

Programming Resources

While I will try to provide as much material on programming on my website as is reasonably possible, I realize that I won't be able to cover all your needs. Hopefully, if you can't find what you're looking for on own my website, you'll find whatever information you were looking for on one of these superb third-party websites, instead.

General resources

These sites cover a wide variety of programming languages, technologies, and topics:

  • StackOverflow for help with specific coding questions
  • CodeCademy for introductory courses on a handful of programming languages and technologies
  • Udacity for online courses on a variety of technical topics
  • Coursera for general life-long learning, including courses on technical topics
  • Google Developers channel on YouTube for how to leverage Google technologies in your apps
  • GitHub for hosting and contributing to code as well as for searching for and browsing code
C++ resources

Everything you need to become an expert in the C++ programming language can be found below:

For writing applications, you may find the following libraries to be helpful:

  • Protocol Bufers for cross-languages/cross-platform data serialization
  • Google Glog for logging debugging information during program execution
  • GFlags for defining and parsing commandline flags in C++ programs
  • Google Test for writing C++ unit tests
  • Google Mock for easily defining mock objects and mock expectations for use in C++ unit tests
  • Boost C++ Libraries for various powerfull, cross-platform C++ libraries (more commandline or server-oriented)
  • Qt Project for a variety of powerful, cross-platform C++ libraies (more GUI / native application-oriented)
  • Magick++ for image loading and proceessing in C++

More

Java resources

The following resources may be helpful in learning more about Java:

For writing applications, you may find the following libraries to be helpful:

More

Python resources

The following resources may be helpful in learning more about Python:

For writing applications, you may find the following libraries to be helpful:

  • Protocol Bufers for cross-languages/cross-platform data serialization
  • Kivy for writing cross-platform user interfaces in Python that run on Android, Mac OS X, Windows, and Linux
  • SciPy for numerical and scientific computing within Python
  • Jinja2 for powerful template substition in Python
  • Python Image Library (PIL) for image processing in Python
  • PyGame for writing cross-platform games in Python
  • PyGame Subset for Android for using PyGame on Android via Python for Android

More

Web development resources

The following should prove useful for learning more or finding reference information about HTML, CSS, and JavaScript:

When writing a web application, you may find the following libraries and tools to be helpful:

  • Polymer for reusable UI widgets using Web Components
  • AngularJs for a web application framework for writing single page applications in JavaScript
  • PhoneGap for packaging HTML/CSS/JavaScript as native apps and gaining access to native platform features
  • Closure Compiler for optimizing and minifying JavaScript
  • Clean CSS for minifying your CSS code
Algorithms and Data Structures resources
Version control, build system, and other tooling resources
Disclaimer

My statements are my own and do not necessarily reflect the opinions of Google Inc.