Integration

Overview

This is one program that integrates all of the programming skills and concepts that you learn throughout the semester.

This program will serve as a showcase of your skills to include with job applications and a resource you can reference in future courses and projects.

Add to the program every week.

Your program is an individual assignment but you should seek feedback and assistance from your development team.

You have required components to include in the project but there is room for creativity. It will be most enjoyable if you connect it to something you are interested in. Make it fun!

A guiding principle of your project should be The 3C's of Entrepreneurial Mindset: Curiosity, Connections, and Creating Value.

Inspirations:

  • something genuinely useful to you

  • Service Learning

  • a quiz game

  • something similar to a Google Assistant app

  • revolve around a theme you are interested in like a sport, book, television show, game, etc.

  • incorporate elements from other courses you are taking or subject areas you are interested in like physics or math

  • something related to your current job or potential future career

  • replicate / enhance an existing program

  • if you don't have any creative ideas you could basically make a big combination of your programming exercises and code demonstrated in module resources (along with some other required content) in a robust, user friendly, well documented, well written, cohesive program.

A Sprint is a time-box of one month or less during which a “Done”, useable PSI (Potentially Shippable Increment) is created. You will submit your PSI for feedback.

Philosophically, you are not creating a different PSI / program each month. You are creating one program throughout the semester that is going to be checked each month.

Also philosophically, the Increments are not incomplete versions of your final program. Each should be fully functional and complete, just on a smaller scale.

A new Sprint starts immediately after the conclusion of the previous Sprint. Sprint dates are on the main page of the course web site.

A Product backlog (PBL) is a prioritized list of high-level requirements.

A Sprint backlog (SBL) is a prioritized list of tasks to be completed during the sprint.

You will keep the code for your project in a GitHub repository.

You will use some additional features in GitHub to help you keep your project organzied.

  • First add issues using the Issues tab. Add an issue for each bullet point within Sprint / Milestone 1, 2, and 3 below. Set the Milestone for each issue. Help

  • Next, go to the Projects tab, click the Create a project button, name your project board something like Integration Project Board or some other name if your project has a theme, choose the Template Basic kanban. Archive or delete the default cards. Drag issue cards into the To do column.

  • When you start working on issues, drag them to the In progess column. When you finish the issue, move it to the Done column.

PBL

  1. utilize the programming concepts covered in the course.

  2. be user friendly.

    1. All words seen by the user are spelled properly and basic grammar, such as capitalization, is correct and current. Use a spellchecker and/or proofreader if necessary.

    2. Give the user information about the program, such as a brief introduction statement.

    3. Tell the user the expected format and units of measurement for desired input, like "Enter speed as a whole number in miles per hour:", not just "Enter speed"

    4. Describe output, like "The area equals 45 square feet." not just "45".

    5. Give friendly, descriptive error messages when appropriate.

  3. demonstrate best practices for documentation.

    1. Cite sources used like the textbook, web sites, Help documentation, tutoring, classmates, etc.

    2. Comments are More Important than Code ACM article

    3. Coding Techniques and Programming Practices Comments section MSDN

    4. Comment examples Stack Overflow, some funny, some explicit

  4. adhere to Google Java Style. (style expectations)

  5. not crash when given bad input.

SBLs

Sprint / Milestone 1

    • Add your name as a comment at top of every file

    • Add a description of the program as a comment at top

    • Add a list and description of Java built-in data types within the user interface or in comments

    • Add a greeting / introduction to the user

    • Use a boolean variable with an appropriate name (singular noun, lowerCamelCase)

    • Use an int variable with an appropriate name (singular noun, lowerCamelCase)

    • Use an double variable with an appropriate name (singular noun, lowerCamelCase)

    • Use a String object with an appropriate name (singular noun, lowerCamelCase)

    • Define (in English) the term "variable" as it relates to computer programming in a comment or the user interface

    • Define (in English) the term "scope" as it relates to computer programming in a comment or the user interface

    • Use final with a variable and describe what it means in a comment

    • Use casting and describe what it means in a comment (optional for 1, required for 2)

    • Format strings using escape sequences (optional for 1, required for 2)

Sprint / Milestone 2

    • Create a method with arguments and return values

    • Identify a method call and argument in comments

    • Identify a header and parameter in comments

    • Use the Random class

    • Use the Math class

    • Create if/else constructs

    • Create ternary constructs

    • Use a switch statement

    • Compare two String objects by using the compareTo and equals methods and make a comment describing how == works with objects

    • Use +, -, *, /, %, ++, --, +=

    • Use relational operators

    • Use conditional operators

    • Describe operator precedence as a comment

    • Create and use while loops

    • Create and use for loops

    • Create and use do/while loops

    • Use break in a loop with a comment describing what it does

    • Use continue in a loop with a comment describing what it does

Sprint / Milestone 3

    • Make a class in a separate file with private fields, public getters and setters, a constructor with and without parameters

    • Overload a method

    • Describe inheritance and its benefits

      • Optional: Develop code that makes use of inheritance

      • Optional: Use super and this to access objects and constructors

    • Describe polymorphism

      • Optional: Develop code that makes use of polymorphism

    • Declare, instantiate, initialize and use a one-dimensional array

    • Manually find the smallest value in an array

    • Get a sum of the values in an array using an accumulator.

    • Search an array and identify the index where a value was found.

    • Create and use the enhanced for loop

    • Declare, instantiate, initialize and use multi-dimensional arrays

    • Declare and use an ArrayList of a given type

    • Search a two-dimensional array and identify the coordinates where a value was found

    • Effectively utilize exception handling for user input of an int

Please make it very clear where you met SBL items within your code by copying and pasting the SBL items into your README file and identifying the class and method where you demonstrate them.

Submission instructions: a link to your project in a private repository in GitHub. See GitHub page