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
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:
utilize the programming concepts covered in the course
use proper documentation / comments
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.
PyCharm has some built in markdown tools or you can use https://stackedit.io/
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.