Becoming a software engineer used to require a computer science degree. This was the only acceptable method to demonstrate that you knew enough about software design and development to be hirable by a company. Today this requirement has disappeared, as scores of bootcamp, apprenticeship, and self-taught developers are joining traditional computer science degree holders in the workforce.
While you do not need a degree to get a job, there is still value to the content covered in a computer science degree. Bootcamps and apprenticeships usually focus on practical skills and less on theory. This is great if you are trying to gain skills to get hired without spending four years on a college campus.
The drawbacks of this training include a less well-rounded understanding of computer science as a field. It would be nice to get the speed of a bootcamp with the theory of a computer science degree. Are there theory-based resources that can complement a software engineering bootcamp?
What Content is in Software Engineering Bootcamps and Degrees?
Before discussing great theory-based computer science resources, let’s discuss software engineering bootcamps and college degrees. As stated earlier, software engineering bootcamps tend to be more practical as they need to teach students marketable skills in 3 - 6 months. Computer Science degrees can focus more on the theory of how information technologies work due to the 4-year duration of their courses. This time difference leads to a widely different list of topics between the two learning options.
To understand the typical software engineering bootcamp, let us look at Thinkful’s Software Engineering Bootcamp curriculum. This bootcamp covers five sections over five months. The first module jumps right into front-end development, introducing students to structure (HTML), styling (CSS), and interactivity (JavaScript). This approach focuses on practical skills from the start, teaching items that would be useful from day one in a software engineering career.
The second module is back-end focused and covers database and server design. Again, the bootcamp teaches tangible skills that allow the student to begin working instead of diving into the fundamentals and background of how the technology works.
Sections three, four, and five approach items such as how to work in an agile development environment, soft skills, interviewing, and then an examination of performance and data structures. These are all practical and necessary to be successful in a first software engineering position. At the end of five months, bootcamps like Thinkful can give you all the practical skills you need to become a professional developer.
While bootcamps focus on practical skills and quick outcomes, computer science degrees take a theoretical approach and leave a lot of practical skill development to future employers. Examining the undergraduate curriculums for some of the top computer science schools at MIT, Stanford, and Carnegie Mellon, reveals similar course structures.
Each of these programs has course requirements for core learning, or learning all students are required to complete outside of their major. These include base science classes, mathematics, humanities, history, and fine arts. These courses will not be addressed in a bootcamp because they don’t directly apply to earning a software engineering degree.
When we look at the specific computer science tracks, we see even more pre-requisite classes before touching computer theory classes. Along with core classes, students must complete courses in mathematics, physics, electronics, and in some cases, biology. While this information can be useful, it is optional for becoming a software developer.
After core and pre-requisite classes, we finally begin computer science classes. These classes offer deep study and understanding of topics. Some courses include understanding how databases and compilers work and building them. They also examine cryptography and low-level software languages.
The final sections of these degree tracks are building systems and applications but are still largely theoretical. It makes sense that bootcamps wouldn’t teach these topics since they don’t directly help with getting a job. However, they are still important topics for a well-rounded understanding of the field. Let us look at some resources to obtain this education if you are a bootcamp student or self-learning.
Open Source Society University
The Open Source Society University, or OSSU, is a collection of free computer science resources detailed in the linked OSSU GitHub repo. The stated goal of this project is not to augment a learning experience but to offer a full-featured computer science education to those willing to study.
OSSU accomplishes this by leveraging a global learning community to create a curriculum that mirrors standard computer science undergraduate curriculums. It builds out this curriculum by gathering courses from some of the best universities in the world, including Harvard, Princeton, and MIT. When subjects do not meet their standards, they include textbooks, many of which can be found online for free.
This course has four components: Intro CS, Core CS, Advanced CS, and a final project. If you are interested in OSSU, Intro CS is a gentle entry into the coursework. Moving to Core CS will allow you to cover the first three years of an undergraduate degree. Advanced CS and the final project are a senior year and capstone. These cover high-level concepts and tie all your learning together. This course is a big undertaking but is the best value for those seeking an undergraduate computer science education for free.
Teach Yourself Computer Science
Teach Yourself Computer Science cuts right to the chase with its goal. As a bootcamp student, you do not want an exhaustive list of every computer science resource. You need a concise list of the best resources and classes so you can focus and learn in a reasonable amount of time. Teach Yourself Computer Science does just this with its 9-subject curriculum.
It estimates that each subject should take between 100-200 hours. These subjects include programming, computer architecture, data structures and algorithms, math for computer science, operating systems, computer networks, databases, languages and compilers, and distributed systems.
If you finish this curriculum, you should be able to go beyond doing tasks because you know the tools. Instead, you’ll be able to tackle challenging problems because you understand the underlying structure and rules of the systems you work with.
The Missing Semester of Your CS Education
This is the best course for getting computer science knowledge you may be missing without spending hundreds of hours on theory. MIT created this course in response to students needing to understand software tools. As the name implies, this self-paced course should complement more formal learning and fill in the gaps that degree students (or bootcamp students) may have.
This is the best course for getting computer science knowledge you may be missing without spending hundreds of hours on theory. MIT created this course in response to students needing to understand software tools. As the name implies, this self-paced course should complement more formal learning and fill in the gaps that degree students (or bootcamp students) may have.
The topics covered in the free course include using the shell/terminal, shell scripting, text editors and integrated design environments, version control, and security. While students may conceptually understand how these tools work, they still need practice and practical instruction. Both are accomplished in this course.
Get Learning with a Bootcamp Today
If you want to jump-start your transition into tech, a bootcamp may be the best option. While a college degree takes four years to complete, a full-stack software engineering bootcamp, like the ones offered by Thinkful, only takes six months. Get started gaining practical skills today to leverage the theory-based resources listed above to become an even more well-rounded software engineer!