Skip to content

Latest commit

 

History

History
92 lines (73 loc) · 4.02 KB

README.md

File metadata and controls

92 lines (73 loc) · 4.02 KB

Code 401: Advanced Software Development in Java with SpringMVC and AWS

Overview

Learn the language used at Google, Amazon, Netflix and other big companies. Gain an understanding of statically typed languages and gain a leg up on learning other languages in the future.

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

Students will use IntelliJ IDEA to create Java applications. Students will use Heroku and AWS to deploy the applications onto live servers.

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

Schedule example

Time Monday Tuesday Wednesday Thursday Friday
9am-1pm Lab 1, journal 1 Lab 2, journal 2 Lab 3, journal 3 Lab 4, journal 4
1pm-2pm Lunch Lunch Lunch Lunch Lunch
2pm-5pm Lecture 1 Lecture 2 Lecture 3 Lecture 4 Lecture 5
5pm-6pm DS&A 1 DS&A 2 DS&A 3 DS&A 4 DS&A 5
after 6pm Finish DS&A, read through Lab 1, readings for Lecture 2 Finish DS&A, read through Lab 2, readings for Lecture 3 Finish DS&A, read through Lab 3, readings for Lecture 4 Finish DS&A, read through Lab 4, readings for Lecture 5 Finish DS&A over weekend, readings for lecture 6

Assignments, Deadlines, Late Work, and other fun things

There are several types of assignments that are required for this course, and they have different policies on late work.

Topics

Concepts

  • Java Fundamentals
    • Native Primitive Data-types
    • Strings
    • Arrays
  • Java Collections library
    • Lists
    • Maps
    • Sets
    • Stacks and Queues
  • Exception Handling
  • Unit Tests
  • Test Driven Design
  • OOP Principles
  • Concurrency
  • Recursion
  • MVC
  • Identity and Authentication
  • Security and Performance
  • Web APIs
  • Design Patterns
  • Application Deployment

Data Structures and Algorithms

  • Array Lists
  • Linked Lists
  • Stacks/Queues
  • Trees
  • Binary Search Trees
  • Heaps
  • Hash Tables
  • Sets
  • Graphs
  • Sorting Algorithms

Languages and Frameworks

  • Java
  • SpringMVC
  • AWS

Collaboration

  • Group Projects
  • Whiteboard Challenge Groups

Environment and Tools

  • Unix
  • Git
  • GitHub
  • IntelliJ IDE
  • Postgres

Learn with 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 students learn and retain more information in a short period of time. Learn more about stacked modules »

Material Requirements

Students are required to bring their own laptop with plenty of free space on the hard drive. All students will be responsible for ensuring their computers contain the necessary tools to build and run the programs they write. These tools are available for any of MacOS/Windows/Linux, so students should use the operating system they are most comfortable with. By the first day of class, students will need:

Professionalism

Punctuality, participation in discussions, completion of assignments, and demonstration of professional behaviors with 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. Students should always contact the instructors ahead of time if they are unable to attend all or part of published class / lab hours.