Landing : Athabascau University

Daniel's Personal notebook: Revision

Last updated July 25, 2024 - 8:31pm by Daniel Echem

Assignment 1
Post 1: Learning Java Basics through Practical Implementation
Introduction:
In Assignment 1, I embarked on my journey of learning Java programming by diving into
fundamental concepts through practical exercises. This assignment was essential in
helping me understand the core building blocks of the Java language. By working on
tasks such as creating a multiplication table and a prime number finder, I was able to
apply theoretical knowledge in a hands-on manner. This foundational assignment set
the stage for more complex programming challenges and solidified my understanding of
Java syntax and basic operations.
Facts Learned:
● Loops: Learned to use for and while loops to iterate over a range of values.
● Conditionals: Gained understanding of if-else statements to make decisions
in code.
● Basic I/O: Implemented basic input and output operations using Scanner and
System.out.
● Variable Declaration: Understood how to declare and initialize variables in Java.
● Basic Arithmetic Operations: Learned to perform arithmetic operations such as
addition, subtraction, multiplication, and division.
Conclusion:
These foundational skills are crucial for any programmer, as they form the basis for
writing efficient and functional code. By mastering loops, conditionals, and basic I/O
operations, I am now better equipped to tackle more advanced programming
challenges. This assignment has provided a solid groundwork, making me confident in
my ability to expand my Java knowledge and tackle more sophisticated tasks in the
future.
References:
1. Java Loops and Conditionals Tutorial on YouTube:
https://www.youtube.com/watch?v=Ua3AJ6fD3Zg
2. Java Documentation on Control Flow Statements on Oracle:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html
Post 2: Practical Application with Temperature Conversion
Introduction:
Creating the TemperatureConverter program in Assignment 1 was an excellent exercise
in applying Java's basic programming constructs to a real-world problem. This
assignment involved reading user inputs, performing arithmetic operations, and
displaying the results. The practical nature of this task helped me understand how to
write methods, handle user inputs, and manage data conversions. It was a vital step in
translating theoretical knowledge into practical skills.
Facts Learned:
● Method Implementation: Created methods to perform specific tasks like
temperature conversion.
● User Input Handling: Used Scanner to read user input and handle it
appropriately.
● Error Handling: Implemented basic error handling to manage invalid inputs.
● Data Type Conversion: Understood how to convert between different data
types.
● Output Formatting: Learned to format output for better readability and user
experience.
Conclusion:
This task not only reinforced my understanding of basic Java concepts but also
highlighted the importance of user-friendly design and error handling in software
development. By working through the challenges of input handling and data conversion,
I gained practical experience that will be invaluable in future programming projects. The
skills learned in this assignment are fundamental to building robust and user-centric
applications.
References:
1. Java Input and Output Basics on GeeksforGeeks:
https://www.geeksforgeeks.org/basic-input-output-java/
2. Java Scanner Class on W3Schools:
https://www.w3schools.com/java/java_user_input.asp
Assignment 2
Post 3: Deep Dive into Object-Oriented Programming
Introduction:
Assignment 2 marked a significant milestone in my learning journey as I delved deeper
into object-oriented programming (OOP). This assignment required me to create and
manipulate classes, which are the cornerstone of OOP. By developing classes such as
Animal and Book, I explored key OOP principles like encapsulation, inheritance, and
polymorphism. This deeper understanding of OOP concepts is critical for writing
well-structured, maintainable, and scalable code.
Facts Learned:
● Encapsulation: Understood how to protect data using private fields and public
methods.
● Inheritance: Created class hierarchies to demonstrate inheritance.
● Polymorphism: Used polymorphic behavior to call methods on objects of
different types.
● Constructors: Learned to create and use constructors for initializing objects.
● Method Overriding: Understood how to override methods to provide specific
implementations in subclasses.
Conclusion:
Mastering OOP is crucial for developing scalable and maintainable software. These
concepts form the backbone of modern programming, allowing for more structured and
modular code. This assignment has provided me with the tools to think in terms of
objects and their interactions, which is essential for tackling complex software projects. I
feel more confident in my ability to design and implement OOP-based applications.
References:
1. Java: The Complete Reference by Herbert Schildt:
https://www.amazon.com/Java-Complete-Reference-Herbert-Schildt/dp/1260440
230
2. Java Object-Oriented Programming on YouTube:
https://www.youtube.com/watch?v=5kSS4Y2aNI8
Post 4: Simulating Real-World Systems with Elevator Program
Introduction:
Implementing the Elevator and ElevatorMain classes in Assignment 2 provided a
practical application of OOP principles in a real-world scenario. This task required
careful planning and design to simulate an elevator system, highlighting the importance
of understanding class design, object interaction, and state management. It was an
excellent exercise in applying theoretical knowledge to build a functional software
model.
Facts Learned:
● Class Design: Designed classes to simulate a real-world system.
● Object Interaction: Implemented methods that allow objects to interact with
each other.
● Testing: Learned the importance of creating test cases to ensure code
functionality.
● State Management: Understood how to manage the state of objects in a
dynamic system.
● Event Handling: Implemented event handling to respond to user inputs and
system changes.
Conclusion:
Simulating real-world systems is an excellent way to understand the complexities of
software development. This project taught me the importance of robust design and
thorough testing. It also demonstrated how software can model and manage dynamic
systems, which is a critical skill in many applications. I now have a deeper appreciation
for the intricacies of software design and development.
References:
1. Java Object-Oriented Programming on YouTube:
https://www.youtube.com/watch?v=5kSS4Y2aNI8
2. Elevator System Design on GeeksforGeeks:
https://www.geeksforgeeks.org/design-elevator-system/
Assignment 3
Post 5: Mastering Array Operations
Introduction:
In Assignment 3, I worked on the ArrayOperations program, which involved various
array operations. Arrays are fundamental data structures in programming, and this
assignment was instrumental in deepening my understanding of how to manipulate and
manage data in arrays. It also introduced me to algorithmic thinking, emphasizing the
importance of efficiency in sorting and searching operations.
Facts Learned:
● Array Manipulation: Practiced searching, sorting, and manipulating data in
arrays.
● Algorithm Efficiency: Understood the importance of efficient algorithms for
performance.
● Data Storage: Stored and retrieved data using arrays.
● Multidimensional Arrays: Learned to work with multidimensional arrays for
complex data structures.
● ArrayList Usage: Explored the use of ArrayLists for dynamic data management.
Conclusion:
Mastering arrays is essential for handling large data sets efficiently. This assignment
highlighted the importance of algorithmic thinking and efficient data manipulation. The
skills gained here are crucial for any programmer, as arrays and their management are
ubiquitous in software development. This experience has strengthened my ability to
write efficient and effective code.
References:
1. Java Tutorials on Arrays on Oracle:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
2. Array Operations in Java on JavaTpoint: https://www.javatpoint.com/array-in-java
Post 6: Managing Collections with Bookshelf Program
Introduction:
The Bookshelf program in Assignment 3 required managing a collection of books. This
task reinforced my skills in array management and file operations. By reading book
details from a file, storing them in an array, and performing various operations, I gained
practical experience in handling data collections and file I/O operations. This
assignment was an excellent way to understand how to work with persistent data.
Facts Learned:
● File I/O: Learned to read from and write to files.
● Array Management: Managed collections of objects stored in arrays.
● Data Validation: Implemented validation checks for data consistency.
● Sorting Algorithms: Applied sorting algorithms to organize data.
● Searching Algorithms: Implemented searching algorithms to retrieve data
efficiently.
Conclusion:
Handling collections and file I/O is crucial for many real-world applications. This
assignment provided practical experience in managing data efficiently and ensuring
data integrity. The skills learned here are vital for developing applications that require
data storage and retrieval. I feel more confident in my ability to handle data-intensive
tasks in Java.
References:
1. Java Programming: Arrays and ArrayLists on YouTube:
https://www.youtube.com/watch?v=T6_H1NMgf5M
2. File Handling in Java on GeeksforGeeks:
https://www.geeksforgeeks.org/file-handling-in-java-using-filewriter-and-filereader
/
Assignment 4
Post 7: Creating an Immersive Adventure Game
Introduction:
Assignment 4 involved developing a text-based adventure game. This project was a
culmination of all the concepts learned throughout the course. It required integrating
multiple programming concepts such as class hierarchies, user input handling, and
command processing. This assignment was particularly exciting as it allowed me to
apply my programming skills to create an engaging and interactive game.
Facts Learned:
● Complex Program Structure: Designed a comprehensive text-based game.
● Class Hierarchies: Utilized class hierarchies to manage game components.
● Iterative Testing: Understood the importance of iterative development and
testing.
● User Experience Design: Focused on creating an engaging and interactive user
experience.
● Storytelling through Code: Learned to convey a narrative through programming
logic and structure.
Conclusion:
Developing the Wonderland Adventure Game significantly enhanced my understanding
of complex program management. This project emphasized the importance of modular
design and iterative testing. By creating an immersive user experience, I learned how to
design software that is both functional and enjoyable. This assignment was a perfect
blend of creativity and technical skills.
References:
1. Text-Based Adventure Game in Java on YouTube:
https://www.youtube.com/watch?v=oFRqN3vT10Q
2. Designing a Text-Based Adventure Game on GeeksforGeeks:
https://www.geeksforgeeks.org/designing-text-based-adventure-game-java/
Post 8: Enhancing User Interaction with Command Processing
Introduction:
Handling user input and processing commands was a critical aspect of the Wonderland
Adventure Game. Implementing the Control class was key to creating a responsive user
interface. This part of the assignment was essential in learning how to handle various
user inputs and provide appropriate feedback, making the game interactive and
engaging.
Facts Learned:
● Command Parsing: Implemented a command parser to handle user inputs.
● Responsive Interface: Created a responsive interface to interact with users.
● Flexibility in Design: Designed the game to handle a wide range of commands
and inputs.
● Error Handling: Implemented error handling to manage invalid commands.
● User Feedback: Learned to provide meaningful feedback to users based on their
inputs.
Conclusion:
This experience taught me how to design and implement interactive applications.
Handling user input effectively is crucial for creating user-friendly software. By
developing a flexible command processing system, I gained valuable insights into
designing robust and responsive interfaces. This skill is fundamental for any interactive
application development.
References:
1. Java Scanner Class on W3Schools:
https://www.w3schools.com/java/java_user_input.asp
2. Java User Input on JavaTpoint:
https://www.javatpoint.com/how-to-take-input-in-java
Overall Learning Experiences
Post 9: Integrating Java Concepts through Practical Projects
Introduction:
Throughout the course, integrating various Java concepts through practical projects was
immensely beneficial. Each assignment built on the previous ones, reinforcing my
understanding and skills. These projects helped me apply theoretical knowledge to
real-world scenarios, making the learning process more engaging and effective.
Facts Learned:
● Integration of Concepts: Integrated various Java concepts through practical
assignments.
● Real-World Application: Applied theoretical knowledge to real-world scenarios.
● Project Management: Managed and executed multiple projects effectively.
● Problem-Solving Skills: Enhanced problem-solving skills by tackling diverse
programming challenges.
● Attention to Detail: Learned the importance of attention to detail in software
development.
Conclusion:
These projects helped me see the real-world applicability of the concepts I was learning,
which deepened my understanding and motivation. Practical projects are essential for
solidifying programming knowledge. This course has provided me with a comprehensive
understanding of Java and its applications, preparing me for future challenges in
software development.
References:
1. Effective Java by Joshua Bloch:
https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997
2. Practical Java Programming on Coursera:
https://www.coursera.org/specializations/java-programming
Post 10: Reflecting on the Journey and Future Directions
Introduction:
Reflecting on my journey through COMP 268, I realized the importance of a structured
approach to learning programming. The combination of theoretical lessons, practical
assignments, and comprehensive documentation helped me build a strong foundation in
Java. This course has not only equipped me with technical skills but also taught me the
value of persistence and continuous learning.
Facts Learned:
● Structured Learning: Appreciated the structured approach to learning
programming.
● Advanced Topics: Identified areas for further exploration, such as advanced
Java topics.
● Continued Learning: Recognized the importance of ongoing education and skill
development.
● Collaboration: Understood the value of collaboration and peer learning.
● Resource Utilization: Learned to effectively utilize resources and references for
self-study.
Conclusion:
Moving forward, I plan to continue exploring more advanced Java topics and projects. I
am grateful for the structured learning environment provided by the course, which has
prepared me well for future challenges in software development. The skills and
knowledge gained from this course will serve as a solid foundation for my continued
growth as a programmer.
References:
1. Coursera’s Java Programming and Software Engineering Fundamentals:
https://www.coursera.org/specializations/java-programming
2. Java Programming MOOC on MOOC.fi:
https://www.mooc.fi/courses/2013/programming-part-1/