---
# System prepended metadata

title: Programming
tags: [data-engineer]

---

---
title: Programming
tags: data-engineer
---

DED team recommends the following resources by programming language. Feel free
to reach out on our Slack channel `#ded-prog` for any questions, especially if
you're unsure whether you should commit to a particular resource or where to go
next. Each learning resource is tagged with its code and either `F/`, `I/`, or
`A/` (Fundamental, Intermediate, or Advanced) concatenated with the estimated
hours to complete. You should go through or be comfortable with topics in `F`
resources.

# Sample Learning Paths
We list here a few sample learning paths based on specific backgrounds, mostly
for people who are new to or have just some programming experience. If you are
a senior developer, you know best! Please browse through the list of all our
resources below.

# Common
Includes topics that are not language-specific. If something is, the language
will be explicitly stated.

## Tools
* `C.T.F1` `F/15` (Course) [Essential tools (Shell, Editors, Version Control)](https://missing.csail.mit.edu/) –
  Very helpful. Covers all essential tools to work effectively. Highly
  recommended. There is an in-progress [Vietnamese translation](https://missing-semester-vn.github.io/).

## Data Structures & Algorithms
* `C.DSA.A1` `A/100` (Book) [The Algorithm Design Manual](https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=pd_sbs_5?pd_rd_w=0Kquw&pf_rd_p=de2765fe-65e5-4a88-aaad-a915dea49c67&pf_rd_r=HD873B1XFKYPEAF1J8F5&pd_rd_r=c046f914-72aa-46a8-8fd3-c7e5a5fa3dfb&pd_rd_wg=HSkv6&pd_rd_i=1848000693&psc=1)
* `C.DSA.A2` `A/200` (Book) [CLRS](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)

# [Python](https://www.python.org/)
The followings are loosely in suggested order.

* `P.P.F1` `F/30` (Course) [Introduction to Computer Science and Programming in Python](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/); OR
* `P.P.F2` `F/20` (Book) [Python Crash Course](https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280)
* `P.P.F3` `F/5` (Tutorial) [The Official Python Tutorial](https://docs.python.org/3/tutorial/)
* `P.P.F4` `F/1` (Article) [PEP 8](https://www.python.org/dev/peps/pep-0008/)
* `P.P.I1` `I/20` (Book) [Beyond the Basic Stuff with Python](https://www.amazon.com/Python-Beyond-Basics-Al-Sweigart/dp/1593279663/ref=sr_1_1?dchild=1&keywords=beyond+the+basic+stuff+with+Python&qid=1611977379&s=books&sr=1-1)
* `P.P.I2` `I/30` (Book) [Problem Solving with Algorithms and Data Structures Using Python](https://www.amazon.com/Problem-Solving-Algorithms-Structures-Python/dp/1590282574/ref=sr_1_1?crid=2VAPS7RQZ91AI&dchild=1&keywords=data+structures+python&qid=1611547257&sprefix=data+strucctures+python%2Caps%2C1020&sr=8-1)
* `P.P.I3` `I/10` (Book) [Effective Python](https://effectivepython.com/)

# [Go](https://golang.org/)
The followings are loosely in suggested order. Those who want to quickly jump
into server-side development could just start with _Let's Go_.

* `P.G.F1` `F/30` (Book) [The Go Programming Language](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440); OR
* `P.G.F2` `F/30` (Book) [Let's Go](https://lets-go.alexedwards.net/); OR
* `P.G.F3` `F/30` (Courses) [Programming with Google Go Specialization](https://www.coursera.org/specializations/google-golang)
* `P.G.I1` `I/10` (Article) [Effective Go](https://golang.org/doc/effective_go.html)

# [Rust](https://www.rust-lang.org/)
* `P.R.F1` `F/10` (Tutorial) [Rust by Examples](https://doc.rust-lang.org/stable/rust-by-example/)
* `P.R.F2` `F/30` (Book) [The Rust Programming Language](https://doc.rust-lang.org/book/)
* `P.R.I1` `I/20` (Book) [Refactoring to Rust](https://www.manning.com/books/refactoring-to-rust#:~:text=Refactoring%20to%20Rust%20teaches%20you%20to%20combine%20your%20favorite%20programming,language%27s%20unique%20syntax%20and%20concepts.)

# Projects
Projects are tagged with programming languages.

* `[Python/Go]` [Data Lineage MVP](./projects/lineage_mvp/README.md)

# To Infinity and Beyond
So at this point, if you still thirst for more, we have the following
collections. Be warned that the included resources are _extremely_ time
consuming! They are usually full university courses with video lectures,
lecture notes, assignments, and exams.
* [Teach Yourself CS](https://teachyourselfcs.com/)
* [A Self-Learning, Modern Computer Science Curriculum](https://functionalcs.github.io/curriculum/)
* [MIT OpenCourseWare EECS](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/)
* [University CS courses with video lectures](https://github.com/Developer-Y/cs-video-courses)


-------
Learning Path:

Save as:learning_paths.drawio
```
<mxfile host="Electron" modified="2021-02-01T08:05:43.116Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.7.9 Chrome/85.0.4183.121 Electron/10.1.3 Safari/537.36" etag="yl8fl9iLfuDb8DnNdI8r" version="13.7.9" type="device"><diagram id="e4MZN9Lf0TN7hNQJkNzu" name="Page-1">7Vtbc5s4FP41zLYP9XD15TFxkjazu9PspDttHhUjg1pAjBC+7K9fCQkMSHbwxDGk4zx4xEES4vB95ybFcObx5jMBafg39mFk2Ka/MZwbw7an4yn75YKtEHi2KQQBQb4QWTvBI/oPSmHZLUc+zBodKcYRRWlTuMBJAhe0IQOE4HWz2xJHzaemIICK4HEBIlX6Hfk0lK/lmTv5F4iCsHyyZco7MSg7S0EWAh+vayLn1nDmBGMqWvFmDiOuu1IvYtzdnrvVwghMaJcBX2/+nP+cfll4Vzn899OtO/tnMvvkillWIMrlC9+zyzVgUzL9cYXlxSTzx0LHOckgv4/Yu9njiD33+pmwVsBbEdN/Tvj9FftmODPsOZ8ky1CQxGyRQtAeBRKf9YIbEGcjqSi6LbUPffYx5CUmNMQBTkB0u5NeE5wnPuSvaLKrXZ+/ME6Z0GLCn5DSrUQWyClmopDGkbwLN4j+kMN5+4m3R568utnUbt1sy4uEku2PXUd++VS/txtWXJXjxPvxl9r7DaUoY6pewAMfruQCIAGkB/rZFdIYQyGOIVsPGyfpaY4c9iemIjACFK2aSwOSPkE1tJrtASOBEtkFL5cZW0oNgqxRe+hOVADzCJCOD4GUfU/WxuQXb4cMDoEGmhzJD1uGjYQ1njH+1SvUrN8Tat5vADVLgdqdMICV7cNEQshw7hQQkRDHzzlb5fU6RBQ+pqDQ7Jq5xiYUQJYKb7VEGw6p6yVOqATOrPp8K0go3Bz+gHsVbpueGCI9b+WI1jU/JkVhzYWVMt33aKj7aN2air7Oad8roj3V7gyWdHZH0k30GOjMsFd9UVthy8PoYXRnqQb4g2NymHESfVRREEUsnIMvs+YErJiYDVI4U5UUln1WVliqPi6sOORihs4KT88KW8MKeyCssGeDo4VzKOirZSalY27rtgj1UoIDAuIYJYFMHLNe2XZE4HdC1kw6ssZ6KVlwp85s8BGcSr8acDI2fwGa+Bkl7A0KlOClCh+JFVOkpzEu8toqhWjg6pJIHIPDQ/Bi+HodvORUjtc0Z+Nxy0wJKshR9ZrJ+XA60XsJV+MlLOkk+vUR1rSZT3iafOLMPmJyCZ26Z/FdMwpr/MrgqRh6RQjY1jqknFjZfspaTpOyk3Grmtnqb7veof6sIVZwWt+iJjzz0Td9wsP90BBCu8keU9gfa6daB51A6BuynJcSsKBooYnqbgDlsd8jJXlRbOYumt0DMVec+GWSqyjABNEwztQZUFJz5Bfr8UqjUPluzzLtN/HdE7cFRGHpFN99rMFRnnNKg3PWgFfdw+GRxL3OKA013xyAVVI3GQot6rL2odSy2hHZ1O1bi86lmHVEiber8XVMPQzOVORV90SKTMXRMGMgMY9nNs2LbuvjzMRQqxIfvqa8/gCij6oi1YpFceBBX+RiquLvzneU0BIt1F5V2YLiFC36rYCdgaI+yMJirdaJ+ep25avbK1/3xAND9mRtwnpO74RV688dCXvJYFQqvxUlS5i8fAymV0qWy3w/xb42IatsqT9CHmHWrIGatYnZuxbVNOcShwwrDnk5vHjt7na3AsfMboFwT+HlVHUMR78jMmiCtzNwy+yd4a7mtOQfscELrOsyOinOsIVgxQkdIUojTZzS3DqHmxQSBBMe0fTI2hpn38F+p9v1uMphkJkjW8wz3E13V+Xu/Q5iwnV0B1i753PO3yLB1CiPng8g/H1ne+/u25/OLYOe8Z7iy4A23121HPM9RIvQaB8ZiuAKRkM/6dveyrAs1Qmd9aSvO1Ndee+EfW/OY9rReexj9nlSW1fdza3C/CLM+IyHTh/dQZYT0YVd7v7BSxiv3X/JObf/Aw==</diagram></mxfile>
```