Software Engineering Notebook
Software Engineering Notebook
By Hamza Adnan
12 FEBRUARY 2024
Starling bank
Contents
Introduction...........................................................................................................................................2
Course Plan............................................................................................................................................2
Java Master Class...................................................................................................................................2
Introduction
This document will contain notes whilst learning software engineering via the AmigosCode platform
covering the below topics: Java, Object-Oriented Programming, PostgreSQL, Spring Boot, Spring
Security, Docker, IntelliJ IDEA, SOLID Principles, POSTMAN, Git, DevOps, CI-CD, JavaScript, React,
Node, Mongo, SCRUM, AWS, GitHub Actions, Linux Terminal, Kubernetes, Microservices, Material
UI/Tailwind/Bootstrap, Flutter, VS Code
Course Plan
Java Master Class – Bootcamp (20hrs)
Full Stack Professional – Expand Relevant Sections with the following courses:
Management System
Bank Application
E-Commerce Site
Social Network
Features: Dark Theme, Messaging, User Counter, Refresh UI, Text Change, Markup, Document
Upload/Download
The IDE used is IntelliJ IDEA, where the UI was also built in Java Swing Framework as well as
all other elements.
Java is a complied / interpreter language used for back-end development, whereas JavaScript is a
interpreted language meant for the web browser and some back-end work with the Node runtime
and express framework.
The compiler is a special program that processes statements written in a particular programming
language and turns them into machine language or “code” that a computer’s processor uses to
perform an operation.
Whereas an interpreter reads each statement of code and then converts or executes it directly. There
is NO complier or conversion to binary so that the CPU can execute, this is a completely different
process.
Complied: Interpreted:
Code can be executed directly by a computer’s Another program executes the code (Node or
CPU. Chrome browser)
Code must be transformed into machine No transformation needed, runs direct against
readable instructions. the interpreter rather than compiling.
Runs Faster. Slower
Better performance. Faster for development.
Examples of languages include: C++, C#, Java, Examples of languages include: JavaScript,
Golang. Python.
Type: AKA data type is a classification identifying one of various TYPES OF DATA i.e. strings, integers,
objects, arrays, maps. The process for verifying and enforcing constraints i.e. type checking may
occur either at compile time (static check i.e. Java) or at run time (dynamic check i.e. JavaScript)
A language that is statically-typed if the type of a variable is known at compile time instead of at
runtime. This allows for errors to be caught early in the development cycle. Whereas dynamic is the
process of verifying the type safety of a program at run-time, examples include: Objective-C, Python,
PHP, Ruby.
Complied meaning that any issues are known before hand and stop the application from running i.e.
squiggly line in IntelliJ or Visual Studio. Whereas an interpreted language would continue to run even
if you put ‘foo’ within your code.
Code Structure
Syntax Notes:
/*
Multi-line comment
*/
Primitive types are used for storing simple values i.e. int, char, string, double and Boolean, long, float,
short.
package com.amigoscode;
double pi = 3.14;
boolean isAdult = false;
char a = 'A';
Note: Underscores can be used for large numbers foe code readability purposesi.e.
Arithmatic operators:
System.out.println(numberOne + numberTwo);
System.out.println(numberOne - numberTwo);
System.out.println(numberOne * numberTwo);
System.out.println(numberOne / numberTwo);
System.out.println(numberOne % numberTwo);
Note the % is the modulus operator, it displays the reminder of how many times a number can get
divided into a number i.e. 10 / 3, with a reminder of 1, therefore 1 will be output to the console.
Follow BODMAS for the order of operations above, so that you know which supersedes and takes
precedence.
++ is the increment operator this is the same as number = number + 1 for example;
int number = 0;
System.out.println(number++);
System.out.println(number);
int numberTwo = 0;
System.out.println(++numberTwo);
System.out.println(numberTwo);
Note that adding ++ in front of numberTwo would immediately increment the value to 1. Therefore
System.out.println(++numberTwo) //this would output 1
int number = 0;
System.out.println(number--);
System.out.println(number);
int numberTwo = 0;
System.out.println(--numberTwo);
System.out.println(numberTwo);
The same can be applied to other arithmetic operators i.e. *=, -=, /=, %= etc.
Casting
Casting is a method of explicit conversion. In the case of the above example, salary is initially
declared as a double, this needs rounding to the nearest whole number therefore:
We set the salary amount to the rounded salary, however we convert/cast the ‘int’ value before it,
because int is not used for decimal numbers, therefore the output of this would be ‘5423’ with the
conversion being concluded and data loss occurring taking away the ‘0.94’.