Code 401
Java with SpringMVC & Android

Overview

Learn to write clean, crystal-clear, well-tested, advanced Java code using industry-standard software engineering patterns while building servers with SpringMVC and mobile apps with Android.

In this course, you will use IntelliJ IDEA and Android Studio to create Java applications. You will deploy the applications to a scalable cloud server platform, install your Android applications onto your phone, and have the apps communicate with AWS services like DynamoDB, Cognito, Pinpoint and Lambda using AWS Amplify.

The course focuses on fundamental computer science concepts such as object-oriented programming, advanced data structures and algorithms, Big O asymptotic analysis, and the structure of statically typed languages.

This course includes a career coaching curriculum to get you ready for your job search, plus job search assistance after graduation.

Objective

Students will learn the best practices for developing software and receive holistic training to prepare them to be excellent software developers for companies of all kinds. Graduates of Code 401s are considered to be ready for entrance into the workforce as professional developers upon successful graduation from the program.

Outcomes

At the end of this course, you will be able to land an entry-level Java or Android Developer position by:

  • Being able to take project ideas from conception all the way through full-stack execution and deployment using common frameworks and tools.
  • Contributing to existing and ongoing projects using professional version-controlled workflows, working in tandem with your classmates on collaborative assignments.
  • Building and contributing to server-side and client-side applications, each using an architecture/framework that promotes maintainability, scalability, and collaboration. These skills will be fully demonstrated during project week when your team develops its own prototype applications, adhering to industry best practices and patterns.
  • Applying Computer Science fundamentals when analyzing the trade-offs between competing solutions when choosing algorithms; when choosing data structures; when deciding which cloud tools and services to use in building a complete application; and when making sure not to degrade the performance or functionality of cloud-based and mobile applications.
  • Participating in a series of career development workshops and the web development knowledge, experience, habits, and practices learned in this course. You will create an online brand, network, and resume, and will demonstrate aptitude in personal and technical interviews of varying formats, in order to conduct a successful job search and obtain a job as a Java or Android developer.

Prerequisites

  • Code 301
    • Learners with previous experience can test out of this requirement in their application. If you’d like to test straight into this course, please make sure you have experience with all of the topics listed on the Code 201 and Code 301 course pages
  • All learners are expected to complete the prework for this course before the first day of class.

Objective learners

Everyone who meets the prerequisites.

Age: 18+.

Schedule

The course totals 400 hours, including lectures, lab, coworking, and collaborative projects.

Duration: 20 weeks, 5 days/week, Monday – Friday.

Daily: 4h/day.

Method of Instruction

Daytime learners, during instruction weeks, experience a combination of interactive lecture from an instructor, supervised lab time, and unsupervised coworking and pair-programming time for assignments and projects. Learners study provided materials and online 3rd-party resources, while they work on assignments and projects. Approximately every fifth day of instruction includes focused job skills training and workshops, in addition to lab/coworking time for assignments and projects. During project weeks, which are all lab-only, learners s work with a team of peers on special projects, with instructor and TA oversight and guidance.

For nights & weekend learners, the courses are designed to provide the same curriculum, content, and experience over roughly twice the duration of the daytime course equivalents.

Completion Criteria and Award

Learners must earn a passing grade of 90% in order to pass, become graduates of Code Fellows and be awarded a certificate of graduation.

Topics

Concepts
  • Java Fundamentals
    • Native Primitive Data-types
    • Strings
    • Arrays
  • Java Collections library
  • Static Typing
  • Access Modifiers
  • Java Generics
  • Exception Handling
  • Unit Tests
  • Test-Driven Development
  • OOP Principles
  • Threading & Concurrency
  • Recursion
  • MVC
  • Identity and Authentication
  • Security and Performance
  • Web APIs
  • Design Patterns
  • Application Deployment
Data Structures and Algorithms
  • Big O Asymptotic Analysis
  • Array Lists
  • Linked Lists
  • Stacks/Queues
  • Trees
  • Binary Search Trees
  • Hash Tables
  • Sets
  • Graphs
  • Breadth-first and Depth-first Traversals
  • Recursive Backtracking
  • Sorting Algorithms
  • Daily Whiteboard Interview Practice
Languages and Frameworks
  • Java
  • SpringMVC
  • Thymeleaf
  • Spring Security
  • Hibernate
  • Android
  • OkHTTP
Environments and Tools
  • Unix
  • Git
  • GitHub
  • IntelliJ IDE
  • Android Studio
  • SQLite
  • PostGres
  • Cloud servers, like AWS EC2 and RDS
  • AWS Amplify
  • AWS Cognito
  • AWS DynamoDB
  • AWS Lambda
  • AWS Pinpoint
  • Google Firebase Cloud Messaging

Career Transition Services

Changing careers is about more than learning a new skill. In tandem with your software development education, you will receive powerful career-building strategic training so you can confidently start your job search as soon as (or even before!) you graduate.

Our Career Transition Services provide training, mentoring, leadership, and introductions to industry partners to help you become a more well-rounded software developer and a leader in your field. These services, which start in Code 201 and continue after Code 401 graduation, involve a series of events, workshops, and assignments that help you think holistically about your new career and take actionable steps towards success.

Material Requirements

You are required to supply your own laptop that meets the below requirements. Chromebooks are not suitable for this course, since you can’t directly control installed software. You are responsible for the upkeep and maintenance of your computer throughout the course. The course pre-work will have specific instructions for configuring your computer to be ready for the first day of class.

  • 64-bit Operating System: either macOS, Linux, or Windows Pro
  • Fully up to date, with the latest version of the operating system and all security updates installed
  • At least 100GB of free space on the hard drive
  • At least 16GB of RAM. 32GB RAM strongly preferred
  • Free of viruses, Zoom-ready (reliable webcam and microphone), and in general working order

By the first day of class, you will need:

Stacked Modules

Concepts in each of our courses are taught using stacked modules, where a new concept is introduced in each class session, building upon what came before it. This is a challenging style that requires persistence, practice, and collaboration, but allows more concepts to be introduced over the length of the course. This method helps learners learn and retain more information in a short period of time.

Homework Policy

In order to pass the class, learners must attain at least 90% of available points.

Professionalism

Punctuality, participation in discussions, completion of assignments, and demonstration of professional courtesy to others are required, in accordance with our Code of Conduct. Attendance will be taken at the beginning of every class. Passing requires at least 90% attendance. Learners should always contact the instructors ahead of time if they are unable to attend all or part of the published class/lab hours.