Learn Python from the NSA
Tags: python, nsa, studygroup, london
Published: 2020-03-06 20:23:23

---
title: Learn Python from the NSA
published: true
description: Interested in learning Python? The NSA have released their internal Python training course under FOIA, and it's good!
tags: python,nsa,study-group,london
---

# The actual NSA?

You heard right.

On 7 Feb 2020, [Chris Swenson released](https://twitter.com/chris_swenson/status/1225836060938125313) the scanned, OCR'd output from an FOIA request he made to the NSA - asking for their Python training materials. It's a 400-page 180Mb PDF. [[mirror](http://bit.ly/COMP3321)]

Shortly afterwards, [Sherif Eldeeb released](https://twitter.com/0xdeeb/status/1226388929626202112) a reduced, 18 Mb version. [[mirror](http://bit.ly/COMP3321-reduced)]

_NB. These aren't people I've met - they just did a cool thing and shared it with the wider community. That's one of the benefits of FOIA and sharing openly - everybody benefits!_

# So what's in it?

It's the full training course for NSA staff learning to code in Python - starting right at the beginning. It's designed to be taught in a classroom setting, or self-taught so you could start today if you wanted to.

The course is broken into approximately 20 modules split across 2 weeks. 

In the first week, participants learn the principles of Python from the very basics, all the way through functions to object orientation and more advanced concepts. It's well structured, and littered with explanations, examples, and code snippets to try for yourself - each teaching you something or reinforcing a lesson about how Python works.

In the second week, the course offers a number of optional modules where students can opt to deep dive into particular libraries or capabilities, eg. the Pandas library (for working with data sets), or how to assemble a web application, etc.

# So how can I get started?

Well, you could start at the beginning and work your way through it... It's made for self-study so hopefully it's helpful and clear all the way through.

You'll need to install [Anaconda Python](https://www.anaconda.com/distribution/) - _that's a distribution that's a little more checked and assured than regular Python - but don't worry, almost everything is included!_ and a good editor: I'd suggest [PyCharm for Anaconda](https://www.jetbrains.com/pycharm/promo/anaconda/) from JetBrains, or [Visual Studio Code](https://code.visualstudio.com/) from Microsoft - but anything that can edit a `.py` file will do!

Another way to get going with it is to learn with friends - and this is my angle on this... The volunteer group I work with, [Police Rewired](https://policerewired.org), are holding an [NSA Python study-group](https://www.policerewired.org/home/nsa-python-study-group) on March 28th. If live in London and you'd like to join us, check it out.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/i8v52jgi97n5oqc9xgay.png)

If you'd like to set up one of your own, you could learn from our experience - so check in afterwards as we'll be writing up what worked, what didn't, and how we're going to do the next one...

To find out more, follow [@policerewired](https://twitter.com/policerewired) on Twitter, or [join our community](http://bit.ly/PoliceRewired-community).