1st week: Task: Choose a team with topic is the exercise.
You need to chose a software solution, you need make it and present.
You need to submit it before February and every week prof. needs update
It should be multi node implementation
No exam this time only project that mean
Your installation guide should provide detailed steps how to deploy,
configure and use the service
[Latex diye koire fellam]
IOT er tao kore fellam tate duita laav hoilo
[Dui dhoroner help pawa gelo + practice]
The client-server architecture consists of 2 layers and is called two-tier model
(tier = layer)
Parental Computing is company provided the service[47 minutes in recording]
According to their areas of responsibility, 4 types of clients exist:
2 Thin/Zero Clients
3 Applet Clients
4 Fat Clients
— My Topic For Project: Kubernetes and Docker
– Most of the cloud/DevOps engineer needs this skill and First experience in the public cloud environment (AWS or AZURE)
– good knowledge of object-oriented languages (e.g. Java, Python, PowerShell or NET) and containerization strategies
The goal of the project:
Not so hardcore programming
If you don’t do project you will fail
We shared our topic name maybe we may change the topic name if needed.
Topic: Content Delivery Network with Kubernetes and Docker
We have 3 team members, Syed Ahmed Zaki, Daniel Von Barany, Kranthi kumar reddy Kasireddy
– We want to make a system in different server which distributes content like images, mp3, text known as content delivery networking
-We are very new to Kubernetes and Docker still researching about this
– We want to deploy in cloud maybe Minio in multi node environment or openNebula it is serverless
– It will be scalable
– Any of your suggestion Prof. ?
– My other team members and colleagues will share the details
Learned from Youtube this week about Docker and little bit Kubernetes
Notes from class lecture:
Heteregenous is better because one system and multi computer
Failover and Failback
Some multinode tutorials:
How docker works: https://aws.amazon.com/docker/
It means correctness and execution time of the results are guaranteed.
In non-Real time systems normally only the correctness of the result is guaranteed.
In other words: A real time system will also guaranty that a certain deadline is met.
From wikipedia professor also said:
Hard – missing a deadline is a total system failure.
Firm – infrequent deadline misses are tolerable, but may degrade the system’s quality of service. The usefulness of a result is zero after its deadline.
Soft – the usefulness of a result degrades after its deadline, thereby degrading the system’s quality of service.
Hard real-time systems are used when it is imperative that an event be reacted to within a strict deadline. Such strong guarantees are required of systems for which not reacting in a certain interval of time would cause great loss in some manner, especially damaging the surroundings physically or threatening human lives (although the strict definition is simply that missing the deadline constitutes failure of the system). Some examples of hard real-time systems:
A carengine control system is a hard real-time system because a delayed signal may cause engine failure or damage.
Medical systems such as heart pacemakers. Even though a pacemaker’s task is simple, because of the potential risk to human life, medical systems like these are typically required to undergo thorough testing and certification, which in turn requires hard real-time computing in order to offer provable guarantees that a failure is unlikely or impossible.
Industrial process controllers, such as a machine on an assembly line. If the machine is delayed, the item on the assembly line could pass beyond the reach of the machine (leaving the product untouched), or the machine or the product could be damaged by activating the robot at the wrong time. If the failure is detected, both cases would lead to the assembly line stopping, which slows production. If the failure is not detected, a product with a defect could make it through production, or could cause damage in later steps of production.
Hard real-time systems are typically found interacting at a low level with physical hardware, in embedded systems. Early video game systems such as the Atari 2600 and Cinematronics vector graphics had hard real-time requirements because of the nature of the graphics and timing hardware.
Softmodems replace a hardware modem with software running on a computer’s CPU. The software must run every few milliseconds to generate the next audio data to be output. If that data is late, the receiving modem will lose synchronization, causing a long interruption as synchronization is reestablished or causing the connection to be lost entirely.
Many types of printers have hard real-time requirements, such as inkjets (the ink must be deposited at the correct time as the printhead crosses the page), laser printers (the laser must be activated at the right time as the beam scans across the rotating drum), and dot matrix and various types of line printers (the impact mechanism must be activated at the right time as the print mechanism comes into alignment with the desired output). A failure in any of these would cause either missing output or misaligned output.
In the context of multitasking systems the scheduling policy is normally priority driven (pre-emptive schedulers). In some situations, these can guarantee hard real-time performance (for instance if the set of tasks and their priorities is known in advance). There are other hard real-time schedulers such as rate-monotonic which is not common in general-purpose systems, as it requires additional information in order to schedule a task: namely a bound or worst-case estimate for how long the task must execute. Specific algorithms for scheduling such hard real-time tasks exist, such as earliest deadline first, which, ignoring the overhead of context switching, is sufficient for system loads of less than 100%. New overlay scheduling systems, such as an adaptive partition scheduler assist in managing large systems with a mixture of hard real-time and non real-time applications.
Firm real-time systems are more nebulously defined, and some classifications do not include them, distinguishing only hard and soft real-time systems. Some examples of firm real-time systems:
The assembly line machine described earlier as hard real-time could instead be considered firm real-time. A missed deadline still causes an error which needs to be dealt with: there might be machinery to mark a part as bad or eject it from the assembly line, or the assembly line could be stopped so an operator can correct the problem. However, as long as these errors are infrequent, they may be tolerated.
Soft real-time systems are typically used to solve issues of concurrent access and the need to keep a number of connected systems up-to-date through changing situations. Some examples of soft real-time systems:
Software that maintains and updates the flight plans for commercial airliners. The flight plans must be kept reasonably current, but they can operate with the latency of a few seconds.
Live audio-video systems are also usually soft real-time. A frame of audio that’s played late may cause a brief audio glitch (and may cause all subsequent audio to be delayed correspondingly, causing a perception that the audio is being played slower than normal), but this may be better than the alternatives of continuing to play silence, static, a previous audio frame, or estimated data. A frame of video that’s delayed typically causes even less disruption for viewers. The system can continue to operate and also recover in the future using workload prediction and reconfiguration methodologies.
Similarly, video games are often soft real-time, particularly as they try to meet a target frame rate. As the next image cannot be computed in advance, since it depends on inputs from the player, only a short time is available to perform all the computing needed to generate a frame of video before that frame must be displayed. If the deadline is missed, the game can continue at a lower frame rate; depending on the game, this may only affect its graphics (while the gameplay continues at normal speed), or the gameplay itself may be slowed down (which was common on older third- and fourth-generation consoles
WCET(Worst Case Execution Time):
It must not be less than the real WCET (otherwise the
deadline will be execced sometime).
2 It should be as near as possible to the real WCET (otherwise
computing power will be wasted −→ the system gets more
Statical WCET Analysis: Calculating execution time
based on the computer program.
Dynamical WCET Analysis: Measurement of an
adequate number of execution runs on a certain
Java variables, Array, 2d array Method Different method invoking and return type Class
– Class is actually a blueprint/specification/design
– A class can create as many as objects it needs to create Object
– Earth is a software application where human and other thing is software objects.For creating object we need to create a human class
– Objects do particular behavior in a class
– Object exist only in application runtime actually when application is running
– Objects have identity,state and behavior
– this keyword – it represent current object Instance Constructor – The costructor is a special method with the same name as the class and it’s used to instantiate objects from that class
– Every class has a by default constructor if we don’t put it manually
– The constructor is special method containing instructions for object creation. it can be said it is so called birth method. It has instructions for how the object will be born when the application starts up Static keyword Stack and heap memory Garbage collection Object oriented Programming = better organizing of code, it is a way to organize our code from multiple files by creating objects Local variable Reference variable Instance variable Inheritance
– Inheritance is the approach to get/transfer behaviour of one class to another
– We use extends keyword for inheriting, in inheritance we inherit from parent class which known as base class and the class which needs inheritation is known as child class or sub class/derived class
– super keyword it extract constructor and it’s variable from parent class but reverse is not possible Overrides
– Same method name with different purpose
– Same method name in parent class but in child class the method name is same but with different purpose
– Overrides means replace
– Override is not a good idea sometimes so we go for interface Interfaces
– Interface is a contract with a class. The class needs to implements that method of the interface according to contract
– Interface has a method which does not need body, so it is just only to define, it is called as abstract method
– one parent class
– We use implements keyword while putting interface in a class Abstract class
– When you don’t need all methods to invoke you can use abstract method, you can not make object from abstract class. Abstract method needs to be in abstract class. We use abstract keyword for both method and object to define abstract class and methods
– you can only extend abstract class but can not instantiate abstract class
– We can define abstract class as a type while creating object
Loops Exception Handling
Collection Framework Wrapper class Threading Concurrency Database
Jshell Functional Interfaces Lambda expressions
-Lambda helps us to use separate from associated object
– it can run without class
– We need to use lot of interfaces for this
Ei bold kora jayga diye project banaye banaye clear korte hobe
Italic kora jaygagula motamuti clear asey In Sha Allah, Alhamdulillah
The source is : Imtiaz Ahmed’s complete Java course
Master Object Oriented Design in Java course note
Association: It defines relationship between classes, it defines how the software will behave
Dependency Association: For example from code:
A driver receives a vehicle reference only as driver then only he can drive or accelerate
Composition: A particular object . It imply ownership
for example in this code:
Aggregation Association: It does not imply ownership
Here Department to SpanishCourse relation is composite
But Course to Student relationship is not composite because it does not imply ownership a student can take many courses or not
We find this relationship from above diagram, the block diamond and white diamond is the part of UML diagram
Overview of software design:
For example: Hospital Employee Management System Task of the software:
Hire and Terminate Employees
Print Reports(XML,CSV Formats)
Current status of the software
Tips for design:
– You must draw design in paper or whiteboard don’t go to code directly
– Don’t overdesign or overdraw
– We have to develop iteratively but early steps should be kept simple
– Class names should be nouns based on their intention
Single Responsibility Priniciple(SRP): Not all the things in the same class
Don’t repeat yourself(DRY):
Arrow sign always describe that it is depends on that dependency class:
DAO=Data Access Object
Single Responsibility Principle Special Notes:
A class should have only one single reason to change
Open closed principle sayings about class design:
Classes should be open for extension but closed for modification.
Open Closed Principle and Strategy pattern:
Software modules should be open for extension and closed for modification
In development lifecycle software requirements needs to be constantly pour in. If developed need to change the already made codes the design is fragile. Fragile means broken.
So open closed principle save engineers from fragile design
instanceof operator we used here in the code:
System.out.println("cleaning patient Area");
Here it is like a junk drawer
So we will make it changes because it is violating OCP principle. This chamging process is known as Strategy pattern. So let’s do it.
We could also do it with interface class except abstract class
Example after applying Strategy pattern:
We depend on something in driving like car is stopping by traffic light
Imagine a life every car has different mechanism
Violation of Dependency Inversion Principle
When higher level modules depend on lower level ones succeptible to change Dangers of coupling: Tight coupling :
Well design software has single responsibility
This method says high level modules should not depend on lowlevel modules. It should depend on abstractions
Abstract classes and Interfaces don’t change as often as concrete classes/ derivatives
Cohesion means related things together.
This code I tried to run in class inside class but did not worked. Then I downloaded course code and run worked then again I tried to do with my directory structure then it worked.
Quizes from OOP course:
Q2: The Dependency Inversion Principle states
Interfaces and abstract classes change far less often the concrete derivatives. Concrete classes should depend on Interfaces and abstract classes because they change less often and are higher level modules
Q3: In general the dependency inversion principle states that code should only depend on things that don’t change often
True Liskov Substitution Principle: Subtypes must be substitutable for their basetypes
From Quiz: Main Kotha about Interface Segregation Principle:
This principle does not have to do with the number of dependencies that may exist in an application. The principle simply states that modules should not have dependencies on code they do not use.
If a module does not use functionality from another module, there is no reason to have a direct dependency between them. There should be an abstraction in between to segregate the 2 modules
When the application is not running there is no object because onbject only available in runtime, you will find only some classes
A very popular dependency injection implementation is spring framework bundled with spring container.
Dependency injection is
Dependency Injection Using Spring: Observer Pattern: The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.
One basic UML diagram from wikipedia:
Created one for the course:
When there is so many constructors and tough to handle it. Example codes with some bugs. Will do the solution later.
User websiteUser=newUser.Builder("bobMax","[email protected]").firstName("bob").lastName("max").build();
Software Engineer | Polyglot Programmer | Gym Lover | Cyclist | Algorithm Addict | Programming and Research enthusiast | Life Long Passionate Learner | Love CSE, Backend and Data
Hi, thanks for your interest on my blog 🙂 I am Syed Ahmed Zaki, from Germany. This is my blog “Zakilive.Com” for sharing my knowledge and passion with you all.
I was born in a beautiful country of south asia named Bangladesh. I am a Computer Science and Engineering graduate and currently doing my post graduation in Germany. I am passionate, dedicated, hardworking about my tasks and fond of Algorithms, Competitive Programming, Mathematics, Research in data science(Machine Learning, AI, NLP, Deep Learning), bioinformatics and IoT. I also love software engineering. In software development field I prefer Web Application Engineering.
In my bachelor study life, I tried to participate in several programming contests(online, onsite, intra etc.) and passed some time in ACM training class for sharpening my logical skills. As an ordinary people it was little bit tough for me alongside with academic pressure, thesis and research paper writing but I love challenges so I always tried to push my limits though still I need to improve a lot in everything but I always trust in this quote “Hard work beats talent”. That quote I have learned from my life through bodybuilding of 6 years since 2012 and after losing 33 KG fat in 4 months from 101 KG I developed my fit physique, so I respectfully believe in this sentence and relate this with CSE field. I also love to learn from my failures. I hate excuses while working professionally and I love trying to finish my work with perfection till the last moment before deadline.
I also love to explore and play with new technologies and try to implement it with innovative ideas. In my bachelor university life, I always tried to learn from the basics of Computer Science. So, I have tried to gather Networking to Database Knowledge, OS fundamentals to OOP etc. all fundamental core basics in my skillset in a practical approach.
Alongside with developing some web applications in core php and laravel framework I have also tried to build games with unity3d game engine, built 2 android apps, experimented machine learning with python, data mining with WEKA, AI chatbot, IoT based weather station and some more project works for my undergraduate courses. As I am language and platform agnostic, I enjoyed and learned a lot from all of these works. I also love teamwork. Alongside software engineering and different extra curricular activities I also love teaching. I am also proficient at working with linux and windows based OSes and I feel so lucky if I get chance to contribute in opensource projects. In my linkedin profile you will find more details about me.
However, I am actually a knowledge seeker and life long passionate learner who tries to make his weakness as strength, I was a serious student of all the courses in CS academia that can solve real life problems as I love to explore knowledge in a crafted manner. I love to study books, blogs or whatever philosophically solve my curiosity. For that, I maintain a good collection of various technological, scientific and philosophical books in my small library. Knowledge sharing, analytical thinking, practice and passing the passion of mine with you is one of my motivations for running this blog. I practice to hone my skills with trying to improve my programming and developing skillset day by day and what I learn, I never forget to share here for you.
In my free time I love to do cycling or gym or play racing games in my android phone or watch animated movies and also love to promote positive, fit and healthy lifestyle among people.
Currently I am working with Java technologies. If you have any opportunity/business to work with me or any other query kindly say just hi to me at my mail: [email protected]
Caution and Tips:
First, Try To Understand the Problem Statement. Second, Solve Code with Pen and Paper. Third, Then Write code and submit in the OJ to justify test cases. Fourth, If failed to AC then optimize your code to the better version. Fifth, After failed in 3rd time see my solution. Understnad the logic and implement by your own.
Please, don’t just copy-paste the code. It will kill your creativity 🙂