Integration Project

Problem Statement

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.

Your program must be original. Do not copy someone else's code. Do not provide your code to anyone. Do not provide exact answers to anyone, provide guidance to help them figure it out. Cite anyone you got help from as a comment in code. Keep the FGCU Academic Integrity policy and the ACM Code of Ethics in mind.

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

  • a PCEP – Certified Entry-Level Python Programmer Certification Exam prep 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.

Development Process

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 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 Canvas.

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.

PBL:

  1. utilize the programming concepts covered in the course

  2. be user friendly

  3. use proper documentation / comments

  4. use proper structure / style

SBLs:

Sprint 1: basic computation, simple I/O

  • Adhere to assignment specifications

    • create a Main.py file in IDLE, a PyCharm project, or another program

  • Requirements / Specifications

    • Documentation

      • your name as a comment at the top

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

      • comments to explain any code that isn't obvious

      • comments to cite sources such as web sites or people who helped you

    • simple I/O

      • the print() function including a greeting / introduction to the user

        • formatting print() output with end= arguments

        • formatting print() output with sep= arguments

      • the input() function

    • basic calculations

      • numeric operators (use and include a comment explaining)

        • **

        • *

        • /

        • %

        • //

        • +

      • string operators (use and include a comment explaining)

        • *

        • +

    • A minimum of 50 lines of code

  • Submission instructions:

    • For the assignment in Canvas, upload and submit your Main.py file

Sprint 2: standard conditional and iterative structures, the definition of functions, and parameter passing

  • Requirements / Specifications

    • Integrate new concepts (from ACM / IEEE)

      • shortcut operators

      • standard conditional structures / statements: if, if-else, if-elif, if-elif-else

        • relational operators

          • ==

          • !=

          • at least one of the following: > >= < <=

        • Boolean operators

          • not

          • and

          • or

      • standard iterative structures:

        • while

        • for

        • range()

        • in

      • function definitions (do not define a function inside another function, def should be at the left margin)

      • parameter passing (write a function that accepts parameters)

        • do not use "global"

    • A minimum of 100 lines of code

  • Submission instructions:

    • Submit .py file as before and...

    • Create a GitHub repository for your program, upload your Main.py file through the browser, and submit a link to it as a submission comment

Sprint 3: data structures (lists, tuples, and dictionaries) or math programming (Optional)

  • Requirements / Specifications

    • Programming Track:

      • Complete section 4.6 Tuples and dictionaries, including the Tic Tac Toe project and the Module 4 Quiz and Module 4 Test in the Python Essentials - Part 1 (Basics) PCEP Prep course section 4. Functions, tuples, dictionaries, and data processing to prepare for PCEP Exam block #4: Data Collections – Lists, Tuples, and Dictionaries

      • Add code to your project exemplifying

        • bitwise operators: ~ & ^ | << >>

        • simple lists: constructing vectors, indexing and slicing, the len() function

        • lists in detail: indexing, slicing, basic methods (append(), insert(), index()) and functions (len(), sorted(), etc.), del instruction, iterating lists with the for loop, initializing, in and not in operators, list comprehension, copying and cloning

        • lists in lists: matrices and cubes

        • tuples: indexing, slicing, building, immutability

        • tuples vs. lists: similarities and differences, lists inside tuples and tuples inside lists

        • dictionaries: building, indexing, adding and removing keys, iterating through dictionaries as well as their keys and values, checking key existence, keys(), items() and values() methods

        • strings in detail: escaping using the \ character, quotes and apostrophes inside strings, multiline strings, basic string functions.

    • Math Track:

      • Solve Project Euler problems using Sage

Project Final

  • Enhance code quality and security

    • There should be no warnings from PyCharm Inspect Code (with Severity set to "Warning") (not including PEP 8 or docstring warnings). See the Code Quality / Code Inspection section on the PyCharm page for more information.

  • Enhance structure / style

    • Adhere to PEP 8 Style Guide. There should be no PEP 8 warnings from PyCharm Inspect Code (with Severity set to "Warning"). See the Structure / Style section on the PyCharm page for more information.

      • No line should be longer that 79 characters

      • Tip: Use Ctrl+Alt+L (Windows) or Option+Command+L (Mac) to autoformat

  • Enhance documentation / comments

    • Add a docstring style comment to each file and function. See the Documentation section on the Python page for more information.

    • There should be no "Missing or empty docstring" warnings from PyCharm Inspect Code (with Severity set to "Warning"). See the Code Quality / Code Inspection section on the PyCharm page for more information.

    • Your name should be in all files using __author__

    • Use regular comments to explain any non-obvious code and cite resources used

  • Improve user interface and consider human user factors

    • Adhere to guidelines related to Input/Output, Error Messages, and Software Robustness from Human Factors

    • Not crash when users input a string when a number is expected. See Software Robustness section on the Human Factors page.

  • Adhere to assignment specifications

    • One unified, cohesive, integrated program that starts in Main.py

    • A minimum of 150 lines of code

    • Optional: Create a Readme like this template.

    • Submission instructions:

      • Same as Sprint 2, .py file and a link to your project in GitHub and

      • Optionally, a PDF of your code.

        • In PyCharm, go to File | Print

          • In Settings

            • Uncheck the box to Draw border

            • The boxes for Color printing and Syntax printing should be checked

            • Set the font size to 9

          • In Header and Footer

            • The Text lines should be blank

        • If your program includes multiple files, set the Header Text line to $FILENAME$ then there is an option to print All files in directory in Print | Settings.