Skip to main content

Learning to Learn #

Learning is a life long process, and learning computer science is no different. This set of articles serve to be an overview to some of the areas of academics and life that I get the most questions about. Think of them as something between a frequently asked questions and an introduction to a topic.

What order should I tackle these? The articles are grouped by topic, so you can start reading through them according to the topics you are interested in. However, if you have no idea of where to start, consider reading the articles in “Meta” first. These articles will better equip you to read and get something out of the other articles

Along the way you will find activities added to each post formatted like this:

  • This is an activity designed to help you master the content in this section

Lastly, if you find the articles insufficient in some way, please email me, and I’ll try to make updates to fill out the missing information

Meta #

Process #

  • Linux how to get started with learning and using Linux
  • Software Development how to approach writing a software project using Linux
  • Software Patterns how to approach writing a software project using Linux
  • HPC how to write software for High Performance Computing
  • Experiments how to write empirical computer science experiments
  • Software Teams: how to lead and be an effective member of a software team

Programming Languages #

  • C++ how to learn C++, a low-level systems language that helps you get the most out of your hardware
  • Python how to learn Python, a high-level programming language aimed at developer productivity

Tools #

  • CMake the defacto C++ build system
  • GDB the most commonly used open source debugger for natively compiled languages.
  • MPI the defacto parallel processing framework in C++ for HPC

Most Recent Updates #

2019


Learning to Learn: Studying New Topics

·2193 words·11 mins

Efficient study of a topic is a powerful skill for a wide variety of domains. However – despite having several classes on writing and research in High School and Undergraduate Studies – it wasn’t something that I truly appreciated and learned how to do well until Graduate School. I think this really boils down to lacking the kind of personal application that makes these efforts meaningful. However now that I have come to appreciate it, I want to highlight how I think how I study new topics, and how this applies to many topics outside of academic research.

Learning to Learn: Python

·2157 words·11 mins

Python is a relatively simple language compared to others such as C++. Despite its simplicity, Python really shines because of its robust standard library, extensive 3rd party library ecosystem (especially for statistics and data analysis), and intuitiveness. This post tracks my process of learning how to program well in Python.

2018


Learning to Learn: Reading

·1548 words·8 mins

From time to time, I get questions about how I read and retain as much information as I do. While it is never easy – especially with dry technical documents – there are a few strategies that I have learned along the what that I find helpful. In this post I provide some general suggestions along with some that are more useful in computer systems research.

Learning to Learn: Software Patterns

·3164 words·15 mins

Foundation Parallel Operations #

Fundamental to developing high-performance software is having an understanding of the basics of parallel architecture.

Learning to Learn: C++

·2514 words·12 mins

C++ is a huge language. It has tools form imperative, functional, object-oriented, and generic paradigms. And that leaves out the extremely fine control over things like memory allocation strategies in the standard library not generally available elsewhere. In this post, I present my learning path through C++ and offer some suggestions for learning this multi-faceted language.

Learning to Learn: Intake

·735 words·4 mins

From time to time I get questions about how I stay apprised on all of the topics that I know something about. The short answer is a lot of reading and listening.