-
Notifications
You must be signed in to change notification settings - Fork 0
Module 1 Weekly Assignments
- Week 00 - Orientation Week
- Week 01 - Foundations
- Week 02 - Foundations
- Week 03 - Foundations
- Week 04 - Foundations
- Week 05 - Foundations
- Week 06 - Foundations
- Week 07 - Foundations
- Week 08 - Foundations
- Week 09 - Foundations
- Week 10 - Foundations
This first week will be focused on access and expectations and will be used to become acclimated with the tools and processes used in this program. This will include getting familiar with our calendar invites for squads and 4:1's, using Slack, setting up your computer with the development tools required for the first module in this program (IntelliJ and Git), and ensuring you have access to the curriculum, tutorials, and exercises used in this program (Tech Elevator and GitLab).
When working in teams, you will ultimately need to share your code with others so their code can work with yours (and vice versa). Version control systems are typically used to help you keep track of your code and the changes you make to it as well as keeping your code in a central repository so it can be accessed by other team members. We will be using Git as our version control system and GitLab as our platform to share repositories which you will learn about. GitLab will also be used as part of the curriculum for you to download tutorials and exercises and for you to submit your exercise solutions.
You are encouraged to become familiar with the command line. This is not just for Git; it's important to be able to navigate, search, and build your programs using the command line and employers look for these skills. The command line is much more efficient, powerful, and scriptable, offering capabilities unavailable using GUI (Graphical User Interface aka mouse-based) interfaces. For those of you on a Mac, simply use the Terminal. For those of you on a Windows computer, GitBash will provide a similar console so the commands you'd find on a Mac/Linux/Unix environment will be available.
Although this will be a light week, we recommend taking advantage of the time available to meet your coaches and peers and get into good habits with taking notes, creating flashcards, and journaling your learning.
Orientation week is ~10 hours. Happy Coding!
Technical Skill Development
Learning Objectives
- Download and install the required software for this program.
- Explain what Git is, the difference between Git and GitHub, and demonstrate creating a Git repository and pushing to GitHub.
- Explain the correct way to ask for technical help
- Explain the expectations for 4:1 and Technical Squad sessions
- Complete: Software installation (~4 hours)
- Watch: Git Tutorial Part 1: What is Version Control? (~10 mins)
- Watch: Git Tutorial Part 2: Vocab (Repo, Staging, Commit, Push, Pull) (~15 mins)
- Watch: Git Tutorial Part 3: Installation, Command-line & Clone (~15 mins)
- Watch: Git Tutorial Part 4: GitHub (Pushing to a Server) (~15 mins)
- Read: Expectations for Live Technical Sessions (~30 mins)
- Read: How to ask for help (~30 mins)
- Complete: Student Guide (~30 mins)
- Watch: How to navigate GitLab and IntelliJ to import and run Tutorials and Exercises (~6 mins)
- Watch: How to submit your first Exercise from GitLab to Tech Elevator (~15 mins)
- Read: IntelliJ Configuration (~30 mins)
Welcome to Week 1! This is the first "real" week of the program where you will be diving into the curriculum materials in Tech Elevator and tackling your first tutorial and exercise in GitLab.
Last week, you downloaded and installed some of the tools you'll be using in this program (IntelliJ and Git). The first half of this week is to introduce you to those tools and how to use them so you can follow along with the course materials and successfully submit your exercises. The second half of the week will start to get into some introductory Java topics on data types, variables, and expressions where you'll actually write some of your first Java code.
You will have (2) Tech Squads this week (and every week moving forward) that have required pre-work.
For your first Tech Squad session, you must complete the following in advance:
- File System and Command Line
- Git
- Java
- IntelliJ
- Compiling and Running Java programs on the command line
- Understand the Differences between JVM vs JRE vs JDK
For your second Tech Squad session, you must complete the following in advance (all reading materials, the quiz, and the tutorial):
- Variables and Data Types
Daily/weekly reflection on your learnings is highly encouraged so you can determine what you are feeling comfortable with as well as what isn't making as much sense as you'd like. Use this reflection to raise topics during Tech Squads and Technical Small Group Sessions.
You might also utilize this reflection to create flashcards to help remember the learnings from this week. You might forget some of the details covered this week by the time you get to week 30 and some of these details are the subject of Technical Job Interviews. You can never start preparing too early!
Start early and code as much as you can this week to reinforce all of the learnings.
Week 1 is ~20 hours not including squads or study time. Be patient and happy coding!
Technical Skill Development
Learning Objectives
- Run common command-line commands to navigate the file system
- Learn about version control using Git
- Understand the difference between source code, bytecode, JVM, and JDK
- Know how to perform common tasks with IntelliJ
- Declare and assign values to variables
- Write arithmetic expressions and understand how they are evaluated in code
- Identify the right primitive datatypes to model data in a real-world domain
- Understand and use casting
- Complete: File System and Command Line (~2 hours)
- Complete: Git (~2 hours)
- Complete: Java (~2 hours)
- Complete: IntelliJ (~2 hours)
- Read: Using money to help learn decimal numbers (~25 mins)
- Watch: Compiling and Running Java programs on the command line (~15 mins)
- Watch: Understand the Differences between JVM vs. JRE vs. JDK (~15 mins)
- Complete: Variables and Data Types (~8 hours)
- Watch: Plan your Java learning path (~30 mins)
- Take Notes on Individual Learning Progress (~15mins)
This week, you will continue building on your Java knowledge with boolean expressions, if/else statements, loops, and arrays. When you're learning a new language, your primary focus is figuring out how to express your thoughts using this new language so you can communicate effectively -- in this case, with a computer, so it executes your logic correctly per your expectations.
But the computer may not be the only audience of your code. Your peers may want to review your code to learn how you completed an assignment and your trainers may also need to review your code to help you debug an issue. In the future, it will be your teammates and managers. This is why it's important to write clean code that is easily understood by other humans. Practice writing clean code using the tips provided this week.
For your first Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Logical Branching
For your second Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Loops and Arrays
Daily/weekly reflection on your learnings is highly encouraged so you can determine what you are feeling comfortable with as well as what isn't making as much sense as you'd like. Use this reflection to raise topics during Tech Squads and Technical Small Group Sessions. You might also utilize this reflection to create flashcards to help remember the learnings from this week. You might forget some of the details covered this week by the time you get to week 30 and some of these details are the subject of Technical Job Interviews. You can never start preparing too early!
Start early and code as much as you can this week to reinforce all of the learnings.
Week 2 is ~19 hours not including squads or study time. Be persistent and happy coding!
Technical Skill Development
Learning Objectives
- Build boolean expressions using arithmetic, comparison, and logical operators
- Write conditional code using boolean expressions
- Read and understand complex code expressions
- Understand the use and implications of code blocks and variable scope
- Declare an array
- Get and set the values of array elements
- Use for loops for iterative logic including sequentially processing values in an array
- Increment and decrement values using shorthand assignment
- Complete: Logical Branching (~8 hours)
- Complete: Loops and Arrays (~8 hours)
- Read: 10 Tips to Keep Your Code More Clean (~30 mins)
- Watch: What does a Java Developer do? (~15 mins)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
Welcome to the World of Software Development
- Gain a basic understanding of the software development industry.
- Identify common trends including salary ranges, job titles, and career paths
- Watch "Different Career Paths for Software Engineers" (~10 mins)
- Watch: "What is the Career Path for a Software Engineer?" (~10 mins)
- Watch: "4 Trends of Software Developers" (~5 mins)
While the programs you've written up to now might have been challenging, they have been a bit boring from a user's perspective. This week explores the concept of Command-Line programs so that you can take input from your users and have your program respond or do something with that input!
Java is an Object-Oriented language and you have actually already been working with some objects: Strings! This week, you will get an in-depth look at Objects and will go deeper into Strings and how they can be manipulated, as well as, the performance considerations related to Strings.
All of the information stored in your variables is housed in the computer's memory. You will come to find that not all memory is created equal and different types of memory are used to store different types of data. That memory is finite and your programs must operate within the confines of the available memory. You will also learn how the computer manages that memory and the concept of Garbage Collection. For your first Tech Squad this week, you are required to complete the following (including the tutorial):
- Command-line Programs
For your second Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Introduction to Objects
Daily/weekly reflection on your learnings is highly encouraged to determine what you are feeling comfortable with as well as what isn't making as much sense as you'd like. Use this reflection to raise topics during Tech Squads and Technical Small Group Sessions. You might also utilize this reflection to create flashcards to help remember the learnings from this week. You might forget some of the details covered this week by the time you get to week 30 and some of these details are the subject of Technical Job Interviews. You can never start preparing too early!
Start early and code as much as you can this week to reinforce all of the learnings.
Week 3 is ~18 hours not including squads or study time. Be curious and happy coding!
Technical Skill Development
Learning Objectives
- Accept user input from stdin
- Parse strings into numeric data types
- Understand code-completion features provided by the IDE
- Describe the key features of objects and how they are used by computer programs to model real-world problems
- Explain the difference between objects and classes
- Describe how objects are created and used
- Describe how objects are stored in the computer and how objects are different than primitives
- Use methods of the String class for text processing and manipulation
- Complete: Command-line Programs (~8 hours)
- Complete: Introduction to Objects (~8 hours)
- Watch: Strings and StringBuilder (~30 mins)
- Watch: What does a Java Developer do? (~15 mins)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
- Identify careers in the software development industry.
- Identify modules in technical curriculum
- Understand current tech industry trends.
This week moves into a really important topic: Data Structures. So far you have been able to store data in variables and arrays, which is fundamental but can be limiting when solving many problems. Different Data Structures provide an elegant way of storing and retrieving data to meet certain needs and they can grow and shrink automatically, unlike an array. Java provides a number of Data Structures via the Collections package and also provides a streamlined way to iterate over the elements stored.
Pay special attention to the Map interface and HashMap class. This is a common data structure that is used to solve many technical interview coding challenges.
For your first Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Collections (Part 1)
For your second Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Collections (Part 2)
Week 4 is ~18 hours not including squads or study time. Happy coding!
Technical Skill Development
Learning Objectives
- Become familiar with the commonly used collections classes from the standard library
- Choose between a List, Stack, Queue, Set, or Map for modeling real-world data
- Describe the differences between a List and an array
- Declare and instantiate instances of List and Map
- Add, retrieve, delete, and modify values in a collection
- Iterate over the values of a collection
- Complete: Collections - Part 1 (~8 hours)
- Complete: Collections - Part 2 (~8 hours)
- Watch: What do software engineers do at work? (~15 mins)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
Written Communications (Email & Slack)
- Differentiate between mediums of professional written communications (i.e., Slack, Email, Zoom, etc.) and the associated communication strategies/standards
- Compose a professional email and other mediums of written communication adhering to professional communication standards
- Assess and critique emails/written communication to result in professional email standards
Pair Programming builds on the concept of "two heads are better than one" and is not only a great productivity technique that has been embraced by many Software Engineering teams, it is a great learning tool. On the one hand, you will have both the opportunity to teach some concepts to your partner and you will also learn from your partner as you each will have gained different strengths with the material you have learned over the past few weeks. On the other hand, it is a growth opportunity to work as a team (and it has its challenges, both logistical and philosophical) and you will be able to discuss this experience during job interviews.
Start early and utilize your program resources to overcome any challenges you may face.
You are encouraged to take some downtime this week to allow your subconscious mind to naturally reflect on what you've learned and accomplished these past few weeks. But if you're bored (and excited about the program), you might consider consciously reviewing the learnings from the past weeks and reflect on them. Hopefully, you've been creating flashcards and you can use this time to study those (or create them if you haven't done so already). You might even code a program of your choice to test and reinforce the learnings (there are lots of project ideas online if you don't have a personal problem you'd like to solve). Depending on your time and ambition, you might even work ahead into next week's material. None of this is required, we do want you refreshed and ready for the weeks ahead because they will get a bit busier as we close out this first module.
Week 5 is ~18 hours not including squads or study time. Happy coding!
Technical Skill Development
Learning Objectives
- List the benefits of Pair Programming
- Describe how to Pair Program
- Watch: Pair Programming (~15 mins)
- Watch: How to Pair Program (~15 mins)
- Read: Pair Programming Styles (~30 mins)
- Watch: How to Fork the Pair Programming Assignment and Collaborate with your Partner (~5 mins)
- Review: Pair Programming How To Guide and Professional Communication (~30 mins)
- Complete: Pair Programming Assignment #1 (~8 hours)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
- Understand the meaning and practical implications of transferable skills.
- Watch: "Transferable Skills" (~5 mins)
- Watch: "5 Essential Soft Skills Every Software Engineers Need to Know" (~15 mins)
- Read: "Soft Skills for Developers" (~15 mins)
Since week 1 it has been discussed that Java is an Object-Oriented Programming (OOP) Language and you have been introduced to a number of different Classes that are provided by the Java libraries (e.g. Strings and the various Collections classes). This week you will learn how to write your own classes and methods and learn the Object-Oriented Programming Principles to guide you in designing your classes and methods. If you refer back to an earlier article about "clean code", you should hopefully be moving in the right direction by utilizing classes and methods to separate and re-use logic.
You will also be introduced to the concept of Inheritance to further build upon the various relationships different classes can have with each other. We will build upon Inheritance next week as well, so make sure you are taking the time to really understand the what, why, where, and how as it relates to Inheritance.
For your first Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Classes and Encapsulation
For your second Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Inheritance
OOP is a core competency of Software Developers and you can definitely expect to be quizzed on these topics during a Technical Job Interview. You are highly encouraged to take notes and create flash cards to aid your preparation for technical interviews.
Week 6 is ~20 hours not including squads or study time. Happy coding!
Technical Skill Development
Learning Objectives
- Declare a new class
- Describe the object oriented principle of Encapsulation
- Identify the key elements of a class declaration (name, member variables, constructors, methods)
- Identify the components of a method signature
- Declare a method
- Declare a constructor
- Use the private and public access modifiers appropriately to hide or expose elements of a class
- Describe the purpose and use of inheritance in an Object Oriented Programming language
- Define and use superclasses and subclasses in an inheritance hierarchy
- Identify superclasses and subclasses from viewing source code
- Define an IS-A relationship in reference to inheritance
- Define what overriding means in the context of inheritance
- Describe what is being inherited
- Describe how access modifiers work in an inheritance relationship
- Utilize superclass constructors in a subclass
- Explain autoboxing and unboxing
- Complete: Classes and Encapsulation (~8 hours)
- Complete: Inheritance (~8 hours)
- Watch: What is Autoboxing and Unboxing in Java? (~15 mins)
- Watch: 13 Types of Software Developers (~15 mins)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
Written Communications (Email & Slack)
- Understand the meaning and practical implications of transferrable skills
- Identify commonly valued soft skills among software developers
- Identify personal strengths and skills
This week goes deeper into OOP concepts with a focus on Polymorphism. You will also be introduced to the concept of Interfaces and Abstract Classes as a more advanced (and widely used) means of accomplishing inheritance and polymorphism. These are core OOP competencies and you will likely be quizzed on these topics during Technical Job interviews, so take notes, create flashcards, and try your hand at explaining these concepts to your trainers and peers to confirm your understanding.
You will also be introduced to Unit Testing. You have already been exposed to unit tests since that is how your exercises have been evaluated so far: bypassing the provided unit tests! You are encouraged to refer back to the earlier tutorials and exercises to review how those unit tests were developed and hopefully they make more sense with the information you will learn this week. You are also encouraged to write your own test cases to put your knowledge to use.
You will also be working with your partner on your second Pair Programming assignment this week. Start early since you will be balancing other learnings at the same time. This Pair Programming assignment is based on last week's material so you do not have to complete this week's learnings in order to start on it. So I'll say it again, start early so you can finish on time and utilize your Technical Small Group Session and Slack for support if you get stuck.
For your first Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- Polymorphism
For your second Tech Squad this week, you are required to complete the following:
- Managing Inheritance
Happy coding!
Technical Skill Development
Learning Objectives
- Explain the concept of polymorphism and how it is useful
- Demonstrate an understanding of where inheritance can assist in writing polymorphic code
- State the purpose of interfaces and how they are used
- Use polymorphism through inheritance using IS-A relationships
- Use polymorphism through interfaces using CAN-DO relationships
- Give examples of interfaces from the Java standard library (e.g. Collections)
- Define and use abstract classes and methods
- Describe the difference between an Interface and an Abstract Class
- Know why and what kinds of tests are used in software development
- Know how to structure a unit test - arrange, act, and assert
- Understand how to write a unit test using JUnit
- Complete: Polymorphism (~8 hours)
- Complete: Managing Inheritance (~8 hours)
- Watch: Abstract Classes and interfaces (~15mins)
- Complete: Unit Testing (~4 hours)
- Complete: Pair Programming Assignment #2 (~8 hours)
- Take Notes on Individual Learning Progress (~15mins)
Professional Skill Development
Learning Objectives
Professional Introductions
- Describe the purpose and goals of a professional introduction
- Distinguish between the content, goals, and delivery styles of professional and social introductions
- Craft in writing an engaging and focused professional introduction leveraging the present-past-future framework, outlining key points instead of producing a script to memorize
- Learn about Professional Introductions (~1 hour)
This is the last week of the Tech Elevator Java materials for this first of three modules on Full Stack Software Development before wrapping up with this module's Capstone project!
The main topics of this week are focused on error handling and persisting data to the file system. You might have seen some errors when running your earlier Java programs, like ArrayIndexOutOfBoundsException, and you've probably relied on if statements to ensure you're getting the correct results/behavior in your programs. You might have also noticed that when your programs end, the data in your variables all disappear. Imagine if when you restarted your phone and all of your contacts, text messages, and apps disappeared!
This week you will learn about Java's approach to error handling called Exceptions and how to "catch" exceptions so that your programs can handle errors gracefully. You will also learn how to read and write data to/from files so that your programs can persist data when they end so that your data doesn't disappear. There are of course other uses for reading and writing to files: sharing data from your program with other programs (or other instances of your program... think Microsoft Word: you can write a document, save it to a .docx file and share it with someone else who can then open that file in their installation of Microsoft Word).
You will also be working with your partner on your third Pair Programming assignment this week. Start early since you will be balancing other learnings at the same time. This Pair Programming assignment is based on last week's material so you do not have to complete this week's learnings in order to start on it. So I'll say it again, start early so you can finish on time and utilize your Technical Small Group Session and Slack for support if you get stuck.
For your first Tech Squad this week, you are required to complete the following:
- Exception Handling
For your second Tech Squad this week, you are required to complete the following (including the tutorial and quiz):
- File I/O Reading (you can start this one early since the Exception Handling unit is fairly short)
- File IO Writing
Week 8 is ~24 hours not including squads or study time. Happy coding!
Technical Skill Development
Learning Objectives
- Throw exceptions from code to delegate errors to code that can handle it
- Describe scenarios where code can't handle an error it has found and where code can handle an error triggered in another part of the application
- Explain the parts and uses of the
try-catch-finally
block- Create custom exceptions for control flow and error handling in specialized code
- Write tests to test proper exception handling and throwing
- Open a file for reading and read line by line
- Use
try-with-resources
to properly open and close a file handle- Open a file for writing
- Handle errors in file reading and writing properly
- Write tests around file IO errors and processing code
- Explain serialization
- Complete: Exception Handling](https://github.com/Haydasaurus/Merit-America-Java-Bootcamp-Notes/tree/main/Bootcamp-OS/Module-1/2.%20Intro%20to%20Programming%20in%20Java/13.%20Exception%20Handling) (~2 hours)
- Complete: File I/O Reading](https://github.com/Haydasaurus/Merit-America-Java-Bootcamp-Notes/tree/main/Bootcamp-OS/Module-1/2.%20Intro%20to%20Programming%20in%20Java/14.%20File%20IO%20Reading) (~6 hours)
- Complete: File I/O Writing](https://github.com/Haydasaurus/Merit-America-Java-Bootcamp-Notes/tree/main/Bootcamp-OS/Module-1/2.%20Intro%20to%20Programming%20in%20Java/15.%20File%20IO%20Writing) (~4 hours)
- Complete: Pair Programming Assignment #3](https://github.com/Haydasaurus/Merit-America-Java-Bootcamp-Notes/tree/main/Tech-Elevator/Module-1/Projects/Beginning-Code/module-1_pair_programming_3/exercise) (~8 hours)
- Take Notes on Individual Learning Progress (~15 mins)
Professional Skill Development
Learning Objectives
Professional Introductions
- Verbally deliver an engaging and focused 30sec-1min professional introduction following the present-past-future framework
- Deliver a flexed or modified professional introduction tailored to the audience and goals of the interaction (e.g., interview, networking)
- Written Communications Including Email
Congratulations, you have now completed most of the curriculum materials for the foundational Java portion of this program! This week and next you will be putting everything you've learned together with your fourth Pair Programming assignment and your Capstone project!
While you have all week to complete your Pair Programming assignment, we recommend getting it done within the first half of this week so you can focus on the larger Capstone project.
Week 9 is ~22 hours not including squads or study time. Happy coding!
Technical Skill Development
Learning Objectives
- Explain what it means to say that Java uses "pass by value"
- Watch: Is Java "pass by value" or "pass by reference"? (~15 mins)
- Complete: Pair Programming Assignment #4 (~8 hours)
- Start: Module 1 Capstone (~10 hours)
- Take Notes on Individual Learning Progress (~15 mins)
This week you'll primarily be wrapping up your Capstone project. Hopefully, you've already made some progress last week and have some momentum going to complete it as early this week as possible to take a bit of a break before you get into the next module next week!
Now that you've had a few opportunities to work with a partner, you might have noticed that you each have a unique way of thinking as well as a unique style of writing code. While we encourage you to always be your authentic self, your code should follow some standards so it looks and reads more uniformly. Hopefully, you'll appreciate having some Java standards that you and your partner can adhere to after your Pair Programming and Capstone experiences!
You'll also be introduced to a concept called Recursion. Recursive methods are methods that call themselves and can be used to elegantly solve certain problems. They are confusing at first to get your head around from both the perspective of writing your own recursive code as well as reading and interpreting someone else's recursive code. Focus on the Capstone this week, but do take some time to watch these videos on recursion so that you're familiar with the concept. In a future week, we'll be revisiting Data Structures and you'll get to learn about a recursive data structure called the Linked List.
Week 10 is ~21 hours not including squads or study time. Happy coding and we'll see you in the next module!
Technical Skill Development
Learning Objectives
- Explain what coding standards are and why they are important
- Explain what recursion is
- Demonstrate how to trace a recursive program using the function stack
- Read: A short summary of Java code best practices (~15 mins)
- Complete: Module 1 Capstone (~16 hours)
- Watch: What is recursion? (~15 mins)
- Watch: Algorithms: Recursion (~15 mins)
- Watch: The Function Stack and Recursion (~15 mins)
- Watch: Recursion in Java (~15 mins)
- Watch: How to understand any recursive code (~15 mins)
- Take Notes on Individual Learning Progress (~15 mins)
Professional Skill Development
Learning Objectives
Resumes
- Learners will be able to recall information from Big Interview Curriculum and Resume Guidelines
- Explain how to flex the STAR method for resumes focusing on Action and Result
- Utilize the flexed STAR method (emphasis on Action and Result) to construct effective bullet points
- Learners will be able to critique their own and others' resumes and identify the differences between a poorly constructed and high-quality resume
- Complete Resume Course on Big Interview (~1 hour) - Need to upload (Empty Link)
- Week 11 - Jump to the Flag
- Week 12 - Double on Match
- Week 14 - Equal Levels
- Week 15 - Compliance Crawler Directory Reset
- Week 16 - Fun with Anagrams
- Week 20 - Grouping Transactions by Items' Names
- Week 21 - Smallest Negative Balance
- Week 23 - Sign-in Sign-Out Logs