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
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.
Code Style Guide:
Standards for program structure and variable naming conventions.
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)
Macquarie Tube: A video-sharing platform for students.
Macquarie Graham: A social networking application akin to Instagram.
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.