Understanding the Admissions Process for our Software Engineering Program

Dec 15, 2021
John Wark

This is one of a series of blog posts announcing and explaining our new Software Engineering with Java/AWS Specialization program. The first two posts in the series announcing the program are here and here. The third post addressing some early questions about the program is here. And the fourth post comparing our two software development programs is here

We’re continuing our discussion of the Software Engineering with Java/AWS Specialization program (SE) with a deep dive into the admission process for the new program. This is the first time that we’ve launched a new program that takes a different approach to admission so we wanted to make sure we shared a thorough explanation of how the new process works - both in terms of how we’ve tried to protect our operating principles and values in the new process but also what an applicant can expect at each step in the process. 

The reason why the admissions process is different relates to things we said in the prior post in this series. For example we noted that:

“One way to think about comparing the difficulty between the two programs is to consider that the SE program is preparing students for generally more advanced roles, and hence the program covers more advanced and complex materials.” 

“The SE program expectation is that by the first day of class students will have reached a level of proficiency with coding in Java and had a first introduction to a fairly wide range of programming concepts. The SE program then quickly picks up the pace of learning and the material becomes more technically complex much more quickly than in the Web Dev program.” 

So while no prior programming experience is required to apply for the SE program, the program does expect more of students early in the class - both in terms of the amount of prerequisite knowledge of coding that’s needed by the first day of class as well as in how quickly the program moves. As a result, we’ve added some steps to the admissions process so that we - and the applicant - have more information about their aptitude and general readiness to dive into such an intensive program. We want to ensure we’re helping set the applicant up for success, not hurrying them to failure. 

The SE program admissions process has two sequential phases: the application phase and the enrollment phase. The application phase starts with the student’s application to NSS and ends (hopefully) with an offer of admission to an upcoming cohort of the SE program. The enrollment phase is focused on the student’s preparation to ensure they have the necessary Java programming knowledge to pass the Java coding assessment that is required before the applicant can enroll, i.e. join with a cohort for the first day of class. 

The SE program application phase includes five steps that applicants must complete:

  • Complete and submit an application for the SE program,
  • A conversation with one of our admissions counselors,
  • A cognitive aptitude test, 
  • A coding aptitude test, and 
  • A technical interview.

The information collected in these five activities is then consolidated for our admissions committee to review. The admissions committee then makes a decision whether to offer a seat in an upcoming SE cohort to the applicant. Each of the steps provides information about the applicant but none of the steps alone makes or breaks an applicant’s chances of admission. In particular, the scores from the cognitive aptitude test and the coding aptitude test are not compared to a “cut line” below which no one is admitted. 

We remain firm believers in the value of interviews as the primary way to get to know our applicants and understand their “why”. But we also know that interviews can result in a biased assessment for all sorts of reasons. We also know that formal testing can have issues relative to bias against applicants depending upon their background, e.g. some tests are biased against non-native English speakers. We believe that the five steps above give us several different types of information on applicants, from different perspectives. We believe this will give us information to help eliminate or at least significantly reduce the chance of false positives (i.e. rating someone more positively than justified, thus risking giving a seat to someone who is not ready to succeed or who might be better suited to another pathway) or false negatives (i.e. discounting someone’s chances of success and thus risking turning away someone who would be able to do well in the program and as a software developer).  

The five application phase activities can occur in several different sequences. But the process is always initiated by the applicant submitting a completed application. For most applicants, the next step will be a conversation with one of our admissions counselors. The screening interview is also designed to help answer many of the questions that applicants might have about the program: schedules and other logistical details, clarifications about the admissions process and timeline, discussion of tuition and financing options, etc. Following the screening interview, the applicant has some choices regarding the sequence of the remaining steps. 

The cognitive aptitude test is one of the remaining three steps. We’ll provide a link to the test that we use, which is a commercially available test that we selected after evaluating other options. The test itself is straightforward - there are 20 minutes allocated for the test, which consists of 40 questions. 

Another of the last three steps is a technical interview with one of our interviewers. When we say technical interview, we’re not really going to do any detailed interviewing on specific technical knowledge - again, our applicants don’t necessarily come to us with prior technical training or experience. It’s probably more accurate to call this interview a conversation that helps us assess and understand the applicant’s technical experience (if any) and aptitude/potential for learning and performing software engineering work. It’s very similar to the “technical” portion of the interviews we do for all of our other programs. 

The final step (although it does not need to be completed last) is a coding aptitude test. This is a test that we developed that does attempt to assess whether the applicant has acquired an understanding of the basic fundamentals of coding. For applicants that have applied without prior programming exposure we are asking that as part of the admission process they undertake study to help them and us assess whether they enjoy learning to code, and whether they can see themselves diving into software engineering as a career. We don’t know a way for applicants to assess that without starting to learn the basics of coding - knowledge that also helps prepare them to start the class if they are accepted. 

For applicants who have not had any prior coding experience or study, there are ways to get that exposure. NSS offers what we call Jumpstart classes that provide an adequate introduction to coding to acquire the knowledge necessary to pass the SE program coding aptitude test. We have offered for several years our Web Development Jumpstart. We are also introducing a new Jumpstart designed to let students try server-side coding in Python - that Jumpstart will be offered for the first time in February 2022, and it is open for enrollment now. Either of these Jumpstarts will prepare a student with sufficient knowledge to tackle the SE program coding aptitude test, which is available in three different programming languages: Python, JavaScript, and Java. 

For applicants whose schedule can’t accommodate the Jumpstart class, or who simply prefer self-study, we will also be recommending self-study resources that will prepare them to tackle the SE program coding aptitude test. 

Applicants with prior coding study/experience can go directly to the coding aptitude test without a Jumpstart class or self-study. It’s also possible to take this test more than once (our admissions counselors can give you more information about retaking the test should that be necessary). 

Once applicants have completed the five steps described above our admissions committee will consider the completed application to join the SE program. If the committee decides to extend an offer, there are a couple of steps that involve signing documents required by our regulators and then signing the admissions agreement. After the admissions agreement is signed, the applicant is ready to start the second phase of the admission process - the enrollment phase. 

The enrollment phase has two activities - acquiring the prerequisite knowledge necessary to start the class and passing the Java coding assessment required for all students before they can begin the class. We’re not going to go into as much detail about that phase in this post, but here’s a summary. 

Acquiring the prerequisite knowledge is accomplished by completing four study modules, three of which are Coursera courses and the fourth of which is based on the original Amazon-developed curriculum. These modules introduce students into the fundamentals of coding, mainly focused on Java (there is a bit of front-end development in HTML, CSS, and JavaScript in the first module). We supplement the Coursera courses with coaching/mentoring sessions from our instructors to help ensure students don’t need to struggle more than is useful as part of the learning process. Once the student has finished the prerequisite study they can take our Java coding assessment and demonstrate that they are ready for the first day of class. 

This process is more involved than admission to any of our other programs, but then this program sets a higher bar for incoming students than our other programs. This program ramps up the complexity faster than the typical bootcamp program and eventually goes much deeper. We designed the admission process to help ensure that we prepare our applicants for success, whether in this program or in some other program that’s a better fit for the student’s goals.

Topics: Learning, News, Software Engineering