Projects 3003

Project Description

  • Create an artifact for your portfolio

  • 9-13.5 hours total, approximately 1-1.5 hours per week for weeks 7-15

Requirements

  • LO1. Design and implement a class.

    • LO4. Include a comment in which you compare and contrast the procedural/functional approach and the object-oriented approach

    • LO1a. At least one class in a header file with non-trivial methods implemented in a cpp file

    • LO1b. Overload a constructor

    • LO1c. Utilize an initialization list

  • LO2. Use subclassing to design simple class hierarchies that allow code to be reused for distinct subclasses.

    • LO2a. Include comments describing the visibility inheritance model

  • LO3. Correctly reason about control flow in a program using dynamic dispatch.

  • LO5. Explain the relationship between object-oriented inheritance (code-sharing and overriding) and subtyping (the idea of a subtype being usable in a context that expects the supertype).

  • LO6. Use object-oriented encapsulation mechanisms such as interfaces and private members.

  • LO7. Define and use iterators and other operations on aggregates, including operations that take functions as arguments.

  • Follow best practices for style and readability

  • Follow best practices for documentation

    • Include class diagrams for all classes in Readme

Project Options

  1. Certifcation Exam Preparation Program

  2. Cracking the Coding Interview programming problem solution

  3. QT C++ GUI Tutorial For Beginners $

  4. A mobile app

  5. A game

  6. A Blazor app

Project Planning

  • In a GitHub repository (new or existing)...

  • Create a project

    • Name: something like Integration Project

    • Write a description: something like Integrating OOP skills from Programming II

    • Template: Basic kanban

    • Do each (or at least most) of the to do list items and and then archive it

  • Go to Issues and click Milestones

    • Create three Milestones (1, 2, Final)

      • Align the due date with Canvas

  • Click Issues

    • Create an issue for each bullet point on the project instructions page and associate each with a milestone

      • The first two issues with milestone 1

      • The next four issues with milestone 2

      • The remaining issues with the final milestone

  • Go back to Projects

    • Click on the project you made earlier

    • Click on the + at the top right

    • Drag each of the issues to the To do column

    • Drag the first issue to the In progress column

Final

Specifications

  • Implementation of all requirements listed above.

  • Include a comment containing the requirement id (like LO1) with your code that demonstrates it. When grading, I will search for the requirement id. If you do not have the requirement ids in your comments you will not get points for this row on the rubric.

Quality and Security

  • Provide evidence of consistently following best practices for the chosen language(s)

  • For C++ in Visual Studio

  • For any other language and IDE, justify with research and citations what you did and why.

Style / Structure

  • Provide evidence of consistently following best practices for the chosen language(s)

  • Use the auto formatter (Ctrl+k+d in Visual Studio)

  • For C++ in Visual Studio

    • Enable the C++ Core Check guidelines in Code Analysis

      • Within "Choose multiple rule sets" check the boxes for "C++ Core Check Rules" and the Microsoft "Recommended" rules.

    • Set Visual Studio to use Clang-Tidy

      • For "Checks to Enable or Disable", add cppcoreguidelines*, google*, modernize*, readability*

    • Analyze >> Code Analysis on project should show no errors or warnings. Do not suppress anything.

    • Screenshot the Error List for your "Entire Solution"

  • For any other language and IDE, justify with research and citations what you did and why.

Comments / Documentation

  • Comments in code that describe non-obvious code.

  • Cite any resources used such as web sites, classmates, etc.

  • For C++, use Doxygen comments for all files, functions, and data structures and create external documentation

  • For Java, use JavaDocs

  • For C#, use XML tags

Assignment Specifications

  • A README.md file on your repository root page containing information about the program that follows the README-TEMPLATE.

    • If your repository doesn't already have one, there is a button on the bottom of the page on GitHub to add one. After adding a readme on GitHub you should Pull.

    • You can use StackEdit and reference Mastering Markdown

    • Include the screenshot of your Error List after doing Code Analysis

  • A link to your project in GitHub.

  • A pdf of code you wrote and a zip file of the entire project uploaded to Canvas.

Human User Factors