It’s never too early to start thinking about a final project! Final projects are a completely open-ended opportunity for you to demonstrate your deepest understanding of whatever topics you’d like. Final projects are due Thursday, May 6th @ 3:30pm (two weeks after classes end).
If you’re paying attention, you’ll notice that final projects are due on the same day of your final exam AND that the times coincide. Your final exam slot time starts at 3:00pm on the same day– we’ll use the first 25 minutes to answer any last minute questions. You’ll then submit your final project if you haven’t already, take a 5 min breather, and begin your final exam.
Notes on Final Exam
The final exam has been cancelled due to an unfortunate incident of academic dishonesty.
Unlike traditional exams, the final exam can only improve (not hurt) your course grade.It’ll be cumulative, with a stronger focus on material from week 8 and forward (since the midterm covers weeks 1-7).
Demonstrating awareness or understanding without a Final Project
Since a lot of you were banking on using the final exam as an oportunity to raise your grade, I am giving students the opportunity to demonstrate awareness and understanding without doing a final project.
- Real-world
Analysis - Analyze and explain how a tool or technology uses or could use the umbrella topics you’d like to address. Your analysis can be in written or video format.
- Tutorial
- Create a tutorial that would help a new learner understand the umbrella topics you’d like to address. Your tutorial can be in written or video format.
Requirements and Grade Breakdown
- Be accurate, clear, and easy to understand
- Include citations and references
- Include resources to learn more
- Outline exactly what umbrella topics you’re covering and where
- Include a thoroughly explained code snippet or code example (in C++) demonstrating the umbrella topics you’re addressing (for sorting algos or BST analysis, no code is required, instead you should include diagrams as you walk through the analysis)
- To demonstrate an
awareness
of the topics you’re covering, you must:- Successfully meet requirements 1 through 4
- To demonstrate an
understanding
of the topics you’re covering, you must:- Successfully meet requirements 1 through 5
Analysis and Tutorial submissions are individual (no pairs or groups) and are due Thursday, May 6th @ 3:30pm.
Notes on Final Project
- You may work individually or in groups of up to 4.
- The more people in the group, the higher the expectations for the final product.
- Technically, the final project is optional
- Doing a final project is the only way to get an A (or a B if you missed other assignments)
Proposing a Final Project
While submitting a proposal is not required, it is strongly recommended as it will allow you to confirm the scope of your project, ensure you’re on track to meeting all final project requirements (outlined below), will allow you to received feedback and ideas, and will force you to start thinking about the project early rather than the week it’s due (while you’re taking and studying for finals!).
To submit a proposal, please make a post on Piazza with answers to the following questions:
- Who are you working with, if anyone (or are you looking for groupmates)?
- Brief description of your project (elevator pitch for what it is and how it works)
- What topics will you be demonstrating and how (be specific with how you will use and/or demonstrate your chosen topics)
- Milestones & Timeline (what major tasks will you accomplish by when)
Your post can be private if you’d like or public if you’re looking for potential groupmates or don’t mind sharing ideas.
Demonstrating Knowledge
Final projects are an opportunity for you to demonstrate how much you know about a topic. Below are the requirements for achieving certain knowledge levels:
For data structures and algorithms
- Understanding
- Uses appropriate data structures and/or algorithms to complete a task.
- Competence
- Uses the most appropriate data structures and/or algorithms to complete a task and can explain why said data structure or algorithm is the most appropriate (do this in the README).
- Mastery
- Uses the most appropriate data structures and/or algorithms to complete a task based on a real-world problem/context/scenario and can explain why said data structure or algorithm is the most appropriate for the task and for the given context/scenario/application (do this in the README).
For analysis
- Understanding
- Can correctly determine and briefly explain the time complexity of at least two functions.
- Competence
- Can correctly determine and explain the time complexity of at least three functions.
- Mastery
- Can correctly determine and thoroughly explain or prove the time complexity of at least three functions.
Final Project Requirements
- Language
- Must be written in standard C++.
- Scope
- Scope of project must be significantly broader than that of an assigned lab or deep dive.
- Code Compilation
- Must compile and execute without any warning or errors.
- Code Execution
- Program must execute completely without crashing.
- Modular/OOP
- Functions and classes must be used appropriately to abstract and divvy-up your code (i.e., must follow OOP principles)
- Concepts
- Should demonstrate a clear ` mastery ` of chosen topics.
- README
- Project should include a README.txt (or README.md) that answers:
- Purpose overview: What’s the purpose/use case of this project?
- Instructions for use: Describe how the user will interact with your program (is there anything the user shouldn’t do? Tell us!)
- Design overview: How did you choose to represent the aspects of your program (i.e., what data structures did you choose and why)?
- Code overview: An overview of how your program works, including how all of the pieces fit together
- Potential bugs: A description of any possible bugs or problems with your program
- Easter Eggs: A description of any extra features you chose to implement, if any
- Group: The names of all group members
- Topic Overview: What topics does your final project demonstrate
understanding
,competence
, ormastery
in and how? (See above for explanations required for each level.)