I don't have a typical computer science background; I spent my undergrad learning pure mathematics and analyzing Russian texts. When I got to grad school, I just learned concepts on an as-needed basis for my research, classes, and teaching/mentoring. As you might expect, this means I have a few gaps to fill, so I've spent some time lately improving my computer literacy:
- Enough HTML5 and CSS to create and improve this website. Many thanks for the lovely starting template provided by @ajl . The content of this site is also still a work in progress, as you may have noticed. Resources I've found useful:
- Python. I went through Learning Python the Hard Way
back when it was free. It passed the time whenever I needed a break from
writing my dissertation. I more or less finished it, with the exception of the
last exercise, which involved writing some text-based game; at this point my
motivation failed me and I finished my dissertation instead. Returning to
Python in 2017, I've continued with 2.7 since I half-remembered the basics
anyway. The following resources have been helpful:
- Exercism is a handy way of reviewing and improving your Python. The interface is quite nice: you fetch and submit problems using Git, and once you've submitted a (potentially non-working) solution to a problem, you can read and learn from other peoples' code, too. This has led to forays into various modules as well down the rabbit hole of regular expressions.
- The Hitcherhiker's Guide to Python is useful for general reference and attempting to make your code adhere to best practice.
- This tutorial is well-organized and detail-oriented.
- Vim. I have been doing all my programming and non-LaTeX text-editing using Vim for the past several months. I did run through the Learn Enough Text-Editor to be Dangerous to start, but since this isn't Vim-focused, I've just supplemented my learning by Googling as needed. I hope that by the time Michael Hartl finishes Learn Enough VIM to be Dangerous I won't need a tutorial any longer.
- The command line. I've been through the following tutorials:
- Shell-Scripting. I've written some basic scripts in the past, and have recently read Learning the Shell.
- Algorithms, data structures, and more. I'm reading through the classic Introduction to Algorithms. So far I've learned heaps.