The program will encompass the various aspects of enterprise app development and covers the following objectives:
- Learn to be a full-stack Java programmer, build test and release non-trivial applications.
- Learn the complete tech stack including Java Spring, Micro services, Polyglot Persistence & REST
- Learn to work as real programmers and software engineers with source control, continuous integration, automated testing and cloud deployment
The program will enable learner to implement the preceding objectives through a project based learning methodology. The students are expected to spend at least 70% of their time on programming exercises and projects during the program.
In the first 13 weeks, apart from the regular programming exercises,
- Learner will build fairly complex projects such as a complete activity stream system similar to WhatsApp by using the activity stream 2.0 spec. This is a complete full stack app with a Spring/Micro services based backend and an AngularJS based front end.
- Learner will also be building a query processing engine using core Java that can take a user specified query and execute it on a comma separated data file.
In the next 4 weeks, as part of the capstone,
- Learners will be grouped into teams of 6-8. Each team will build a significant full-stack app. Some examples of what we build are quiz engines, multi-player games, semantic search engines, conversational chat bots etc.
- The capstone is intended to give you the experience of working on a real tough industry relevant project in an environment that is similar to the programming environments within top software engineering companies.
Introduction to programming and Core Java (4 weeks)
The module aims at intensive work with core Java, starting from the basics of programming to building serious applications with Java which will build your fundamentals around programming, object orientation and Java8. The module covers the following topics
- Fundamentals of programming
- Java language basics, data types and control structures
- Object oriented programming with Java
- Useful Java classes, Exceptions, Date and time,
- Strings and regular expressions
- Collection framework and generics
- Unit testing, error and exception handling
Building Micro-services with Java Spring and SpringBoot (4weeks)
The module aims at learning how to build reactive Micro-services with Spring. Learner will study core Spring including inversion of control, AOP, Dependency Injection and wiring. The module will also include REST principles and how to build Micro services. Learner will work with databases and implement polyglot persistence models. Also the module will include how to write automated test cases and work in an environment with continuous integration. The module covers the following topics
- Dependency injection, aspect oriented programming and inversion of control
- Core spring, Beans and wiring
- Implementing Spring MVC
- Hibernate and persistence models with Spring
- Working with relational databases (MySQL)
- RDBMS basics, query writing
- Data modeling
- Building Micro services with Spring and Spring Boot. REST fundamentals and API design.
- Automated testing of Spring applications with Cucumber, Selenium
- Continuous integration with Maven/Gradle and Jenkins
- Deployment on to Dockerised environments
The module aims at learning Es6, Angular JS and how to build modern, responsive single page applications. Learner will connect these applications with the Spring based Micro-services which were built in the previous module. One has to write automated tests and learn how to build, package and release front-end applications. The module covers the following topics
- DOM manipulation
- HTML5 and CSS3
- Building single page applications using AngularJS
- Dependency injection, components thinking, controllers and services
- Connecting to REST APIs and using JSON
- Automated testing using Chai, Mocha and Jasmine
- Packaging and deploying AngularJS apps, task runners like Grunt.
Capstone Project (4 weeks)
Learner will use all the concepts learnt over the previous 3 modules to build, test and release a complete full-stack application. Here the project work will be as a part of a small team in an environment that is like a real product engineering environment.