Full-Stack System Design and Software Development

In this course, you will work through several software development projects.


You will learn specific technologies, including Java, JUnit, IntelliJ IDEA, Typescript and Node.js. But even more important, you will develop the ability to see the common structures in programs and in tools and learn how to apply these skills to master new technologies quickly.


Upon completion of this program, you will be able to write programs using a systematic approach and to design programs that are easy to maintain. 


You will also learn how to use agile methods in order to build software programs that solve real world problems.


With the skills obtained in this program, you will have the confidence to apply for positions that use any programming language or technology.


In the final project, you will learn how to input, manipulate, and return data with a modern web development stack. Using TypeScript and Node, you will manipulate large amounts of information using a domain-specific querying language. Backend, REST, and front-end technologies will be required to successfully complete the project.


In teams, students will work through the project in several sprints. In each sprint, students will produce a deliverable that is evaluated using an automated test suite. The feedback you will receive from this suite will be limited. To succeed at the project you will need to create your own private test suite to further validate each deliverable.


By working through such a large-scale development project, you will learn technical development skills, and gain experience with how teams develop software in the industry.