Software engineering is the construction and maintenance of software products.
Step #1: Learn itStep #2: Apply itStep #3: Stay up-to-date
Access the following free resources from across the web. Note that Bootstrap Ed does not own any of the resources featured on this page.
Software Engineering Overview
- David Evans – Introduction to Computing
- MIT – Introduction to Computer Science and Programming Spring 2011 (6.00SC), Lecturer: John Guttag
- 38 sessions, approximately 50 minutes each
- Playlist
- MIT – Introduction to Computer Science and Programming in Python Fall 2016 (6.0001), Lecturer: Ana Bell
- 12 lectures, approximately 45 minutes each + supplemental shorts
- Playlist
- ComputerScience.org – Computer Programming Languages
- Google Developers – Foundations of Programming
- Google Developers – Advanced Programming
- MIT – Programming for the Puzzled IAP 2018 (6.S095), Lecturer: Srini Devadas
- 11 lectures, approximately 20-60 minutes each
- Playlist
- Toptal – Introduction To Concurrent Programming: A Beginner’s Guide
- Lawrence Livermore National Laboratory – Introduction to Parallel Computing
- MIT – Introduction to Algorithms (SMA 5503) Fall 2005 (6.046J / 18.410J); Lecturers: Charles Leiserson, Erik Demaine
- 23 lectures, approximately 75 minutes each
- Playlist
- MIT – Design and Analysis of Algorithms Spring 2015 (6.046J), Lecturer: Srinivas Devadas
- 24 lectures, approximately 20-80 minutes each
- Playlist
- MIT – Algorithmic Lower Bounds: Fun with Hardness Proofs Fall 2014 (6.890), Lecturer: Erik Demaine
- 23 lectures, approximately 80 minutes each
- Playlist
- MIT – Computational Science and Engineering I Fall 2008 (18.085), Lecturer: Gilbert Strang
- 50 sessions, approximately 50 minutes each
- Playlist
- MIT – Circuits and Electronics Spring 2007 (6.002), Lecturer: Anant Agarwal
- 26 sessions, approximately 50 minutes each
- Playlist
- MIT – Introduction to Electrical Engineering and Computer Science I Spring 2011 (6.01SC), Lecturer: Dennis Freeman
- 27 sessions, approximately 10-75 minutes each
- Playlist
- MIT – Performance Engineering of Software Systems Fall 2010 (6.172); Lecturers: Charles Leiserson, Saman Amarasinghe
- 24 sessions, approximately 75 minutes each
- Playlist
- GCF Global – What is an operating system?
- Cracking the Data Science Interview – The 10 Operating System Concepts Software Developers Need to Remember
- Software Testing Class – Beginners Guide To Software Testing
- ReQtest – The A to Z Guide to the Software Testing Process: Test Plan, Test Design, Test Execution & Test Closure
- Software Testing Help – Test Plan Tutorial: A Guide to Write a Software Test Plan Document from Scratch
- Software Testing Help – How to Write Test Cases: The Ultimate Guide with Examples
- Free Code Camp – Your Ultimate Guide to Writing QA Documentation
- Software QA Test – Software QA and Testing Frequently-Asked-Questions, Part 1
- Tutorials Point – Software Architecture & Design Introduction
- Work through the 12 sections (see left pane)
- Reading
- Packt – Developer’s guide to Software architecture patterns
- Hacker Noon – 38 Actions and Insights to Become a Better Software Architect
- Course Report – Coding Bootcamp Glossary of Key Terms
..
Data and Databases
- Jay Wengrow – A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills
- MIT – Advanced Data Structures Spring 2012 (6.851), Lecturer: Erik Demaine
- 22 lectures, approximately 80 minutes each
- Playlist
- MIT – Signal Processing on Databases Fall 2012 (RES.LL-005 D4M), Lecturer: Jeremy Kepner
- 18 sessions, approximately 10-60 minutes each
- Playlist
..
Math for Software Engineering
- MIT – Single Variable Calculus (18.01), Lecturer: David Jerison
- 39 lectures, approximately 50 minutes each
- Playlist
- MIT – Homework Help for Single Variable and Multivariable Calculus (18.01SC, 18.02SC); Lecturers: Christine Breiner, David Jordan, Joel Lewis
- 87 videos (problem set solutions), approximately 5-10 minutes each
- Playlist
- MIT – Multivariable Calculus (18.02), Lecturer: Denis Auroux
- 35 lectures, approximately 50 minutes each
- Playlist
- MIT – Homework Help for Multivariable Calculus (18.02SC), Lecturer: Joel Lewis
- 70 videos (problem set solutions), approximately 5-10 minutes each
- Playlist
- MIT – Calculus of Complex Variables, Differential Equations, and Linear Algebra, Lecturer: Herbert Gross
- 20 lectures, approximately 35 minutes each
- Playlist
- MIT – Linear Algebra (18.06), Lecturer: Gilbert Strang
- 35 lectures, approximately 45 minutes each
- Playlist
- Khan Academy – Calculus
- 199 videos, approximately 5-15 minutes each
- Playlist
- MIT – Fundamentals of Statistics (18.650), Lecturer: Philippe Rigollet
- 24 lecturers, approximately 75 minutes each
- Playlist
- UC Irvine – Introduction to Probability and Statistics (Math 131A), Lecturer: Michael Cranston
- 16 lectures, approximately 105 minutes each
- Playlist
- MIT – Mathematical Methods for Engineers II (18.086), Lecturer: Gilbert Strang
- 29 lectures, approximately 50 minutes each
- Playlist
..
Product Lifecycle, Process, and Related Functions
- The Clever PM – The Product Lifecycle
- MIT – Introduction to Lean Six Sigma Methods, IAP 2012 (16.660J), Lecturer: Earll Murman
- 14 sessions, approximately 25-60 minutes each
- Playlist
- Agile Alliance – Agile 101
- Click through each of the six sections (Agile 101, Agile Manifesto, etc.)
- Reading
- Aha! – Introduction to Agile Development
- Aha! – What is scrum?
- The Art of Product Management – What is a Product Manager?
- Smashing Magazine – A Comprehensive Guide To Product Design
..
Careers
- WikiHow – How to Become a Software Engineer
- Lifehacker – What I Wish I Knew When I Started My Career as a Software Developer
- Woz U – What’s the Typical Software Developer Career Path?
- Scalable Path – 7 QUALITIES THAT DIFFERENTIATE A GREAT PROGRAMMER FROM A GOOD PROGRAMMER
- GeeksforGeeks – Interview Preparation for Software Developer
- Impact Interview – The Big List of 176 Software Engineering Interview Questions
..
Online Tutorials
- Codeacademy
- Codecourse (YouTube channel)
- Guru 99
- Hipster Code
- Google TechDev Guide Resource Library
Complete the following exercises to apply your newly acquired knowledge.
- TUTORIAL: Develop your coding skills
- Use a coding tutorial site (i.e., Codeacademy) to develop your coding skills in the language of your choice.
- BUILD A PRODUCT: Develop a software product
- Research a problem, devise a solution, design a minimum viable product, build a software product, and get feedback from users. While this requires a high degree of commitment, it is the best way to practice the work of a software engineer.
- HACKATHON
- Hackathons are time-bound “sprints” (often 24-48 hours) in which small teams compete to create the best product or prototype of a product. A panel of experts judges the creations and awards prizes. Participate in a hackathon in your area. Many are free to participate in.
Engage with the field on an ongoing basis. Note that Bootstrap Ed does not own any of the resources featured on this page.
Blogs
- A List Apart
- CodeBetter
- Computer Zen
- Six Revisions
- Software Engineering Daily
- Toptal Engineering Blog
- Tutorialzine
Podcasts
Related topics: Computer Science, Data Science, Engineering
Want to keep learning for free? Check out all of our pages here.