Foundations of Computer Science
Become a Software Engineer For real
Our intensive program will first introduce you to the Foundations of computer science and Software Engineering, then specialize in what drives you.
The first three sprints of our program covers the Foundations of Computer Science and Software Engineering, including Linux, data structures, algorithms, low-level programming languages, high-level modern languages, databases, APIs, and DevOps.
Then, the last sprint will be dedicated to Front-End Web Development.
What to Expect
1) No pre-course
Holberton School does not expect students to come in with previous software engineering experience (although if you do have experience, that’s awesome too).
There is no pre-course work (that’s why you are attending a school after all), but we do recommend that you read through The C Programming Language book by Kernighan and Ritchie or Programming in C by Stephen Kochan.
The goal of reading through the book is not to deeply understand all the concepts, but to familiarize yourself with key terminology and content.
We are training you to be a full-stack software engineers in 12 months. The program will be intense.
There are no formal teachers or formal lectures. Students are learning by creating and we rely on peer-learning, collaboration, and industry-relevant curriculum to guide the way.
There is no competition here at Holberton School, rather students are helping each other towards their goals. Of course, there is also technical staff available to answer questions and extend support.
3) Professional development
We know that the skills to get a job are different from the skills to be good at a job. From week zero, we immerse students in professional growth and development via workshops, projects, meetups, and work simulations.
Whiteboarding, mock interviews, professional networking, and more begin as soon as students start the program so that they’re confident and competent when the time comes to prove they’re ready for the job.
4) Soft Skills
In today’s tech world, it’s not enough to be good at technical skills, you need to be a clear communicator as well.
We push our students to work on their public speaking skills, to publish blog posts to online tech communities and publications, and to speak at conferences and meetups.
This not only prepares students to be team players and clear communicators, but creates amazing networking opportunities.
5) Included in All Holberton School Sprints
Technical writing: It is an invaluable skill and an excellent way to articulate and share your knowledge.
Collaboration: It’s key to successful business. You will learn project management, interpersonal communication, and team collaboration skills.
The Framework: it provides the structure, order, and balance necessary to maintain a productive peer learning environment and will help you succeed throughout your career.
Whiteboarding: it is an essential skill in the tech industry, both for effective planning and for excelling in tech interviews.
Mock Interviews: it is not enough fo you to know the answers to the questions; you need to be able to clearly communicate your thought processes and understanding.
What You’ll Learn
This foundational knowledge of how computers and programming languages work will allow you to optimize and debug anything later on in your professional career. You will also begin working with algorithms and data structures which are essential foundations for great Software Engineers – the type that the best companies hire.
In the first sprint of foundations, you’ll work in C and Unix programming, graphical programming, data structures, assembly language, and algorithms as well as reverse engineering and security protocols.
From there, you are introduced to higher-level languages, increasingly advanced algorithms, space and time complexity, database management, and Front-End programming. Using the latest technologies, you will begin to create a complete web application project that will span the rest of the foundations sprints.
The final sprint of foundations emphasizes automation, scalability, and reliability, so that you are familiar with the infrastructure and best practices similar to those in tech powerhouses. Alongside a continuation in web development, you’ll also advance in algorithmic understanding, technical writing, debugging, and project management.
Examples of Projects
– Write your own printf function
– Web stack debugging
– Clone a marketplace
– Code your own shell
Curriculum Foundations of Computer Science & Software Engineering
– Git and command line editors
– Introduction to Bash
– C – first statements
– C – pointers
– C – recursion
– C – static library
– C – memory allocation
– C – preprocessor
– C – variadic functions
– C – bit manipulation
– C – file I/O
– Singly linked lists
– Create your own printf
– Create your own basic Shell
– Python – first statements
– Python – import and modules
– Python – data structures
– Python – exceptions
– Python – classes
– Python – inheritance
– Python – file I/O
– Python – JSON serialization/deserialization
– HTML/CSS introduction
– SQL – basic queries
– SQL – join queries
– C – dynamic libraries
– C – makefiles
– Doubly linked lists
– Stack and Queues
– Hash tables
– Sorting algorithms
– Binary trees
– Bash – scripting
– Unix processes and signals – Regex
– Network introduction
Python – Object-relational mapping
– Python – Web framework
– Python – RESTful API
– Python – web scraping
– SSL certificate
– Web server
– Load balancer
– MySQL primary-replica
– Server monitoring
– Code deployment
– Webstak debugging
– Portfolio project