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
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
utilize the programming concepts covered in the course.
be user friendly.
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.
Give the user information about the program, such as a brief introduction statement.
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"
Describe output, like "The area equals 45 square feet." not just "45".
Give friendly, descriptive error messages when appropriate.
demonstrate best practices for documentation.
Cite sources used like the textbook, web sites, Help documentation, tutoring, classmates, etc.
Comments are More Important than Code ACM article
Coding Techniques and Programming Practices Comments section MSDN
Comment examples Stack Overflow, some funny, some explicit
adhere to Google Java Style. (style expectations)
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