-
Notifications
You must be signed in to change notification settings - Fork 31
Portfolio
mrseidel edited this page Aug 29, 2024
·
1 revision
This is a culminating project worth 20% out of the 30% final. For any external sources used, cite your work using IEEE format.
Create a portfolio demonstrating your understanding of the following concepts:
- Documentation for: classes, extending objects concepts, and UML class diagrams
- Recursion
- Classes and Objects
- Inheritance (or similar)
- File reading and writing
- Sorting algorithms
- Searching algorithms
Your portfolio can be created using any method of your choice. In the past, students have submitted mindmaps, presentations, and websites.
You will be answering six questions from below. You must answer the Emerging Technology and Theoretical Computer Science question. The other five are your choice, but you cannot choose two from the same category.
- Reading through the documentation that you created for your classes and extending objects work, if someone else were reading through your documentation, what ambiguities exist? Where could you have been clearer in your descriptions/parameters/return value information?
- There are a lot of different types of UML diagram out there. Another one that is used frequently is a UML Sequence Diagram example here. How might such a diagram have proven useful for the planning stages of your Data Structures program?
- What more do you have to learn about classes and objects?
- Will you ever use the concepts of inheritance/abstraction/interfacing/etc in future coding projects? Why or why not? Explain your reasoning.
- If you worked in a language that supported both interfaces and abstract classes, why might you use an interface over an abstract class?
- If you were to connect an API to your Data Structures program, which API would you choose and how would it be beneficial to your program?
- In the software industry, when might people output data to text files instead of using something like SQL/JSON/XML?
- Sitting in front of you is a real-life physical bin full of spherical candies. Each candy is one of ten colours. There is an equal amount of each colour in the bin, but there is an unknown total quantity (50, 580, 1110, etc.). If you had to follow a sorting algorithm to physically complete the sort, which sorting algorithm (other than bucket sort) would you use to sort by colour? Why? Justify your response. Here is a list of sorting algorithms to help guide your thinking.
- Given that
quick sort,merge sort, andheap sortare all O(n log n) average-case sorting algorithms, when might someone use one over another. Mention all three in your response. Justify your response.
- There is another search called
ternary search. When might you use this algorithm over binary search or linear search? If you do not think you would, why not? Justify your response. - You've lost a personal item (i.e. phone, book, etc.). Create a searching algorithm to describe how you would search for your personal item. If you had to write out the algorithm in programming terms, what would it look like? What would be the Big-Oh worse-case scenario of your algorithm. Hint:
linear search,binary search, andternary searchare not good searches for you to use.
- A problem with recursion is the stack overflowing (or maximum recursion depth being reached). How might you work around this problem while still using recursion? Justify your choice. Note: Increasing the recursion depth or using an iterative solution are invalid responses.
- Think of a new product that combines the emerging technology topic you presented and the theoretical computer science topic you chose. Name and describe one unintended ethical concern that could propagate during the manufacturing process of your product which could cause harm to an oppressed or marginalized group. Describe one possible solution to this concern.
The specific goal(s) for this Data Structures and Algorithms culminating task include:
- Work with data types and proper code maintenance techniques. 📙
- Design and apply modular programming concepts including complex data types. 📙📙
- Design, write and analyze complex algorithms and subprograms. 📙📙📙
| Goal | Success Criteria | Level |
|---|---|---|
| 📙 | I can create fully documented program code according to industry standards. | |
| 📙 | I can reflect and synthesize the use of UML diagram. | |
| 📙 | I can apply the principle of reusability in program design (i.e. in modules, methods, classes, inheritance, etc.). | |
| 📙 | I can read from, and write to, an external file (i.e. database, API, text file, binary file, etc.). | |
| 📙 | I can create a sorting algorithm to sort data. | |
| 📙 | I can compare the efficiency of sorting algorithms, using run times and computational complexity analysis. | |
| 📙 | I can create a search algorithm to find data. | |
| 📙 | I can compare the efficiency of a search algorithm using run times and computational complexity analysis. | |
| 📙 | I can design a simple and efficient recursive algorithm. | |
| 📙 | I can identify common pitfalls in recursive functions. | |
| 📗 | I can comprehensively explain a possible emerging technology. | |
| 📗 | I can explain a possible theoretical computer science connection to a possible emerging technology. |