Week 8

Comp 1010 Lecture Notes: Week 8

Introduction

  • Greetings and welcome to Week 8 of Comp 1010.

  • Overview of session topics:

    • Assignment discussion.

    • An example assignment walkthrough.

    • JUnit testing introduction.

    • File Input/Output (IO) expectations for the assignment.

Classroom Management

  • Reminders about noise levels in the classroom; encourage focused attention.

macOS Update

  • Discussion on new macOS features, with emphasis on safety improvements.

  • Mention of user preferences regarding interface design: the rounded edges in macOS perceived as toy-like.

  • Personal OS preferences shared:

    • Windows for gaming (not preferred).

    • Mac for software development due to better Linux compatibility.

    • Linux for dedicated server management.

  • Insight on development challenges across different operating systems:

    • Notable issue: Windows line endings problems during deployment to Linux systems, which can lead to hidden bugs in code.

Assignment Overview

  • Interaction with students to gauge familiarity with the assignment materials.

  • Encourage questions for clarity, especially since teaching assistants (TAs) may not be fully across assignment details.

  • Instruction to avoid using AI tools inappropriately — emphasis on understanding over simple solutions.

  • Important points regarding submission:

    • Submission format must be a single zipped file due to multiple file requirements.

    • Must avoid machine-based or path-based dependencies in the project.

Key Assignment Documents
  1. Specifications Document:

    • Details on what needs to be done and how to structure the code.

    • Key requirement: Project must submit as a single zip file.

  2. Code Style Guide:

    • Standards for program structure and variable naming conventions.

  3. Example Program:

    • Used throughout the lecture to illustrate practical application of concepts.

Important Submission Details
  • Must ensure project is free of hard-coded file paths; use relative paths instead.

  • All projects must function without external dependencies, except for JUnit mentioned later.

  • Code should be runnable in lab computers without needing modifications.

JUnit Testing Introduction
  • The necessity of unit testing in assignments:

    • Introducing JUnit as an essential framework for structuring automated tests.

    • The importance of understanding the fundamentals of a project to avoid reliance on AI-generated code.

  • Warning against over-reliance on AI:

    • Understanding of the material is crucial for future programming challenges.

Code Functionality and Correctness
  • Program requirements discussed:

    • Must demonstrate functionality and include classes for effective operation.

    • ArrayLists of user-defined classes required for object-oriented implementation.

    • Recursive data structures will be discussed in upcoming lectures but will need to be included in assignments.

Marking Criteria
  • Projects assessed on their functionality and presence of a client/driver class.

  • Key functionalities:

    • Ability to manipulate objects and manage data efficiently.

    • Inclusion of various data structures as outlined.

  • Sample project ideas offered but students reminded not to replicate them exactly.

Project Ideas (Not for Direct Use)
  1. Macquarie Tube: A video-sharing platform for students.

  2. Macquarie Graham: A social networking application akin to Instagram.

  3. Game Example: Not discussed but leads to complexity.

Timeline and Feedback
  • Assignment submission timeline is outlined with a checkpoint submission for feedback.

  • Importance of checking submissions on the designated lab computers to avoid issues before final submission.

  • Late submission process elaborated upon, including penalties.

File I/O Discussions
  • Detailed discussion on reading from and writing to files:

    • Understanding how to manipulate file paths effectively.

    • Reading CSV files as a method to load data into programs.

    • Writing data back to files, including handling existing files.

  • Emphasized the use of relative paths to maintain project portability across systems.

JUnit Testing Walkthrough

  • Implementing tests using JUnit, including constructing test cases and validating functionality using assert statements.

  • Importance of diverse test cases for thorough validation.

  • Challenges in ensuring comprehensive test coverage shared with examples to illustrate common pitfalls.

Code Quality Standards

  • Importance of adhering to code style guides.

  • Discussion on documentation requirements for assignments, including what the application solves and how it is structured.

Conclusion

  • Recap of the primary lessons from the lecture, including the significance of JUnit testing and proper file handling.

  • Students encouraged to prepare for upcoming lectures where recursive data structures will be highlighted.

  • Final encouragement to engage actively with project materials and guidelines.