Day 14: Culminating Project Introduction and Planning Phase Notes

Course Logistics and Announcements (July 23)

  • Date: The transcript corresponds to Day 14 of the course, July 23.

  • Grading Update: Quizzes and assignments from the previous session have been graded.

  • Communication Policy: The instructor is away for an appointment; responses to emails may be delayed.

    • Deadline Extensions: Extensions are generally granted if an email is sent prior to the due date expressing inability to complete the work. Issues arise when students miss deadlines without prior communication.

  • Attendance and Engagement: Watching video recordings in full is mandatory for those who do not attend live classes. Missing specific details or verbal instructions often negatively impacts assignment marks. The instructor notes that attending live is the most effective way to ensure engagement and high performance.

Immediate Deadlines: Factorial, Fibonacci, and Prime Programs

  • Due Date: Today (July 23).

  • Recursive Requirement: Although the curriculum content may not explicitly state it, students are expected to use recursion for the Factorial, Fibonacci, and Prime number programs. This is used as a metric to ensure students have watched the instructional recordings.

  • Input Validation: Programs must incorporate try-catch blocks to handle user input validation. This ensures the program has a low likelihood of crashing if a user inputs unexpected data.

The Culminating Project Overview

The Culminating Project represents a significant portion of the final grade and is the final assessment of the student's mastery over the course material.

  • Weighting: The project is worth 30%30\% of the entire course mark.

  • Assessment Rigor: Marking will be more difficult than standard assignments. There will be no opportunity to resubmit or improve the project once it has been marked.

  • Scope: The project must be significantly larger and more complex than any previous assignment in the course. If a project seems too simple, it likely is.

  • Timeline: While typically a month-long process in standard settings, this accelerated version requires students to complete it in approximately one week.

    • Part 1 (Planning): Due Wednesday, July 24 at 11:30PM11:30\,\text{PM}.

    • Part 2 (Final Programming): Due Tuesday, July 30 at 11:30PM11:30\,\text{PM}.

Technical Requirements for the Culminating Project

  • File Input/Output (I/O): Mandatory for full marks. The program must store data between runs using text files.

    • Examples: Storing user login credentials (usernames/passwords), high score leaderboards, or user-generated data like notes or grocery lists.

  • User Interface (UI): Must be a console-based application (no Graphical User Interface/GUI). However, the interface should be "clean" and "polished."

    • Requirements: Use of console clearing commands, colored text for readability, and strategic delays (pause effects) to enhance the user experience.

    • Design: Avoid "walls of text." Functional success is only part of the mark; professional presentation is also evaluated.

  • Recursive Methods: While not explicitly mandated for every feature, students are expected to include advanced concepts learned, such as recursion.

Planning Phase Deliverables (Due July 24)

Students must submit a single PDF document containing the following planning materials:

  • Project Description: A brief paragraph (or up to one page) outlining the project's purpose. It may include images of software being emulated or links to similar tools. It should explicitly mention features that will not be included (e.g., "No multiplayer due to hosting constraints").

  • Gantt Chart: A schedule of tasks and deadlines spanning from July 23 to July 28/30. This can be created using a provided Excel template or Google Sheets.

  • IPO Tables (Input Processing Output): In a change from standard materials, IPO tables replace the requirement for Structure Charts.

    • Students should create IPO tables for complex subroutines/methods, particularly those involving calculations.

  • Flowcharts: Use the Mermaid flowchart language.

    • Formatting: Submit both the Mermaid code and the generated image.

    • Modularity: Separate the project into multiple flowcharts (e.g., one for each major method) rather than one massive, unreadable chart. An overall chart should represent the main menu.

  • Testing Document: A template used to outline how the program will be stress-tested.

    • Screen Captures: For the final submission, the "generated output" column must contain screenshots of the console, not just typed text.

    • Self-Reporting: Identifying a bug you cannot fix in the testing document is viewed as a sign of in-depth knowledge and will not necessarily result in a mark deduction.

  • Questionnaire: A set of 5-10 questions designed for a peer or user to review the program (e.g., "Rate ease of use 1-5," "Identify bugs found," "Suggestions for improvement").

Coding Logic: File and Console Interactions

To manage a large-scale project, students should categorize methods into separate Java files for organization.

FileInteractions.java Utility

This file should handle all data persistence. The instructor suggests making these methods universal rather than hard-coding file names.

  • write_to_file(String fileName, String data): Appends data to a specified file.

  • clear_file(String fileName): Wipes the contents of a specified file.

  • read_from_file(String fileName): Returns an array of strings, where each element is a line from the text file.

  • Data Parsing: If a file stores usernames and passwords on one line (e.g., "user1 pass1\text{user1 } \text{pass1} "), use str.split(" ") to separate and validation the information based on the space or comma delimiter.

ConsoleInteractions.java Utility
  • clearConsole(): Clears the terminal screen for a clean UI.

  • delay(int seconds): Uses a timer to pause program execution. Note: If using milliseconds, the conversion is seconds×1000\text{seconds} \times 1000.

Guidance on AI Usage

  • Permitted Uses: Students may use AI (e.g., Gemini) to help generate dummy data (lists of names/passwords), format Mermaid flowchart code, or brainstorm method structures.

  • Academic Integrity: AI should be used to eliminate "menial tasks" and enhance high-level planning. However, students must be able to explain and defend every line of code. Errors generated by AI are considered student errors if not caught during review.

  • Code Style Check: Code generated by AI often looks different than the specific methods taught in class. Students should prioritize the coding patterns taught by the instructor (e.g., specific console clearing methods) to prove they are writing their own work.