Accelerator programs give young software developers an edge to boost their salary, position, and responsibility. The best courses, like App Academy’s Engineering Interview Prep, do all those things and then they step on the gas.
Engineering Interview Prep has only been around for a little under two years but already, the success of its students is evident. Dozens of graduates on average have received offers of at least $140K, about $10K more than other accelerators.
Do you want to know more about the specific things student learn at Engineering Interview Prep? You’re in luck because we’ve written it all down in this article. Check it out.
Week 1: Foundations of Computer Science
Students freshen-up their skills in Computer Science and Mathematics concepts. Many of the algorithms and data structures topics in the successive weeks require this mathematical know-how.
Monday — Welcome
Engineering Interview Prep welcome day. Instructors introduce themselves and provide a detailed overview of the program, including specific expectations, while students meet each other for the first time.
Tuesday — Mathematics
Students start the Math for Programmers component. Instructors review functions, Big O notation (the performance or complexity of an algorithm), Limits, Factors/Primes, Combinations and Permutations with students. These mathematical concepts are important prerequisites for understanding algorithms and databases later in the curriculum.
Wednesday – How computers are built
The Engineering Interview Prep cohort explores how beachsand turns into C. This is when students explore how computers are built by starting with raw Silicon, moving to semiconductors, microprocessors and finally, to actual code.
Thursday — Technical Skill Development
On every fourth day of the week, students review the current week’s material. Students practice problems and pair program. Engineering Interview Prep does not have any tests, quizzes or other graded assignments throughout the course.
Here is a sample practice problem set, courtesy of Engineering Interview Prep Manager Ridley Leisy.
Discuss your background and accomplishments up to this point. (Assume you are applying to Slack)
Lara owns a flower shop, where she sells only two types of flower bouquets:
Type 1: The first type of bouquet contains three roses and costs p dollars.
Type 2: The second type of bouquet contains one cosmos and one rose and costs q dollars.
Lara grows these flowers in her own garden in a single row. You can consider the row as a one-dimensional array where each cell either contains a rose or a cosmos. For example array 001101011, here 0 indicates rose and 1 indicates cosmos.
There is an important rule that Lara follows when she makes the bouquets: she makes each bouquet with only consecutive flowers from the array. For example, in a bouquet, the flower from consecutive indices (i, i+1, and i+2) in the array can be present, but not from non-consecutive indices (i and i+2). In the array above, Lara can’t make any bouquets of type 1 but she can make 3 bouquets of type 2.
Now she wonders what is the maximum profit she can make if she makes these bouquets optimally. You are given a binary string representing her garden row. Calculate the maximum profit Lara can make. Remember it’s not necessary to use all the flowers.
Complete the flowerBouquets function in the editor below. The function must return an integer denoting the maximum profit Lara can make if she makes her bouquets optimally.
flowerBouquets has three parameters:
p: integer denoting the cost of a bouquet of type 1.
q: integer denoting the cost of a bouquet of type 2.
s: string denoting the garden pattern, where zero indicates rose and one indicates cosmos.
1 ≤ p, q ≤1000
1 ≤ |s| ≤100000
If you can solve it here, you can skip the Engineering Interview Prep coding challenge and go straight to the behavioral interview!
Since experienced engineers should have a strong Github repo already, students review their Engineering Interview Prep GitHub over the weekend to make sure they’re making commits. Students receive and are expected to complete a challenging assignment every weekend during the course.
Week 2: Data Structures
Engineering Interview Prep instructors introduce students to their first major technical programming chapter: Data Structures. Week Two is dedicated to the creation and manipulation of data types and data structures. The goal is for students to become better software developers by understanding the underlying processes behind the everyday programming tools they use.
Monday, Tuesday, and Wednesday — Data Structures I, II, III
Engineering Interview Prep students become familiar with arrays and binary search trees (BST). BSTs give students a great foundation of data structures from which students build out their knowledge, as explained in this Stack Overflow post.
Students then learn about heaps, another data structure similar to BSTs, and Graphs, an important data type borrowed from discrete mathematics that touch on the importance and modern applications of hash tables and hash maps. Additionally, exercises of Queues, Stacks, and Tries data structures are also introduced, as well as vectors.
Thursday — Technical Skill Development
Day Three reintroduces Loops and Arrays on the agenda. At this point, students learn how to use Nested Loops and create Multidimensional Arrays.
Coding project on abstract data structures. Below is a sample prompt to a coding project.
In this project, you'll be implementing __quicksort__.
Start off with the not-in-place version of QuickSort. This version of QuickSort chooses a pivot and pushes elements smaller than the pivot into a left array and elements larger than the pivot into a right array. It recursively sorts these arrays, then adds them together. What is the space complexity of this edition of QuickSort? We can do better.
Let's move on to a new and improved version that sorts the array in place!
Begin by writing the logic for `Array::partition`. The `::partition` method takes in an array, a start position (this should be your pivot), and a length. It should go through all of the elements from the start position up to start + length. It should move all elements less than the pivot on its left and all elements greater than the pivot on the right thus partitioning this portion of the array. At the end of the method, it should return the pivot element's new index.
__Note:__ good implementations of QuickSort choose a random pivot to reduce the probability of pathologically bad data sets. Don't do this until you've passed all the specs - just use the first element as your pivot. The specs test that, without a randomized pivot, the partition step is called a certain number of times for a given array. Once you pass the specs and use a random pivot, note that the number of partition steps needed for the &amp;amp;quot;worst case&amp;amp;quot; array decrease.
Write `::sort2!` using your `::partition` method. Once you've gotten all the specs to pass, celebrate your mastery of sorting!
What are the time complexity and space complexity of your second QuickSort (don't forget the amount of space that the recursive calls take)?
You can attempt the full project on your own by reaching out to us at [email protected]appacademy.io.
Week 3: Algorithms
In the third week of Engineering Interview Prep, students dive into the second large technical chapter, algorithms. Over the course of four days, instructors introduce students to seven different types of sorting algorithms. These algorithms help students in their everyday work through optimization, i.e. finding the quickest or shortest way to do tasks.
Monday, Tuesday, Wednesday — Algorithms I, II, III
By the end of this week, students will know how to sort data in many different ways. Select sort, bubble sort and insertion sort are simple ways students learn to sort data that are taught at Engineering Interview Prep. Heap sort, merge sort, and quick sort are more complex but efficient sorting methods that are also discussed and learned. Additionally, students learn how to calculate the shortest distance between two nodes on a graph using Dijkstra’s algorithm. This algorithm can be important for seeing how fast data can travel from one point to the other.
Thuesday — Technical Skill Development
Coding project on algorithms
Week 4: Soft Skills Training
This week is devoted solely to advancing students’ soft skills and interview techniques. Mastering these skills can greatly improve not only the number of job offers students get but also boosts their average starting salary.
Monday and Tuesday — Basic and Advanced Interviewing
Instructors walk students through the most important interview questions, such as the following:
Tell me about yourself
Why did you leave your last job?
Where do you see yourself in five years?
What are your weaknesses?
During these days, students work on optimization,which helps them create the best frameworks for interviewing. These frameworks help students manage time, information, and personal distress during interviews. One simple framework that is taught in detail is the “BUD” approach to optimization. This is when areas with Bottlenecks, Unnecessary work, or Duplicate work are optimized.
Students also learn about the best whiteboarding and salary negotiation techniques. According to Engineering Interview Prep Instructor Gene Hallman, negotiation can increase salaries by fifteen percent, if not more.
Wednesday — LinkedIn
Instructors conduct an intense resume and LinkedIn workshop for students to get noticed after graduation. Using LinkedIn allows students to showcase their professional and educational experience, as well as interesting projects and media to make them stand out from other applicants.
Thursday — Soft Skills
“Soft skills are the hardest skills in the [tech] industry! We think they’re easy and we should stop doing that,” said Laurie Voss, COO of npm during a recent talk at App Academy. Engineering Interview Prep dedicates an entire day to soft skills development. Specifically, instructors focus on improvements to body language, eye contact, behavioral response, and self-awareness, among other subtle skills that help students shine in interviews.
Students are expected to create a resume, LinkedIn profile, and a cover letter template.
Week 5: Selected Technical Topics
Students are introduced to various technical topics they must know to pass traditional senior interview questions. Even though some students might already have experience with one or more of these topics, Engineering Interview Prep gives a detailed overview of common programming languages, databases, and internet protocols.
Monday — Programming Languages
Tuesday — Databases
Students learn various types of databases: Document, Graph, Key Value, and Relational. Students also study database completeness. Even though students might have already studied databases as a junior developer, Engineering Interview Prep goes in-depth to teach students what’s underneath the high-level understanding they already have.
Wednesday – Internet Protocols
This day is dedicated entirely to learning an abundance of topics in computernetworking. This fast-paced day takes students through the following topics: Application, Data Link, Network, Physical and Transport Layers.
Students also go through the following internet protocols: ARP, DHCP, DNS, FTP, HTTP, ICMP, STMP/POP, SSH, and TLS.
Thursday — Hard skill and soft skill practice
Students practice both technical and interview skills with their career coach, with other students in Engineering Interview Prep, and with themselves to develop rehearsed answers to important questions. The goal is to prepare students for their job search that starts one week from this day.
Submit job applications. To qualify for deferred tuition, students are required to submit at least ten job applications per week after graduation.
Week 6: Cutting-Edge Technical Topics
In Week 6, students are excited to graduate and start their job search. Just before they leave Engineering Interview Prep, instructors introduce system architecture and design as well as cryptography to round out their skills for future technical interviews.
Monday — System Architecture and Design
The topic of the day is System Architecture and Design. Students learn about high-level design patterns, various server types (application, database, web), operational architecture (deployment, management and monitoring), and web application architecture.
After today, students are able to explain the benefits and downsides to common system architectures. They can also better answer important interview questions such as, “How would you redesign this website?”
Tuesday — Cryptography
Cryptography is a popular topic important to any senior software developer, which is why students learn about it in Engineering Interview Prep. Students learn about Hash functions, ciphers, and symmetric and asymmetric cryptography like AES, RSA and ECC encryption.
Wednesday — Review, “What’s Next,” and Graduation 🎉
Students review the curriculum starting with the foundations, then data structures and algorithms, and finally, systems architecture and interviewing practices.
Instructors also go over the post-graduation job search plan. Students must log each submitted job application and communicate with their career coaches during this process. Students continue to have access to instructors, as well as technical and non-technical career coaches through 1:1 meetings, office hours, and Slack throughout the extent of their job search.