Skip to content

hossei-cyber/Java-Self-Study

Repository files navigation

Welcome to the Learning Outcomes Evaluation

Dear students,

Welcome to this Learning Outcomes Evaluation session. Over the next two hours, we will be assessing your understanding and mastery of the learning outcomes for this semester. This evaluation is an important opportunity for you to showcase your knowledge and skills.

Please take this evaluation seriously and demonstrate your best work from the last two weeks by using your personal git account as proof. Remember to answer each question thoroughly and provide clear explanations where necessary.

Best regards, Ghada Hassan and Kay Berkling

Ethics Section regarding generative and other forms of AI

The student acknowledges and agrees that the use of AI is strictly prohibited during this evaluation. By submitting this report, the student affirms that they have completed the assessment independently and without the assistance of any AI technologies. This agreement serves to ensure the integrity and authenticity of the student's work, as well as their understanding of the learning outcomes.

Checklist before handing in your work

  • Review the assignment requirements to ensure you have completed all the necessary tasks.
  • Pay careful attention to the requested links that must come from your project.
  • Double-check your links and make sure that links lead to where you intended. Each answer should have links to work done by you in your own git repository
  • Make sure you have at least 10 references to your project code (This is important evidence to prove that your project is substantial enough to support the learning outcome of object oriented design and coding within a larger piece of code.)
  • Include comments to explain your referenced code and why it supports the learning outcome
  • Proofread any accompanying documentation or comments for grammar and clarity.
  • Commit and push this markup file to your personal git repository and hand in the link and a hard-copy via email at the end of the exam.

Remember, this checklist is not exhaustive, but it should help you ensure that your work is complete, well-structured, and meets the required standards.

Good luck with your evaluation!

Learning Outcomes

Exam Question Total Achievable Points Points Reached During Grading
Algorithms 4
Data types 4
Complex Data Structures 4
Concepts of OOP 6
OO Design 6
Class concepts 8
Testing 6
Operator/Method Overloading 6
Templates/Generics 6
Class libraries 6
Multi-threading 6
Lambda expressions 6
Serialization 6
Database connectivity 6
Total 80

Evaluation Questions

Please answer the following questions to the best of your ability to show your understanding of the learning outcomes. Please provide examples from your project code to support your answers. Only links to your own git will count. When you explain what you did make sure to explain why you did it this way with clear reasoning relating to your own work and not generic statements that anyone could make.

Evaluation Material

Algorithms

Algorithms are manyfold and Java can be used to program these. Examples are sorting or search strategies but also mathematical calculations. Please refer to two areas in either your regular coding practice or within your project, where you have coded an algorithm. Do not make reference to code written for other classes, like theoretical informatics.

your text

My project uses algorithms to parse mathematical expressions and calculate results, besides that I also have worked on some Algorithms which I learned in my self study sessions, I'll link them both.

https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/Alogrithms

Total Achievable Points Points Reached During Grading
2
2

Data types

Please explain the concept of data types and provide examples of different data types in Java. Typical data types in java are int, double, float, char, boolean, long, short, byte, String, and arrays. Please provide one example for each of the three following data types in your code. One of these links must be to your project.

  • Array
  • Strings
  • boolean

Regarding the link to your project, explain the context in which you have used this data type being specific to your project.

your text

I use various data types like double for numerical calculations, String for handling text input, and LinkedList for storing past operations, ensuring that data is handled appropriately and efficiently throughout the application.
Also in my self study sessions I have worked on various data types, I'll link the folderArray where I have done multiple operations on array furthermore I would say all codes have data types in it.

https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java Project link
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/LambdaExpression/funcInterWithoutLE.java
here I have used boolean in my conditions
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/folderArray
folderArray

Total Achievable Points Points Reached During Grading
1
1
2 (project link)

Complex Data Structures

Examples of complex data structures in Java are ArrayList, HashMap, HashSet, LinkedList, and TreeMap. Please provide an example of how you have used two of these complex data structures in your code and explain why you have chosen these data structures. Examples do not have to come from the project.

your text

I use LinkedList to manage a dynamic list of memory entries, allowing for operations like adding, removing, or recalling previous calculations in my project. And I have practiced with multiple types of data structures, such as ArrayList, Tree, LinkedList, Queue, Deque
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/ArrayList
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/Linkedlist
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/Tree
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/queue
https://github.com/hossei-cyber/Java-Self-Study/tree/367618519b95478c02afbcc5842d5a26988d9de5/deque

Total Achievable Points Points Reached During Grading
2
2

Concepts of OOP

Concepts of OOP are the basic building blocks of object-oriented programming, such as classes, objects, methods, and attributes. Explain HOW and WHY your project demonstrates the use of OOP by using all of the following concepts:

  • Classes/Objects
  • Methods
  • Attributes Link to the code in your project that demonstrates what you have explained above.

your text

In my project I used OOP concepts by creating classes like ScientificCalculator and MemoryStorage to encapsulate functionalities and manage the GUI and memory operations, Methods within the classes like executeOperation and add, and attributes like the field text area in the ScientificCalculator and the memory in MemoryStorage.
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java

Total Achievable Points Points Reached During Grading
2
2
2

OO Design

Please showcase two areas where you have used object orientation in your project. (How and why you use it will be the next question below.) Examples in Java of good oo design are composition, encapsulation, inheritance, polymorphism, and abstraction.

your text

In my project the main calculator GUI inherits from JFrame, it uses pre-built methods and properties from Java's Swing library for managing window features. Polymorphism is used in event handling where actions are performed depending on the button pressed, all under a single interface method. I have MemoryStorage class to manage all operations related to memory storage. This class encapsulates the memory-related functionalities like adding a new result to memory, fetching the last saved result, and clearing the memory. Abstraction is not used directly in my project, but I've practiced in my learning sessions.
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/Abstraction.java
here I have worked with an abstract class Shape which has abstract methods

Total Achievable Points Points Reached During Grading
3
3

Advanced Class Concepts

Advanced class concepts include constructors, abstract classes, interfaces, access modifiers, static methods, and variables. Please provide an example of how you have used two of these class concepts in your project code and explain why you have chosen these class concepts and how they work within your code.

your text

In the project the ScientificCalculator class has a constructor that initializes the user interface of the calculator. In the MemoryStorage class, I used private access modifiers for the LinkedList memory attribute to restrict access to this list directly from outside the class. The use of abstract methods and classes can be just shown from my learning sessions.
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java My project
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/staticMember.java here I have static member playerCount which is used by all the objects of the class
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/Abstraction.java here i have used abstract methods area() and toString();

Total Achievable Points Points Reached During Grading
4
4

Testing

Java code is tested by using JUnit. Please explain how you have used JUnit in your project and provide a link to the code where you have used JUnit. Links do not have to refer to your project and can refer to your practice code. If you tested without JUnit, please explain how you tested your code. Be detailed about what you are testing and how you argue for your test cases. Test cases usually cover the following areas:

  • boundary cases
  • normal cases
  • error cases / catching exceptions

your text

In the project I tested boundary cases by entering the maximum and minimum double values (Double.MAX_VALUE, Double.MIN_VALUE) I tested error cases by entering invalid inputs,like not numbers. I also have done exceptionhandling in the project, like NumberFormatException thrown by executeOperation beside that I have handled the topic Exception handling in my learning sessions
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Advance/ExceptDemo.java here I perform multiple arithmetic operations and throwing ArithmeticException :)
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java and link to my project

Total Achievable Points Points Reached During Grading
6

Operator/Method Overloading

An example of operator overloading is the "+" operator that can be used to add two numbers or concatenate two strings. An example of method overloading is having two methods with the same name but different parameters. Please provide an example of how you have used operator or method overloading in your code and explain why you have chosen this method of coding. The link does not have to be to your project and can be to your practice code.

your text

I have done constructor overloading :)
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/twoConstructors.java
and here the code of method overloading where The Sum class has three overloaded versions of the sum method.
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/Sum.java besides that i have practiced method overriding as well
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/OOP/methodOverride.java each class has the toString() method by calling super.toString()

Total Achievable Points Points Reached During Grading
6

Generics

Generics in java are used to create classes, interfaces, and methods that operate on objects of specified types. Please provide an example of how you have used generics in your code and explain why you have chosen to use generics. The link does not have to be to your project and can be to your practice code.

your text

In my Project Generics are used in the MemoryStorage class, to be used with any data type, though currently used for storing Double values.
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java my Project https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Collectionframework/generic.java
here I have declared a type parameter generic, it just tells the compiler that this method can have any data type, so it should be ready for it.
public static int count(T[] array, T item) this would allow me to count string elements too.

Total Achievable Points Points Reached During Grading
6

Class Libraries

Examples of class libraries in java are the Java Standard Library, JavaFX, Apache Commons, JUnit, Log4j, Jackson, Guava, Joda-Time, Hibernate, Spring, Maven, and many more. Please provide an example of how you have used a class library in your project code and explain why you have chosen to use this class library.

your text

My project uses Java's Swing library for the GUI and integrates the exp4j library for mathematical operations, it shows how external libraries can be used to extend the functionality of a program
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java

Total Achievable Points Points Reached During Grading
6

Multi-threading

multi-threading is the ability of a CPU to execute multiple processes or threads concurrently. Please explain the concept of multi-threading and provide an example of how you have used multi-threading in your code. The link does not have to be to your project and can be to your practice code.

your text
My project uses Multithreading to perform calculations in the background, preventing the GUI from becoming slow.
https://github.com/hossei-cyber/Java-Self-Study/blob/a4ca67d79937e79326dad329da2c9de7918ce53e/src/main/java/org/calc/ScientificCalculator.java
and i have practiced this also in my sessions
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Advance/Multithread.java
here the MultithreadingDemo class extends the Thread class, it creates instances of MultithreadingDemo to work as separate threads.
In the main method, eight separate threads, are created and started.

Total Achievable Points Points Reached During Grading
6

Lambda Expressions

An example of a lambda expression is the following code:

List<String> list = new ArrayList<>();
list.forEach((String s) -> System.out.println(s));

Please explain the concept of lambda expressions and provide an example of how you have used lambda expressions in your code. The link does not have to be to your project and can be to your practice code.

your text
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/LambdaExpression/MethodReference.java
Lambda expressions are a clear and short way to implement interfaces with a single abstract method, they refer to functional interfaces
it makes it easy to read, in my code it replaces a loop to iterate through the list and directly uses the forEach method, handling iteration.

Total Achievable Points Points Reached During Grading
6

Serialization

Serialization is the process of converting an object into a stream of bytes to store the object or transmit it to memory, a database, or a file. Please explain why you would use serialization and provide an example of how you have used serialization in your code.

your text
I have done streams :) converting objects into map.
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Stream/Student.java
but not serialization.

Total Achievable Points Points Reached During Grading
6

Database Connectivity

Web applications use databases to store data. Please explain how you have connected to a database in your project and provide an example of how you have used database connectivity in your code. The link does not have to be to your project and can be to your practice code. Do not use code from other classes, like database programming, Web Engineering, or theoretical informatics. This topic appeared in your learning agreement as the last point in the table under advanced topics.

your text
I haven't handled this topic in my learning sessions and even in my project, but I have handled other advance topics, like file handling exception handling
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Advance/FileHandling.java here I write to a file, copy and paste between files, I delete files and create them. checking thier properties, and exception handling as well.
https://github.com/hossei-cyber/Java-Self-Study/blob/367618519b95478c02afbcc5842d5a26988d9de5/Advance/methodCalling.java
In this code I do method calling.

Total Achievable Points Points Reached During Grading
6

About

This repository serves for my self study sessions for programming subject.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages