A MIT Crash Course On Hacker Tools
Written by Nikos Vaggalis   
Monday, 08 April 2019

MIT has provided an online version of crash course on navigating the command line, using a text editor and version control, automating mundane tasks, managing packages and software and configuring your environment. 

Being at least familiar with the command line and knowing how to set up a programming environment is an essential aspect of today's college classes, even not those directly associated
with Computer Science.This MIT class, originally presented on-campus during the winter break, aims to fill that gap by familiarizing students to those handy computing practices.

We've felt the importance of that in the article "How To Successfully Teach Computing Disciplines To The Uninitiated" where we saw how you can turn a student with little background in computation into a competent programming computer user, witnessing how SciNet, the supercomputer department of the University of Toronto, teaches computing disciplines to graduate students in emerging fields such as computational biology and computational medical science:

Its challenge is to bring students without a background on CS up to speed with coding and software development practices and render them able to perform computational and statistical analysis as well as machine learning on data that pertain to their field of science, in accordance with the trend that nowdays working with data is just about everywhere.

Examples are, clinical trials, drug tests, medical cases, hospital treatments, differential gene expressions, and more. For example, Biomedical computation typically involves statistics, data analysis and knowledge in interpreted languages. 

The SciNet curriculum included amongst other topics:

  • Introduction to the Linux Shell
  • Introduction to programming with R
  • Introduction to version control
  • Binary file input/output. Accessing, reading and writing binary data, file input and output strategies, and best practices.
  • Basic statistics using R. Review of the basic concepts of probability and statistics, probability distributions, descriptive and inference statistics.
  • Introduction to machine learning. Regression, overfitting,
    bias-variance tradeoff, cross-validation, bootstrapping, LOESS, LOWESS.
  • Advanced machine learning. Variable selection, dimensionality reduction, principal component analysis.
  • Visualization of data. Publication-quality figures, basic plotting,1D (curves), 2D (contour maps, heatmaps, dendograms,etc) and 3D plots, interactive visualization, animations.

The MIT course, was also motivated by the observation that MIT's classes do not cover any of this content in detail, despite them being the essential stepping stone for performing the more serious scientific work.

Unlike SciNet's proposition, which also involved ML and Statistics, this one is free from the scientific burden and, with a focus on DevOps, is dedicated to more practical needs. Its chapters cover:

  • Virtual machines and containers
  • Shell and scripting
  • Command-line environment
  • Data wrangling
  • Editors
  • Version control
  • Dotfiles
  • Backups
  • Automation
  • Machine introspection
  • Program introspection
  • Package/dependency management
  • OS customization
  • Remote machines
  • Web and browsers
  • Security and privacy

The essential tools for "hacking" as the title says.

Each chapter is a mix of a single page html file together with an accompanying video.With that said let's take a quick look at what's in store.

In the chapter Virtual Machines we not only get a run down on what a VM is and why it is useful but we see it compared to Containers too.

Shell and scripting.Not just the basic, core commands such as cd, ls, cp, mv, but also the shell for Composability (pipes and the likes), Job and process control.

Command-line environment.From Aliases & Functions to Terminal Emulators & Multiplexers.

Data wrangling.Grep,sed,awk for pattern matching and manipulating text.

Editors; more like an intro to THE real hacker tool,Vi(m).

Version Control.The principle with examples in Git.

Configuring and customizing your tools with Dotfiles. Especially useful for Vi.

Why to Backup.

Automation with Crontab and its newer counterpart Anacron.

Machine introspection and Program introspection, or dealing with log files and debuggers.

Package/dependency management.

OS customization;that is Keyboard Mapping and Window management.

Accessing Remote Machines with SSH.

Web and browsers

Apart from the terminal, the web browser is a tool you will find yourself spending significant amounts of time into. Thus it is worth learning how to use it efficiently.

Security and Privacy.Basic instructions on how to keep safe online.You know, use a password manager, Encrypted communications (Signal,HTTPS,Tor),etc

So that's it,a crash course for anyone starting out with the principles of computing, directly or indirectly.There's also an official reddit forum r/hackertools of the class where you can freely post your observations, comments or questions.

More Information

Hacker Tools



Related Articles

How To Successfully Teach Computing Disciplines To The Uninitiated


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on, Twitter, Facebook or Linkedin.



Introducing Jetpack Compose for Desktop

JetBrain's Jetpack Compose for Desktop is an open source project being developed in collaboration with Google’s Jetpack Compose, intended to simplify and accelerates UI development for desktop appli [ ... ]

.NET For Apache Spark Updated

The .NET bindings for Spark have been updated. The new 1.0 version adds support for .NET apps targeting .NET Standard 2.0 or later, as well as support for Apache Spark DataFrame APIs.

More News






or email your comment to: comments@i-programmer.info

Last Updated ( Monday, 08 April 2019 )