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
- Journaling, Task Management, and Time Tracking: three foundational skills for everything else
- Reading: how to get the most out of technical documents
- Studying: how to go about learning new topics
- Intake: how to stay up to date on current topics
- Writing: how to summarize topics for others to learn
Process
- Linux how to get started with learning and using Linux
- Software Development 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