Language Resources

Thomas J. Kennedy

Contents:

Every semester I am asked “What resources do you recommend I use to learn {language or topic}?” This is the type of question that I usually answer via email or one-on-one. However, this is one of the most important questions to ask.

 

If I were to ask myself this question, I would break it up:

  1. What resources should I bookmark for reference?
  2. What resources should I use to guide me?
  3. What resources should I use for inspiration?

The remainder of this document will be broken up by language. The table of contents (at the top of this document) will allow you to jump to a specific language.


1 C++

Since CS 150 & CS 250 are taught in C++, you are already familiarity with the basics of the language. However, modern additions (i.e., those added in C++11, C++14, C++17, or C++20) add some nifty features.

The site https://en.cppreference.com/w/ is the de-facto reference for all functions and data structures in C++. In fact, this is the same site I reference in my lectures.

If you are looking to refresh you C++ knowledge and incorporate modern practices, take a look at

C++ Crash Course A Fast-Paced Introduction by Joshua Lospinoso

It covers C++ from the beginning using C++17 features. You can find a brief sample of the book and links to online retailers at https://ccc.codes/.

1.1 Modern C++

C++11, C++14, and C++17 have introduced a number of changes and additions to the language. There are a few libraries that stick out in my mind:

2 Java

Java was the first language I learned (way back in 2004). While I have updated my examples with modern practices and approaches, I do not currently have any recommended resources.

3 Python

If I am not careful… this section will end up to be a novel! Python is probably my favorite language. Its Batteries Included Philosophy makes the language extremely powerful.

In fact… I often get into debates with my colleagues about possible CS 410-411 projects… then spend a few hours throwing together a Python demo or two!

Take a quick look at Switching to Python.

3.1 PEP

PEP (Python Enhancement Proposals cover a number of topics. I keep a few bookmarked:

PEP 20 (The Zen of Python) is particularly important!

3.2 Learning the Python Language

I am a fan of the Writing Idiomatic Python e-book.

3.3 Python Programming Videos

Over the past year I have accumulated a number (close to 100) of videos in a Code Notes playlist on YouTube. These videos include conference talks on various languages (mainly, C++, Python and Rust), interesting projects (e.g., remastering Star Trek footage with machine learning), and interesting technologies (e.g., Graph Databases).

3.3.1 Raymond Hettinger

A few of the most interesting videos are recordings of conference talks by Raymond Hettinger (A Python Core Developer). He has given many talks over the past few years, but there are two that stand out in my mind:

3.3.2 Python Performance

There is an interesting talk titled How to Speed up a Python Program 114,000 times. by David Schachter. He discusses a number of tricks, including:

4 Rust

Rust is a fairly young language–and my current new shiny tool. The official site has many resources to get started. Navigate to https://www.rust-lang.org/learn.

If you are looking for a book take a look at

The Rust Programming Language (Covers Rust 2018) by Steve Klabnik and Carol Nichols

 

The digital form can be found on GitHub. A physical copy can be found here.