Study Notes on Programming Assignment for Cab Company
Overview of Programming Assignment Structure
The upcoming programming assignment poses a major task aimed at developing practical skills in programming, particularly for a cab company. This assignment involves producing software that manages accounts for the cab company's fleet, which includes cabs and buses.
Assignment Complexity and Structure
- Initially deemed complex, the assignment's difficulty was reduced to ensure manageability for all students, as long as they attend lectures and complete weekly homework assignments.
- Students are urged to start working on the assignment during the current week, highlighting the importance of progressive completion.
Submission and Assessment Criteria
- Weekly homework will be monitored by class supervisors, and consistent weekly submission will lead to full marks for the assignment section.
- There will be a supplementary grade component dependent on the completion of the weekly assignments.
Programming Task Details
Assignment Requirements
- Develop a program for a cab company to generate simple financial reports for its fleet.
- Required Output: A text file detailing earnings from each vehicle with a consolidated total.
- Outputs should be neatly formatted and easily readable.
- Example: The report will aggregate takings from all vehicles, highlighting how much each driver earned.
- The students will utilize Java coding practices, focusing on inheritance, which will be taught in the subsequent classes leading towards completion of the assignment.
Implementation Phases
Skeleton Code Utilization
- The assignment will be initiated with pre-written skeleton code provided to students; they must download and run this code as the foundational starting point for their development work.
- The skeleton code is simplified to just three classes compared to the initial plan of ten classes and a database, thereby reducing cognitive load and making it easier for students to navigate.
Timeline for Completion
- Week Five: Download, run, and present the skeleton code.
- Week Six: Complete parts one and two of the assignment.
- Week Seven: Complete part three, and if possible, begin part four.
- Week Eight: Finalize parts four and five, with encouragement to finish all tasks before the end of this week, since no classes will occur in week nine.
- Deadline: Complete all work by March 13.
Operational Guidelines for Assignments
- Consistent attendance and engagement can mitigate issues if students ever find themselves lagging.
- Understanding each segment in isolation will facilitate progress and assist in mastering the programming concepts in time.
- Emphasis on avoiding last-minute completion of work to align with best practices for project delivery in a professional setting.
Core Programming Concepts
Importance of Inheritance
- Inheritance in programming allows for the derivation of new classes (e.g., ‘Cab’ and ‘Bus’) from existing classes with shared attributes. This is a critical aspect of the assignment and will be explored further in the coming lectures.
- Each vehicle type shares an ID and a list of bookings but has distinct properties:
- Cabs: Contain a specific fare and a driver name.
- Buses: Charge per stop, taking into account the journey length.
Agile Development Framework
- Students will mimic an agile team environment, completing the assignment in sprints (typically about one week in length) to manage workloads effectively.
- Regular feedback loops and incremental development will ensure that at the end of every sprint, something functional is delivered.
- Key Terms:
- Sprint: A defined time period where specific goals are to be accomplished.
- Their class supervisor acts as the project manager, guiding students through the stages of the assignment.
Coding and Configuration
Running and Configuring Code in IntelliJ
- Instructions are given to ensure that students configure their Java projects correctly:
- File Structure: Proper compartmentalization of source files and libraries for compilation.
- Run Configuration: Necessary steps to define input parameters for running Java programs. This includes modifying the main method header to accept file names as strings from command line arguments.
- Students must know how to manage their files using cloud storage (e.g., OneDrive) to prevent data loss and facilitate access from varied devices.
Common Challenges in Implementation
- Windows users may face certain quirks with file extraction which can lead to confusion in opening the correct project directories. Students should be cautious about file structure when downloading their projects.
- Information regarding the working directory of programs must be understood as it affects file input and output operations.
Best Practices for AI Utilization in Programming
- Students are encouraged to use AI responsibly, mainly for clarification and minor assistance, rather than direct code generation.
- Although AI can be a valuable tool for understanding concepts, it should not replace learning experiences.
- Proper documentation or comments in code should be maintained if AI is used for assistance, ensuring ethical standards in academic work are upheld.
Reading the Assignment Guidelines
- Emphasizing the importance of thoroughly reading the assignment before attempting it to fully understand requirements and constraints.
- A systematic review of the assignment even after completion is necessary to ensure all components are adequately addressed.
Final Remarks
- Emphasis on precision in programming, as overlooking small details may lead to substantial grading penalties.
- Continuous opportunities for students to seek help from teachers and peers will be available throughout the course, underscoring a supportive learning environment aimed at enhancing programming skills.