cs 499 final project

User Generated

pfS10R60

Computer Science

Southern New Hampshire University

Description

Instructions

In this Module, you will submit your final project for CS 499. Keep in mind that your final project is an ePortfolio that includes the following:

  • A code review in video form
  • Polished work in three categories: Software design and engineering, algorithms and data structures, and databases
  • Narratives explaining your work in each category
  • A professional self-assessment

You have been working on this project throughout the term and should now be at a point where you are focused on the remaining pieces: polishing the artifact and narrative in the databases category and completing the professional self-assessment.

Review the Final Project Guidelines and Rubric PDF document to make sure you are fulfilling all requirements and critical elements. Note that your cumulative work—including code review, artifacts, narratives, and professional self-assessment—should show that you have met the five program outcomes for the Computer Science program.

Remember that while your ePortfolio "lives" in GitHub Pages, you may link to work housed in other places, such as Bitbucket. Publishing guidance is provided in the GitHub Pages Formatting PDF document.

To complete this assignment, review the following documents:

Unformatted Attachment Preview

CS 499 Final Project Guidelines and Rubric Overview As the final step in your journey toward a bachelor of science degree in computer science, you will complete a capstone that integrates the knowledge and skills you have developed throughout your program by creating a professional electronic portfolio (ePortfolio) that is representative of your growth in the program. To do this, you will polish artifacts you submitted earlier in the program, add the improved artifacts to your ePortfolio, and provide a reflection narrative for each artifact. You will also write a professional self-assessment in which you will reflect on your journey through the Computer Science program and how you plan to position yourself professionally. In the software industry, a professional portfolio that showcases your unique abilities and talents is the best way to demonstrate your value to potential employers. A portfolio can provide you with a significant advantage in obtaining a career in the field of computer science. Whether you are seeking employment or seeking a promotion where you are currently employed, a portfolio can help you verify the claims you make about yourself and provide tangible evidence that you are qualified for the position you are seeking. A well-done portfolio will convey the impression that you are strongly motivated, well organized, and accomplished in your field. In addition, the ePortfolio and self-assessment you create for this project will demonstrate your mastery of the individual components of game programming and also your ability to integrate those components in navigating the field as a whole. The final project is divided into four milestones, which will be submitted at various points throughout the course to scaffold learning and ensure quality final submissions. These assignments will be submitted in Modules Two, Three, Four, and Five. Milestone One is a code review of existing artifacts that serves as a foundation for enhancements. Milestones Two, Three, and Four are the enhanced artifacts demonstrating expertise in the three areas of software engineering/design, algorithms and data structure, and databases (these are listed as “Enhance” in the table shown on the next page.) The final ePortfolio, including the professional self-assessment, will be submitted in Module Seven. 1 Evaluation of Capstone: This capstone will be assessed somewhat differently than other courses you have taken online at SNHU. All components of your ePortfolio operate together to comprise the whole capstone experience and are not assessed separately. Your work is expected to meet the highest professional standards. 2 In this assignment, you will demonstrate your mastery of the following course outcomes:      [CS-499-01] Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision making in the field of computer science [CS-499-02] Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts [CS-499-03] Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and standards appropriate to its solution, while managing the trade-offs involved in design choices (data structures and algorithms) [CS-499-04] Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals (software engineering/design/database) [CS-499-05] Develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources Prompt Create a professional ePortfolio to showcase your skills and abilities from the Computer Science program. It will contain an artifact or artifacts demonstrating your skills and abilities in three key categories:    Software design and engineering Algorithms and data structure Databases To demonstrate your growth throughout the program, the artifacts you can choose from are previous final projects from your program or instructorapproved relevant work outside of the program including open-source code. For an artifact to be eligible for your final project, you must enhance it in relation to the three key categories identified above. Prior to adding these artifacts to your ePortfolio, you will conduct a code review to share with your instructor your plans for modification and enhancement of your artifact or artifacts. Your ePortfolio requires a minimum of one artifact, as long as it is modified in a way that demonstrates your skills for each of the categories, and the maximum number of artifacts is three, with a different artifact representing growth for each category. Each artifact in your professional ePortfolio will require a written narrative justifying its inclusion in your ePortfolio. For this component of the project, you will write a professional self-assessment. As mentioned above, all the components of your ePortfolio will be graded together. As such, be strategic about ensuring that evidence of outcomes is provided in your ePortfolio either through the work you complete in your artifact enhancements or your written self-assessment. For example, the fifth outcome for this course concerns security. So either plan to demonstrate proficiency for this outcome via an artifact enhancement or plan to write about your experiences with this outcome throughout your Computer Science program in your professional self-assessment. Also be aware of any changes to 3 this plan as you complete your milestones. Plan ahead to ensure coverage of outcomes, and review your holistic rubric at the end of this document. If you have any questions or concerns, contact your instructor. You will create a professional ePortfolio. This ePortfolio will contain the following:     Your code review Your enhanced artifact or artifacts Your narrative or narratives Professional self-assessment (Note: This will be completed last in the course, but it should be the first thing presented in your ePortfolio and function as a holistic introduction to you, your skills, and your ePortfolio.) As much as possible, your ePortfolio should emphasize your selected area of specialization within computer science (i.e., one of the three key categories identified). Your ePortfolio should be crafted in a way that best showcases your skills with regard to this specialization; this will help you obtain a job in your preferred area of specialization. Include the following in your ePortfolio: I. Informal Code Review: After you have identified the artifact or artifacts for your ePortfolio, but before you complete the modifications and enhancements, you will conduct a code review to share your plans for modification and enhancement. Your code review must be present in your ePortfolio. Your code review must be submitted in the form of a video presentation or screencast walkthrough. Your audience for this code review should be your peers or your manager. Focus on explaining how your code works and why you will complete the enhancement you are planning; do not worry about getting too technical. Address the following in your code reviews: A. Existing functionality: Walk through and identify what the code is, what it does, and how it works. B. Code Analysis: Review the code structure, look for code efficiencies, and check for comments and code documentation. Explain your findings. C. Look for enhancement: Walk through and explain planned enhancements. II. Artifact(s): Provide at least one (with a maximum of three) artifact that represents your growth in the Computer Science program, demonstrating enhancements in the following categories (see the chart below that shows an example of viable course options): A. Software Design and Engineering: For this category of enhancement, consider improving a piece of software, transferring a project into a different language, reverse engineering a piece of software for a different operating system, or expanding a project’s complexity. These are just recommendations; consider being creative and proposing an alternative enhancement to your instructor. Note: You only need to choose one type of enhancement per category. B. Algorithm and Data Structures: For this category of enhancement, consider improving the efficiency of a project or expanding the complexity of the use of data structures and algorithms for your artifact. These are just recommendations; consider being creative and proposing an alternative enhancement to your instructor. Note: You only need to choose one type of enhancement per category. 4 C. Database: For this category of enhancement, consider adding more advanced concepts of MySQL, incorporating data mining, creating a MongoDB interface with HTML/JavaScript, or building a full stack with a different programming language for your artifact. These are just recommendations; consider being creative and proposing an alternative enhancement to your instructor. Note: You only need to choose one type of enhancement per category. CS 499 Capstone ePortfolio Guidance: Pick one course and enhancement from each column. Note: You can pick the same course for multiple enhancements. Category One: Software Design and Engineering Recommended Courses and Final Projects Core Courses: ❑ IT 145: Foundation in Application Development ❑ IT 315: Object Oriented Analysis and Design ❑ IT 365: Operating Environments ❑ CS 250: Software Development Lifecycle ❑ CS 260: Data Structures and Algorithms ❑ CS 320: Software Testing, Automation, and Quality Assurance ❑ CS 330: Computational Graphics and Visualization ❑ CS 340: Advanced Programming Concepts Category Two: Algorithms and Data Structure Core Courses: ❑ IT 145: Foundation in Application Development ❑ IT 365: Operating Environments ❑ CS 250: Software Development Lifecycle ❑ CS 260: Data Structures and Algorithms ❑ CS 340: Advanced Programming Concepts Concentration Courses: ❑ CS 405: Secure Coding Concentration Courses: ❑ CS 405: Secure Coding ❑ CS 410: Reverse Software engineering ❑ CS 350: Emerging Systems Architectures and Technologies 5 Category Three: Databases Core Courses: ❑ DAD 220: Introduction to SQL ❑ DAT 220: Fundamentals of Data Mining ❑ CS 340: Advanced Programming Concepts ❑ CS 360: Mobile Architecture and Programming ❑ IT 340: Network and Telecommunication Management ❑ IT 380: Cybersecurity and Information Assurance Types of Modifications or Enhancements (these are examples; feel free to be creative) ❑ Improve a piece of software ❑ Transfer a project into a different language ❑ Reverse engineer for a different operating system ❑ Expand a project’s complexity ❑ Improve efficiency ❑ Expand complexity ❑ Add more advanced concepts of MySQL ❑ Incorporate data mining ❑ Create a MongoDB interface with HTML/JavaScript ❑ Build a full stack with a different programming language Note: You are encouraged to include additional materials in your ePortfolio to showcase the full range or depth of your skills and abilities. Your additional materials will not be subject to grading but will be eligible for instructor feedback. III. Narratives: For each artifact in your ePortfolio, you will provide a narrative to accompany the artifact itself. The narrative that you write for each artifact should explain why you included the artifact in your ePortfolio and reflect on the process you used to create the artifact. The narrative(s) should focus less on the actual creation of each artifact and more on the learning that happened through the creation of the artifact. For each artifact, you should address the following: A. Briefly describe the artifact. What is it? When was it created? B. Justify the inclusion of the artifact(s) in your ePortfolio. Why did you select this item? What specific components of the artifact showcases your skills and abilities in software development? C. Reflect on the process of enhancing and/or modifying the artifact. What did you learn as you were creating it and improving it? What challenges did you face? How did you incorporate feedback as you made changes to the artifact? How was the artifact improved? IV. Professional Self-Assessment: For your e-portfolio you will write a professional self-assessment. In it, you will reflect on the capstone and your experience in the Computer Science program as a whole. Your professional self-assessment will serve as the formal introduction to your portfolio. You will add it to the beginning of your portfolio for your final submission in Module Seven. Employers often interview a number of technically qualified candidates, so you should try to emphasize aspects of your ePortfolio that set you apart as well as illustrate your competence and employability. In addition, the professional self-assessment is an opportunity to showcase your superior 6 computer science knowledge, skills, and expertise. Be sure that your professional self-assessment is well organized and thoughtful, and that it effectively communicates your strengths in the field of computer science. This artifact might serve as a great first draft of a cover letter and can be useful as you apply for jobs with your new degree. Take advantage of your instructor feedback for this reason. Include the following in your professional self-assessment: A. Discuss how completing your coursework throughout the program and developing the ePortfolio has helped showcased your strengths and shape your professional goals and values and prepared you to either enter or become more employable in the computer science field. Use specific examples from your program and include examples outside of the artifacts included in your ePortfolio. Please address following topics: collaborating in a team environment, communicating to stakeholders, data structures and algorithms, software engineering and database, and security. Note: This should function as an overall introduction to your skills and you will become more specific relative to the included artifacts in the next section. B. Summarize/introduce how your artifacts fit together and inform the portfolio as a whole; this will help demonstrate the full range of your computer science talents and abilities? This section should introduce your audience to the technical artifacts that will follow the professional self-assessment. Milestones Milestone One: Code Review In Module Two, you will complete your code review in video form. This milestone will be graded with the Milestone One Rubric. Milestone Two: Enhancement One: Software Design and Engineering In Module Three, you will complete your first artifact enhancement related to software design and engineering. This milestone will be graded with the Milestone Two Rubric. Milestone Three: Enhancement Two: Algorithms and Data Structure In Module Four, you will complete your second enhancement related to algorithms and data structure. This milestone will be graded with the Milestone Three Rubric. Milestone Four: Enhancement Three: Databases In Module Five, you will complete your third enhancement related to databases. This milestone will be graded with the Milestone Four Rubric. Final Submission: ePortfolio and Professional Self-Assessment In Module Seven, you will submit your final project. It should be a complete, polished artifact containing all of the critical elements of the final product. It should reflect the incorporation of feedback gained throughout the course. This submission will be graded with the Final Project Rubric. 7 Deliverables Milestone Deliverable Module Due Grading Two Graded separately; Milestone One Rubric One Code Review Two Enhancement One: Software Design and Engineering Enhancement Two: Algorithms and Data Structure Enhancement Three: Databases Three Graded separately; Milestone Two Rubric Four Graded separately; Milestone Three Rubric Five Graded separately; Milestone Four Rubric ePortfolio and Professional Self-Assessment Seven Components graded as a whole; Final Project Rubric Three Four Final Project Rubric Guidelines for Submission: Submit your final project as a multipage PDF or Microsoft Word document with a link to the GitHub Pages ePortfolio. This rubric will be applied to both components as a whole and neither component will be assessed on its own. The “Possible Indicators of Success” are examples for you and the instructor of the types of concepts to look for to demonstrate proficiency. They are neither exhaustive nor prescriptive and should be used as guides for illustrating how your capstone embodies the outcome. All outcomes are weighted equally. CS-499-01: Employ strategies for building collaborative environments that enable diverse Proficient Not Proficient audiences to support organizational decision making in the field of computer science 100% 0% Possible Indicators of Success Does the student demonstrate the ability to use interaction to create code-review experiences? Does the student demonstrate the ability to understand code reviews individually and within a team environment? Does the student demonstrate the ability to provide contextual, in-code comments that result in easily readable and understandable code? Does the student demonstrate the ability to support decision making for software design stakeholders? Does the student demonstrate the ability to discuss experiences and best practices working in collaborative environments? CS-499-02: Design, develop, and deliver professional-quality oral, written, and visual Proficient Not Proficient communications that are coherent, technically sound, and appropriately adapted to specific 100% 0% audiences and contexts Possible Indicators of Success Does the student demonstrate the ability to communicate a code review effectively through collaborative environments? Does the student demonstrate the ability to discuss experiences and best practices in communication? Does the student demonstrate the ability to communicate appropriately to specific audiences and contexts? 8 Does the student demonstrate the ability to clearly convey his or her ideas and explain his or her thought process through written, visual, or oral communication? CS-499-03: Design and evaluate computing solutions that solve a given problem using Proficient Not Proficient algorithmic principles and computer science practices and standards appropriate to its 100% 0% solution, while managing the trade-offs involved in design choices Possible Indicators of Success Does the student demonstrate the ability to use pseudocode to segment functionality in software and make design trades? Does the student demonstrate the ability to program solutions to solve logic problems and implement them in software? Does the student demonstrate the ability to clearly articulate approaches to solving complex logic problems inherent software? Does the student demonstrate the ability to discuss experiences and best practices in designing and evaluating computing solutions? CS-499-04: Demonstrate an ability to use well-founded and innovative techniques, skills, Proficient Not Proficient and tools in computing practices for the purpose of implementing computer solutions that 100% 0% deliver value and accomplish industry-specific goals Possible Indicators of Success Does the student demonstrate the ability to employ iterative testing techniques in the code? Does the student demonstrate the ability to use the software development life cycle to create realistic production schedules for software projects? Does the student demonstrate the ability to create industry-standard software designs? Does the student discuss experiences and best practices in using well-founded and innovative techniques, skills, and tools in computing practices? Does the student create more robust and efficient code to deliver value and accomplish industry-specific goals? CS-499-05: Develop a security mindset that anticipates adversarial exploits in software Proficient Not Proficient architecture and designs to expose potential vulnerabilities, mitigate design flaws, and 100% 0% ensure privacy and enhanced security of data and resources Possible Indicators of Success Does the student demonstrate the ability to address potential design flaws in software architecture during the requirements phase? Does the student demonstrate the ability to find and eradicate security vulnerabilities or bugs? Does the student demonstrate the ability to define an approach that ensures all data are explicitly validated? Does the student demonstrate the ability to consider future changes to objects and classes? Does the student demonstrate the ability to discuss experiences and best practices in developing a security mindset? 9 Github basic writing and formatting syntax Create sophisticated formatting for your prose and code on GitHub with simple syntax. Headings To create a heading, add one to six # symbols before your heading text. The number of # you use will determine the size of the heading. # The largest heading ## The second largest heading ###### The smallest heading Styling text You can indicate emphasis with bold, italic, or strikethrough text. Style Bold Syntax ** ** or __ __ Italic * * or _ _ Strikethrough ~~ ~~ Keyboard shortcut Example Output command/control +b **This is bold text** This is bold text command/control +i *This text is italicized* This text is italicized ~~This was mistaken text~~ This was mistaken text https://help.github.com/categories/writing-on-github/ Style Bold and italic Syntax Keyboard shortcut ** ** and _ _ Example **This text is _extremely_ important** Output This text is extremelyimportant Quoting text You can quote text with a > . In the words of Abraham Lincoln: > Pardon my French Tip: When viewing an issue or pull request, you can automatically quote text in a reply by highlighting the text, then typing r. For more information, see "Using keyboard shortcuts." Quoting code You can call out code or a command within a sentence with single backticks. The text within the backticks will not be formatted. Use `git status` to list all new or modified files that haven't yet been committed. To format code or text into its own distinct block, use triple backticks. Some basic Git commands are: ``` git status git add git commit ``` https://help.github.com/categories/writing-on-github/ For more information, see "Creating and highlighting code blocks." Links You can create an inline link by wrapping link text in brackets [ ] , and then wrapping the URL in parentheses ( ) . You can also use the keyboard shortcut command + k to create a link. This site was built using [GitHub Pages](https://pages.github.com/). Tip: GitHub automatically creates links when valid URLs are written in a comment. For more information, see "Autolinked references and URLS." Section links You can link directly to a section in a rendered file by hovering over the section heading to expose the link: Relative links You can define relative links and image paths in your rendered files to help readers navigate to other files in your repository. https://help.github.com/categories/writing-on-github/ A relative link is a link that is relative to the current file. For example, if you have a README file in root of your repository, and you have another file in docs/CONTRIBUTING.md, the relative link to CONTRIBUTING.md in your README might look like this: [Contribution guidelines for this project](docs/CONTRIBUTING.md) GitHub will automatically transform your relative link or image path based on whatever branch you're currently on, so that the link or path always works. You can use all relative link operands, such as ./ and ../ . Relative links are easier for users who clone your repository. Absolute links may not work in clones of your repository - we recommend using relative links to refer to other files within your repository. Lists You can make a list by preceding one or more lines of text with - or * . - George Washington - John Adams - Thomas Jefferson To order your list, precede each line with a number. 1. James Madison 2. James Monroe 3. John Quincy Adams You can create nested ordered and unordered combination lists by indenting lines by four spaces. 1. Make my changes 1. Fix bug 2. Improve formatting - Make the headings bigger 2. Push my commits to GitHub 3. Open a pull request * Describe my changes * Mention all the members of my team https://help.github.com/categories/writing-on-github/ * Ask for feedback Task lists To create a task list, preface list items with [ ] . To mark a task as complete, use [x] . - [x] Finish my changes - [ ] Push my commits to GitHub - [ ] Open a pull request If a task list item description begins with a parenthesis, you'll need to escape it with \ : - [ ] \(Optional) Open a followup issue For more information, see "About task lists." Mentioning users and teams You can mention a user or team on GitHub by typing @ plus their username or team name to trigger a notification and bring their attention to an issue or pull request. People will also receive a notification if you edit a comment to mention their username or team name. @github/support What do you think about these updates? When you mention a parent team, members of its child teams also receive notifications, simplifying communication with multiple groups of people. For more information, see "About teams." Typing an @ symbol will bring up a list of people or teams on a project. The list filters as you type, so once you find the name of the person or team you are looking for, you can use the https://help.github.com/categories/writing-on-github/ arrow keys to select it and hit either tab or enter to complete the name. For teams, just enter the @organization/team-name and all members of that team will get subscribed to the issue. The autocomplete results are restricted to repository collaborators and any other participants on the thread. Referencing issues and pull requests You can bring up a list of suggested Issues and Pull Requests within the repository by typing # . Type the issue or PR number or title to filter the list, then hit either tab or enter to complete the highlighted result. For more information, see "Autolinked references and URLs." Using emoji You can add emoji to your writing by typing :EMOJICODE: . @octocat :+1: This PR looks great - it's ready to merge! :shipit: Typing : will bring up a list of suggested emoji. The list will filter as you type, so once you find the emoji you're looking for, press Tab or Enter to complete the highlighted result. For a full list of available emoji and codes, check out emoji-cheat-sheet.com. Paragraphs and line breaks You can create a new paragraph by leaving a blank line between lines of text. Ignoring Markdown formatting You can tell GitHub to ignore (or escape) Markdown formatting by using \ before the Markdown character. Let's rename \*our-new-project\* to \*our-old-project\*. Creating and highlighting code blocks Share samples of code with fenced code blocks and enabling syntax highlighting. Fenced code blocks You can create fenced code blocks by placing triple backticks ``` before and after the code block. We recommend placing a blank line before and after code blocks to make the raw formatting easier to read. ``` https://help.github.com/categories/writing-on-github/ function test() { console.log("notice the blank line before this function?"); } ``` Tip: To preserve your formatting within a list, make sure to indent non-fenced code blocks by eight spaces. Syntax highlighting You can add an optional language identifier to enable syntax highlighting in your fenced code block. For example, to syntax highlight Ruby code: ```ruby require 'redcarpet' markdown = Redcarpet.new("Hello World!") puts markdown.to_html ``` https://help.github.com/categories/writing-on-github/
Purchase answer to see full attachment
User generated content is uploaded by users for the purposes of learning and should be used following Studypool's honor code & terms of service.

Explanation & Answer

P...


Anonymous
Just what I was looking for! Super helpful.

Studypool
4.7
Trustpilot
4.5
Sitejabber
4.4

Related Tags