├── README.md ├── pdf ├── CC │ ├── UE18CS352_CC_Unit1.pdf │ ├── UE18CS352_CC_Unit2.pdf │ ├── UE18CS352_CC_Unit3.pdf │ ├── UE18CS352_CC_Unit4.pdf │ └── UE18CS352_CC_Unit5.pdf ├── CN │ ├── UE18CS301_CN_Unit1.pdf │ ├── UE18CS301_CN_Unit2.pdf │ ├── UE18CS301_CN_Unit3.pdf │ ├── UE18CS301_CN_Unit4.pdf │ └── UE18CS301_CN_Unit5.pdf ├── DA │ ├── UE18CS312_DA_Unit1.pdf │ ├── UE18CS312_DA_Unit2.pdf │ └── UE18CS312_DA_Unit3.pdf ├── HP │ ├── UE18CS342_HP_Unit1.pdf │ ├── UE18CS342_HP_Unit2.pdf │ └── UE18CS342_HP_Unit3.pdf ├── IR │ ├── UE18CS332_IR_Unit1.pdf │ ├── UE18CS332_IR_Unit2.pdf │ ├── UE18CS332_IR_Unit3.pdf │ ├── UE18CS332_IR_Unit4.pdf │ └── UE18CS332_IR_Unit5.pdf ├── ML │ ├── UE18CS303_ML_Unit1.pdf │ ├── UE18CS303_ML_Unit2.pdf │ └── UE18CS303_ML_Unit3.pdf ├── MOOC │ ├── MCA_Week1.pdf │ ├── MCA_Week2_3.pdf │ ├── MCA_Week4.pdf │ ├── MCA_Week5.pdf │ ├── MCA_Week6.pdf │ ├── MCA_Week7.pdf │ └── MCA_Week8.pdf ├── OOAD │ ├── UE18CS353_OOAD_Unit1.pdf │ ├── UE18CS353_OOAD_Unit2.pdf │ ├── UE18CS353_OOAD_Unit3.pdf │ ├── UE18CS353_OOAD_Unit4.pdf │ └── UE18CS353_OOAD_Unit5.pdf ├── OS │ ├── OS_NTFS.pdf │ ├── OS_UE18CS302_PROC_SCHEDL.pdf │ ├── UE18CS302_OS_Unit1.pdf │ ├── UE18CS302_OS_Unit2.pdf │ ├── UE18CS302_OS_Unit3.pdf │ ├── UE18CS302_OS_Unit4.pdf │ └── UE18CS302_OS_Unit5.pdf ├── RM │ ├── UE18CS400SG_RM_Unit1.pdf │ ├── UE18CS400SG_RM_Unit2.pdf │ ├── UE18CS400SG_RM_Unit3.pdf │ ├── UE18CS400SG_RM_Unit4.pdf │ └── UE18CS400SG_RM_Unit5.pdf └── ST │ ├── UE18CS400SB_ST_Unit1.pdf │ ├── UE18CS400SB_ST_Unit2.pdf │ ├── UE18CS400SB_ST_Unit3.pdf │ ├── UE18CS400SB_ST_Unit4.pdf │ └── UE18CS400SB_ST_Unit5.pdf └── src ├── BD └── main.tex ├── CC ├── UE18CS352_CC_Unit1 │ └── main.tex ├── UE18CS352_CC_Unit2 │ └── main.tex ├── UE18CS352_CC_Unit3 │ ├── LogicalVolumenManager.jpg │ ├── main.tex │ ├── nas.png │ ├── nassan.jpg │ └── san.png ├── UE18CS352_CC_Unit4 │ ├── active-active.png │ ├── active-passive.png │ ├── central.png │ ├── chat.png │ ├── ckt_break.png │ ├── cs.png │ ├── decentralized.png │ ├── email.png │ ├── fallback.png │ ├── hierarchical.png │ ├── main.tex │ ├── pic1.png │ ├── ring.png │ └── webapp.png └── UE18CS352_CC_Unit5 │ ├── main.tex │ ├── p1.png │ ├── p2.png │ └── p3.png ├── CN ├── UE18CS301_CN_Unit1 │ ├── cn1.png │ ├── cn10.png │ ├── cn11.png │ ├── cn12.png │ ├── cn2.png │ ├── cn3.png │ ├── cn4.png │ ├── cn5.png │ ├── cn6.png │ ├── cn7.png │ ├── cn8.png │ ├── cn9.png │ └── main.tex ├── UE18CS301_CN_Unit2 │ ├── cn1.png │ ├── cn2.png │ ├── cn3.png │ ├── cn4.png │ ├── cn5.png │ ├── cn6.png │ ├── cn7.png │ └── main.tex ├── UE18CS301_CN_Unit3 │ ├── cn1.png │ ├── cn2.png │ ├── cn3.png │ ├── cn4.png │ ├── cn5.png │ ├── cn6.png │ ├── cn7.png │ ├── cn8.png │ ├── main.tex │ ├── rdt1.png │ ├── rdt2.png │ ├── rdt21r.png │ ├── rdt21s.png │ ├── rdt22r.png │ ├── rdt22s.png │ └── rdt3s.png ├── UE18CS301_CN_Unit4 │ ├── cn1.png │ ├── cn10.png │ ├── cn11.png │ ├── cn12.png │ ├── cn13.png │ ├── cn14.png │ ├── cn15.jpg │ ├── cn16.png │ ├── cn17.png │ ├── cn2.png │ ├── cn3.png │ ├── cn4.png │ ├── cn5.png │ ├── cn6.png │ ├── cn7.png │ ├── cn8.png │ ├── cn9.png │ └── main.tex └── UE18CS301_CN_Unit5 │ └── main.tex ├── DA ├── UE18CS312_DA_Unit1 │ ├── da1.png │ ├── da2.png │ ├── da3.png │ └── main.tex ├── UE18CS312_DA_Unit2 │ └── main.tex └── UE18CS312_DA_Unit3 │ └── main.tex ├── HP ├── UE18CS342_HP_Unit1 │ ├── flynn.png │ └── main.tex ├── UE18CS342_HP_Unit2 │ └── main.tex └── UE18CS342_HP_Unit3 │ └── main.tex ├── IR ├── UE18CS332_IR_Unit1 │ ├── ir.png │ └── main.tex ├── UE18CS332_IR_Unit2 │ ├── img1.png │ ├── main.tex │ ├── p1.png │ └── p2.png ├── UE18CS332_IR_Unit3 │ ├── main.tex │ └── p1.png ├── UE18CS332_IR_Unit4 │ └── main.tex └── UE18CS332_IR_Unit5 │ └── main.tex ├── ML ├── UE18CS303_ML_Unit1 │ ├── main.tex │ ├── ml1.png │ ├── ml2.png │ ├── ml3.png │ ├── ml4.png │ ├── ml5.png │ └── prec_recl.png ├── UE18CS303_ML_Unit2 │ ├── err.png │ ├── img.jpg │ ├── main.tex │ └── svm.png └── UE18CS303_ML_Unit3 │ └── main.tex ├── OOAD ├── UE18CS353_OOAD_Unit1 │ ├── main.tex │ ├── se1.png │ ├── se2.png │ └── se3.png ├── UE18CS353_OOAD_Unit2 │ └── main.tex ├── UE18CS353_OOAD_Unit3 │ ├── main.tex │ └── meme.png ├── UE18CS353_OOAD_Unit4 │ ├── main.tex │ └── p1.png └── UE18CS353_OOAD_Unit5 │ ├── main.tex │ └── p1.png ├── OS ├── OS_NTFS │ └── main.tex ├── OS_UE18CS302_PROC_SCHEDL │ └── main.tex ├── UE18CS302_OS_Unit1 │ ├── main.tex │ ├── os1.png │ ├── os10.png │ ├── os11.png │ ├── os12.png │ ├── os13.png │ ├── os14.png │ ├── os15.png │ ├── os16.png │ ├── os17.png │ ├── os18.png │ ├── os19.png │ ├── os2.png │ ├── os20.png │ ├── os21.png │ ├── os22.png │ ├── os3.png │ ├── os4.png │ ├── os5.png │ ├── os6.png │ ├── os7.png │ ├── os8.png │ └── os9.png ├── UE18CS302_OS_Unit2 │ ├── main.tex │ ├── os.png │ ├── os1.png │ ├── os2.png │ └── os3.png ├── UE18CS302_OS_Unit3 │ ├── main.tex │ ├── os1.png │ ├── os10.png │ ├── os11.png │ ├── os12.png │ ├── os13.png │ ├── os14.png │ ├── os15.png │ ├── os16.png │ ├── os17.png │ ├── os2.png │ ├── os3.png │ ├── os4.png │ ├── os5.png │ ├── os6.png │ ├── os7.png │ ├── os8.png │ └── os9.png ├── UE18CS302_OS_Unit4 │ ├── main.tex │ ├── os1.png │ ├── os10.png │ ├── os11.png │ ├── os12.png │ ├── os2.png │ ├── os3.png │ ├── os4.png │ ├── os5.png │ ├── os6.png │ ├── os7.png │ ├── os8.png │ ├── os9.png │ ├── raid0.png │ ├── raid01.png │ ├── raid1.png │ ├── raid10.png │ ├── raid2.png │ ├── raid3.png │ ├── raid4.png │ ├── raid5.png │ └── raid6.png └── UE18CS302_OS_Unit5 │ ├── main.tex │ ├── os1.png │ └── os2.png ├── RM ├── UE18CS400SG_RM_Unit1 │ ├── img │ │ ├── flowchart.png │ │ └── research-problem.png │ └── main.tex ├── UE18CS400SG_RM_Unit2 │ ├── img │ │ └── LSD.png │ └── main.tex ├── UE18CS400SG_RM_Unit3 │ ├── img │ │ ├── table.png │ │ └── tail-tests.png │ └── main.tex ├── UE18CS400SG_RM_Unit4 │ ├── img │ │ ├── report-process.png │ │ └── thesis-structure.png │ └── main.tex └── UE18CS400SG_RM_Unit5 │ └── main.tex └── ST ├── UE18CS400SB_ST_Unit1 ├── main.tex ├── p1.png └── p2.png ├── UE18CS400SB_ST_Unit2 ├── main.tex └── st1.png ├── UE18CS400SB_ST_Unit3 └── main.tex ├── UE18CS400SB_ST_Unit4 └── main.tex └── UE18CS400SB_ST_Unit5 └── main.tex /README.md: -------------------------------------------------------------------------------- 1 | # Notes for the CSE Course at PESU 2 | 3 | These notes were written in LaTeX and compiled over the course of 6 semesters of the 4 | Computer Science and Engineering course at PES University, Bengaluru, India. 5 | 6 | The notes are organized into 2 folders, namely ```src``` and ```pdf``` 7 | 8 | The ```pdf``` folder contains the PDF versions of all the notes. You can use these directly 9 | by simply cloning this repo and opening the file you want. 10 | 11 | The ```src``` folder contains the TeX source code (as well as image files in case 12 | the file contains images) for each individual PDF file organized in 13 | the same way. I kindly encourage you to fork this repo and modify the notes 14 | as time goes on and the course contents are updated, as well as add the courses 15 | that you have taken (electives). 16 | 17 | You can compile the TeX files on your own machine or use Overleaf (like I did!) 18 | 19 | Follow the below instructions only if you want to install on your machine 20 | 21 | # LaTeX installation instructions 22 | 23 | ## On Linux 24 | 25 | Install texlive using: 26 | 27 | For Debian/Ubuntu/Pop!_OS users: 28 | 29 | ```console 30 | $ sudo apt install texlive 31 | ``` 32 | 33 | For Fedora users: 34 | 35 | ```console 36 | $ sudo dnf install texlive-scheme-medium 37 | ``` 38 | 39 | For the "btw I use Arch" gang: 40 | ```console 41 | $ sudo pacman -S texlive-core 42 | ``` 43 | 44 | Commands to generate PDF files on all are the same: 45 | 46 | ```console 47 | $ pdflatex .tex 48 | ``` 49 | ## On macOS 50 | 51 | You can use [MacTeX](https://tug.org/mactex/) which is simple to install 52 | 53 | ## On Windows 54 | 55 | I recommend [MiKTeX](https://miktex.org/) 56 | 57 | # NOTE: Regarding mistakes 58 | If you detect any mistakes of any kind in the notes above, kindly do raise a Pull Request. I will review and approve the PR as appropriate. 59 | If you are not familiar with how to raise a PR on GitHub, [this](https://opensource.com/article/19/7/create-pull-request-github) will help. 60 |
61 | Alternatively you can reach out to me via my personal [E-Mail ID](mailto:abaksy@gmail.com) and give me the following details for the change you want to make: 62 | - Subject 63 | - Unit 64 | - Section and subsection (and sub-subsection, if applicable) 65 | - Topic name 66 | - The change you want to be made 67 | -------------------------------------------------------------------------------- /pdf/CC/UE18CS352_CC_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CC/UE18CS352_CC_Unit1.pdf -------------------------------------------------------------------------------- /pdf/CC/UE18CS352_CC_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CC/UE18CS352_CC_Unit2.pdf -------------------------------------------------------------------------------- /pdf/CC/UE18CS352_CC_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CC/UE18CS352_CC_Unit3.pdf -------------------------------------------------------------------------------- /pdf/CC/UE18CS352_CC_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CC/UE18CS352_CC_Unit4.pdf -------------------------------------------------------------------------------- /pdf/CC/UE18CS352_CC_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CC/UE18CS352_CC_Unit5.pdf -------------------------------------------------------------------------------- /pdf/CN/UE18CS301_CN_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CN/UE18CS301_CN_Unit1.pdf -------------------------------------------------------------------------------- /pdf/CN/UE18CS301_CN_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CN/UE18CS301_CN_Unit2.pdf -------------------------------------------------------------------------------- /pdf/CN/UE18CS301_CN_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CN/UE18CS301_CN_Unit3.pdf -------------------------------------------------------------------------------- /pdf/CN/UE18CS301_CN_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CN/UE18CS301_CN_Unit4.pdf -------------------------------------------------------------------------------- /pdf/CN/UE18CS301_CN_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/CN/UE18CS301_CN_Unit5.pdf -------------------------------------------------------------------------------- /pdf/DA/UE18CS312_DA_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/DA/UE18CS312_DA_Unit1.pdf -------------------------------------------------------------------------------- /pdf/DA/UE18CS312_DA_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/DA/UE18CS312_DA_Unit2.pdf -------------------------------------------------------------------------------- /pdf/DA/UE18CS312_DA_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/DA/UE18CS312_DA_Unit3.pdf -------------------------------------------------------------------------------- /pdf/HP/UE18CS342_HP_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/HP/UE18CS342_HP_Unit1.pdf -------------------------------------------------------------------------------- /pdf/HP/UE18CS342_HP_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/HP/UE18CS342_HP_Unit2.pdf -------------------------------------------------------------------------------- /pdf/HP/UE18CS342_HP_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/HP/UE18CS342_HP_Unit3.pdf -------------------------------------------------------------------------------- /pdf/IR/UE18CS332_IR_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/IR/UE18CS332_IR_Unit1.pdf -------------------------------------------------------------------------------- /pdf/IR/UE18CS332_IR_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/IR/UE18CS332_IR_Unit2.pdf -------------------------------------------------------------------------------- /pdf/IR/UE18CS332_IR_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/IR/UE18CS332_IR_Unit3.pdf -------------------------------------------------------------------------------- /pdf/IR/UE18CS332_IR_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/IR/UE18CS332_IR_Unit4.pdf -------------------------------------------------------------------------------- /pdf/IR/UE18CS332_IR_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/IR/UE18CS332_IR_Unit5.pdf -------------------------------------------------------------------------------- /pdf/ML/UE18CS303_ML_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ML/UE18CS303_ML_Unit1.pdf -------------------------------------------------------------------------------- /pdf/ML/UE18CS303_ML_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ML/UE18CS303_ML_Unit2.pdf -------------------------------------------------------------------------------- /pdf/ML/UE18CS303_ML_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ML/UE18CS303_ML_Unit3.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week1.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week2_3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week2_3.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week4.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week5.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week6.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week7.pdf -------------------------------------------------------------------------------- /pdf/MOOC/MCA_Week8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/MOOC/MCA_Week8.pdf -------------------------------------------------------------------------------- /pdf/OOAD/UE18CS353_OOAD_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OOAD/UE18CS353_OOAD_Unit1.pdf -------------------------------------------------------------------------------- /pdf/OOAD/UE18CS353_OOAD_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OOAD/UE18CS353_OOAD_Unit2.pdf -------------------------------------------------------------------------------- /pdf/OOAD/UE18CS353_OOAD_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OOAD/UE18CS353_OOAD_Unit3.pdf -------------------------------------------------------------------------------- /pdf/OOAD/UE18CS353_OOAD_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OOAD/UE18CS353_OOAD_Unit4.pdf -------------------------------------------------------------------------------- /pdf/OOAD/UE18CS353_OOAD_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OOAD/UE18CS353_OOAD_Unit5.pdf -------------------------------------------------------------------------------- /pdf/OS/OS_NTFS.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/OS_NTFS.pdf -------------------------------------------------------------------------------- /pdf/OS/OS_UE18CS302_PROC_SCHEDL.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/OS_UE18CS302_PROC_SCHEDL.pdf -------------------------------------------------------------------------------- /pdf/OS/UE18CS302_OS_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/UE18CS302_OS_Unit1.pdf -------------------------------------------------------------------------------- /pdf/OS/UE18CS302_OS_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/UE18CS302_OS_Unit2.pdf -------------------------------------------------------------------------------- /pdf/OS/UE18CS302_OS_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/UE18CS302_OS_Unit3.pdf -------------------------------------------------------------------------------- /pdf/OS/UE18CS302_OS_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/UE18CS302_OS_Unit4.pdf -------------------------------------------------------------------------------- /pdf/OS/UE18CS302_OS_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/OS/UE18CS302_OS_Unit5.pdf -------------------------------------------------------------------------------- /pdf/RM/UE18CS400SG_RM_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/RM/UE18CS400SG_RM_Unit1.pdf -------------------------------------------------------------------------------- /pdf/RM/UE18CS400SG_RM_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/RM/UE18CS400SG_RM_Unit2.pdf -------------------------------------------------------------------------------- /pdf/RM/UE18CS400SG_RM_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/RM/UE18CS400SG_RM_Unit3.pdf -------------------------------------------------------------------------------- /pdf/RM/UE18CS400SG_RM_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/RM/UE18CS400SG_RM_Unit4.pdf -------------------------------------------------------------------------------- /pdf/RM/UE18CS400SG_RM_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/RM/UE18CS400SG_RM_Unit5.pdf -------------------------------------------------------------------------------- /pdf/ST/UE18CS400SB_ST_Unit1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ST/UE18CS400SB_ST_Unit1.pdf -------------------------------------------------------------------------------- /pdf/ST/UE18CS400SB_ST_Unit2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ST/UE18CS400SB_ST_Unit2.pdf -------------------------------------------------------------------------------- /pdf/ST/UE18CS400SB_ST_Unit3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ST/UE18CS400SB_ST_Unit3.pdf -------------------------------------------------------------------------------- /pdf/ST/UE18CS400SB_ST_Unit4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ST/UE18CS400SB_ST_Unit4.pdf -------------------------------------------------------------------------------- /pdf/ST/UE18CS400SB_ST_Unit5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/pdf/ST/UE18CS400SB_ST_Unit5.pdf -------------------------------------------------------------------------------- /src/BD/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{amsmath} 4 | \usepackage{amsthm} 5 | \usepackage{graphicx} 6 | \usepackage{geometry} 7 | \usepackage{minted} 8 | \usemintedstyle{tango} 9 | \geometry{a4paper, portrait, margin=1in} 10 | 11 | \theoremstyle{plain} 12 | \newtheorem{thm}{Theorem} 13 | 14 | \theoremstyle{definition} 15 | \newtheorem{defn}{Definition} % definition numbers are dependent on theorem numbers 16 | \newtheorem{exmp}{Example} % same for example numbers 17 | 18 | \title{Big Data (UE18CS322)\\ 19 | \large Unit 1} 20 | \author{Aronya Baksy} 21 | \date{August 2020} 22 | 23 | \begin{document} 24 | 25 | \maketitle 26 | 27 | \section{Introduction} 28 | 29 | 30 | 31 | \end{document} 32 | -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit3/LogicalVolumenManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit3/LogicalVolumenManager.jpg -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit3/nas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit3/nas.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit3/nassan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit3/nassan.jpg -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit3/san.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit3/san.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/active-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/active-active.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/active-passive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/active-passive.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/central.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/central.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/chat.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/ckt_break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/ckt_break.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/cs.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/decentralized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/decentralized.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/email.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/fallback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/fallback.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/hierarchical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/hierarchical.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/pic1.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/ring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/ring.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit4/webapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit4/webapp.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit5/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit5/p1.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit5/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit5/p2.png -------------------------------------------------------------------------------- /src/CC/UE18CS352_CC_Unit5/p3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CC/UE18CS352_CC_Unit5/p3.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn1.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn10.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn11.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn12.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn2.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn3.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn4.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn5.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn6.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn7.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn8.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit1/cn9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit1/cn9.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn1.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn2.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn3.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn4.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn5.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn6.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit2/cn7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit2/cn7.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn1.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn2.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn3.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn4.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn5.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn6.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn7.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/cn8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/cn8.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt1.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt2.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt21r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt21r.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt21s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt21s.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt22r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt22r.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt22s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt22s.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit3/rdt3s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit3/rdt3s.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn1.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn10.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn11.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn12.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn13.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn14.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn15.jpg -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn16.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn17.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn2.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn3.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn4.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn5.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn6.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn7.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn8.png -------------------------------------------------------------------------------- /src/CN/UE18CS301_CN_Unit4/cn9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/CN/UE18CS301_CN_Unit4/cn9.png -------------------------------------------------------------------------------- /src/DA/UE18CS312_DA_Unit1/da1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/DA/UE18CS312_DA_Unit1/da1.png -------------------------------------------------------------------------------- /src/DA/UE18CS312_DA_Unit1/da2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/DA/UE18CS312_DA_Unit1/da2.png -------------------------------------------------------------------------------- /src/DA/UE18CS312_DA_Unit1/da3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/DA/UE18CS312_DA_Unit1/da3.png -------------------------------------------------------------------------------- /src/DA/UE18CS312_DA_Unit2/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{amsmath} 4 | \usepackage{amsfonts} 5 | \usepackage{amsthm} 6 | \usepackage[margin=1in]{geometry} 7 | 8 | \theoremstyle{plain} 9 | \newtheorem{thm}{Theorem} 10 | 11 | \theoremstyle{definition} 12 | \newtheorem{defn}{Definition} % definition numbers are dependent on theorem numbers 13 | \newtheorem{exmp}{Example} % same for example numbers 14 | 15 | \title{Data Analytics (UE18CS312)\\ 16 | \large Unit 2} 17 | \author{Aronya Baksy} 18 | \date{October 2020} 19 | 20 | \begin{document} 21 | 22 | \maketitle 23 | 24 | \section{Regression Analysis} 25 | \begin{itemize} 26 | \item Regression is the task of finding the existence of an \textbf{association relationship} between a \textbf{dependent} variable (aka response or outcome variable, represented as $Y$) and an \textbf{independent} variable (aka explanatory or predictor variable, represented as $X$). 27 | 28 | \item Regression does not say that the current value of $Y$ is dependent on the current value of $X$, or is \textbf{caused by} the current value of $X$. 29 | 30 | \item Regression only aims to find that there is an \textit{association} between changes in $Y$ and changes in $X$. 31 | 32 | \item Regression is a form of \textbf{supervised learning}, in that it requires knowledge of both dependent and independent variables in the dataset. 33 | \end{itemize} 34 | 35 | \section{Simple Linear Regression} 36 | \begin{itemize} 37 | \item In SLR, there is a \textit{linear relationship} between the dependent variable $Y$ and the regression coefficients $\beta_0$ and $\beta_1$. 38 | 39 | \item The simplest functional form of SLR model can be written as 40 | 41 | \begin{equation} 42 | Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i 43 | \end{equation} 44 | 45 | Where\\ 46 | $Y_i$ is the value of the dependent variable for the $i^{th}$ observation in the data\\ 47 | $X_i$ is the value of the independent variable for the $i^{th}$ observation in the data\\ 48 | $\beta_0$ and $\beta_1$ are the regression coefficients\\ 49 | $\varepsilon_i$ is the error term or \textbf{residual} in prediction for the $i^{th}$ observation. 50 | 51 | \item \textbf{Note}: \\Models like $Y_i = \beta_0 + \beta_1 log(X_i) + \varepsilon_i$ and $Y_i = \beta_0 + \beta_1 X_i^2+ \varepsilon_i$ are also \textbf{linear models}.\\ 52 | But models like $Y_i = \beta_0 + \frac{1}{1 +\beta_1} X_i + \varepsilon_i$ and $Y_i = \beta_0 + e^{\beta_1} X_i + \varepsilon_i$ are \textbf{non-linear models}. 53 | 54 | \item Determining the appropriate functional form is important to get a good fit with low error for the given data. 55 | \end{itemize} 56 | 57 | \subsection{Parameter Estimation: OLS} 58 | \begin{itemize} 59 | \item The \textbf{Ordinary Least Squares} method is used to estimate the regression parameters $\beta_0$ and $\beta_1$. 60 | 61 | \item OLS provides the \textbf{Best Linear Unbiased Estimate} (BLUE) of the parameters. The condition for an estimate to be BLUE is: 62 | \begin{equation*} 63 | \mathbb{E}(\beta - \hat{\beta}) = 0 64 | \end{equation*} 65 | Where $\hat{\beta}$ is the estimated value of the parameter $\beta$. 66 | 67 | \item OLS is guaranteed to provide the best fit line under the following assumptions: 68 | \begin{enumerate} 69 | \item The model is linear wrt. the regression parameters $\beta_0$ and $\beta_1$ 70 | 71 | \item The exploratory variable $X$ is deterministic, not stochastic 72 | 73 | \item The conditional expected value of all residuals is 0, ie. $\mathbb{E}(\varepsilon_i | X_i) = 0$ 74 | 75 | \item For time series data, residuals are uncorrelated, ie. $Cov(\varepsilon_i, \varepsilon_j) = 0\text{ }\forall\text{ }i \ne j$ 76 | 77 | \item The residuals $\varepsilon_i$ follow a normal distribution 78 | 79 | \item The variance of the residuals $\varepsilon_i$ does not depend on the value of $X_i$ and it is a constant value, in other words, $X$ is \textbf{homoscedastic}. 80 | \end{enumerate} 81 | 82 | \item The OLS estimate of the parameters $\beta_0$ and $\beta_1$ are: 83 | \begin{align} 84 | \hat{\beta}_0 &= \overline{Y} - \hat{\beta}_1 \overline{X}\\ 85 | \hat{\beta}_1 &= \frac{\sum\limits_{i=1}^{n} X_i (Y_i - \overline{Y})}{\sum\limits_{i=1}^{n} X_i (X_i - \overline{X})} 86 | \end{align} 87 | 88 | \item This BLUE is obtained by minimizing the sum of squared errors (SSE). 89 | 90 | \item Sum of Squared Total variations (SST) is 91 | \begin{equation*} 92 | SST = \sum_{i=1}^{n} (Y_i - \overline{Y})^2 93 | \end{equation*} 94 | 95 | \item Sum of Squared Errors (SSE) is 96 | \begin{equation*} 97 | SSE = \sum_{i=1}^{n} (Y_i - \hat{Y})^2 98 | \end{equation*} 99 | 100 | \item Sum of Squared error due to Regression (SSR) is 101 | \begin{equation} 102 | SSR = \sum_{i=1}^{n} (\hat{Y_i} - \overline{Y})^2 103 | \end{equation} 104 | 105 | \item Therefore 106 | \begin{equation*} 107 | SST = SSR + SSE 108 | \end{equation*} 109 | 110 | \item And the \textbf{coefficient of determination}, $r^2$ is given as 111 | \begin{equation} 112 | r^2 = \frac{SSR}{SST} = \frac{\sum\limits_{i=1}^{n} (\hat{Y_i} - \overline{Y})^2}{\sum\limits_{i=1}^{n} (Y_i - \overline{Y})^2} = 1 - \frac{\sum\limits_{i=1}^{n} (Y_i - \hat{Y})^2}{\sum\limits_{i=1}^{n} (Y_i - \overline{Y})^2} 113 | \end{equation} 114 | \end{itemize} 115 | 116 | \section{Hypothesis Tests for Regression Coefficients} 117 | \subsection{t-Test for Regression Coefficient} 118 | \begin{itemize} 119 | \item \textbf{Null Hypothesis} $H_0$: There is no linear relationship between X and Y 120 | 121 | \item \textbf{Alternate Hypothesis} $H_1$: There is a linear relationship between X and Y 122 | 123 | \item The standard error for the estimate $\hat{\beta}_1$ is: 124 | \begin{equation*} 125 | S_e(\hat{\beta}_1) = \frac{\sqrt{\sum\limits_{i=1}^n (Y_i - \hat{Y}_i)^2 / (n-2)}}{\sum\limits_{i=1}^n (X_i - \overline{X})^2} 126 | \end{equation*} 127 | 128 | \item The test statistic $t$ with degrees of freedom $n-2$ is then calculated as: 129 | \begin{equation*} 130 | t = \frac{\hat{\beta}_1}{S_e(\hat{\beta}_1)} 131 | \end{equation*} 132 | \end{itemize} 133 | 134 | \subsection{F-test for overall model: ANOVA} 135 | \begin{itemize} 136 | \item The f-score is given as 137 | \begin{equation*} 138 | f = \frac{SSR}{SSE/(n-2)} = \frac{R^2 (n-2)}{(1-R^2)} 139 | \end{equation*} 140 | \end{itemize} 141 | 142 | \section{Outlier Analysis} 143 | The distance measures used in observing outliers are: 144 | \begin{itemize} 145 | \item \textbf{Z-score}: given by 146 | \begin{equation*} 147 | z = \frac{\hat{Y}-\overline{Y}}{\sigma_Y} 148 | \end{equation*} 149 | 150 | \item \textbf{Mahalanobis Distance}: Given by 151 | \begin{equation*} 152 | D_m = \sqrt{(x-\mu)^TS^{-1}(x-\mu)} 153 | \end{equation*} 154 | 155 | \item \textbf{Minknowski Distance}: between $X = (x_1, x_2, ..., x_n)$ and $Y = (y_1, y_2, ..., y_n)$ is given by 156 | \begin{equation*} 157 | D(X, Y) = (\sum\limits_{i=1}^n |x_i - y_i|^p)^{\frac{1}{p}} 158 | \end{equation*} 159 | 160 | For $p=1$ this is the \textbf{Manhattan Distance}, and for $p=2$ this is the \textbf{Euclidean Distance}. 161 | \end{itemize} 162 | 163 | \section{Multiple Linear Regression} 164 | \begin{itemize} 165 | \item The most basic functional form of an MLR model is given as 166 | \begin{equation} 167 | y_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + ... + \beta_k x_{ki} + \varepsilon_i 168 | \end{equation} 169 | 170 | \item Let $X$ be a matrix with the first column all 1s, and the next column being the values of the first feature $X_1$ and so on. Then the matrix form of MLR is 171 | \begin{equation} 172 | Y = X \beta + \varepsilon 173 | \end{equation} 174 | 175 | \item The OLS estimate of $\beta$ is then given by 176 | 177 | \begin{equation} 178 | \hat{\beta} = (X^T X)^{-1} (X^T Y) 179 | \end{equation} 180 | \end{itemize} 181 | 182 | \subsection{Auto-Correlation} 183 | \begin{itemize} 184 | \item Auto correlation is the correlation between successive error terms in a time-series regression problem. Given a time series model 185 | \begin{equation*} 186 | Y_t = \beta_0 + \beta_1 x_t + \varepsilon_t 187 | \end{equation*} 188 | 189 | \item If there is auto correlation, the standard error estimate of beta coefficient will be underestimated, which leads to a low $p$ value. Hence a variable that has no statistically significant relationship with the response variable $y$ may be accepted because of auto correlation. 190 | 191 | \item Auto correlation can be tested using the \textbf{Durbin-Watson Test} 192 | \end{itemize} 193 | 194 | \subsection{Durbin-Watson's Test} 195 | \begin{itemize} 196 | \item If $\rho$ be the correlation between the residual terms $\varepsilon_t$ and $\varepsilon_{t-1}$, then: 197 | \begin{itemize} 198 | \item \textbf{Null Hypothesis} $H_0$: $\rho = 0$ 199 | \item \textbf{Alternate Hypothesis} $H_1$: $\rho \ne 0$ 200 | \end{itemize} 201 | 202 | \item The test statistic $D$ is given as 203 | \begin{equation*} 204 | D = 2 \left (1 - \frac{\sum\limits_{i=2}^{n} e_i e_{i-1}}{\sum\limits_{i=1}^{n} e_i^2} \right ) 205 | \end{equation*} 206 | 207 | \item Given the upper and lower limits $D_U$ and $D_L$ on the test statistic $D$, we have 208 | \begin{itemize} 209 | \item If $D < D_L$ then errors are +vely autocorrelated 210 | 211 | \item If $D > D_L$ there is no evidence for +ve autocorrelation 212 | 213 | \item If $(4-D) < D_L$ then errors are -vely autocorrelated 214 | 215 | \item If $(4-D) > D_U$ then no evidence for -ve autocorrelation 216 | 217 | \item If $D_L < 4-D < D_U$ or $D_L < D < D_U$ then test is inconclusive 218 | \end{itemize} 219 | \end{itemize} 220 | \subsection{DFFIT and DFBETA} 221 | \begin{itemize} 222 | \item DFFIT and DFBETA are the values of the repsonse variable and beta coefficient when one observation $i$ is removed from the data. 223 | 224 | \item DFFIT is given by 225 | \begin{align*} 226 | DFFIT &= \hat{Y}_i - \hat{Y_{i(i)}}\\ 227 | DFBETA_i(j) &= \hat{\beta}_j - \beta{Y_{j(i)}} 228 | \end{align*} 229 | 230 | \item $DFBETA_i(j)$ represents the change in the coefficient of variable $X_j$ when observation $i$ is removed. 231 | 232 | \item The standardized versions SDFFIT and SDFBETA are also used, standardized by the standard error $S_e(\hat{\beta_j})$ 233 | \end{itemize} 234 | 235 | \subsection{Bias-Variance Tradeoff in MLR} 236 | \begin{itemize} 237 | \item The \textbf{bias} is the difference between the actual population value of an estimator and its expected value. It measures the accuracy of the estimates. 238 | \begin{equation} 239 | Bias(\hat{\beta}) = \mathbb{E}(\hat{\beta}) - \beta 240 | \end{equation} 241 | 242 | \item The \textbf{variance} measures the spread, or uncertainty, in these estimates. 243 | \begin{equation} 244 | Var(\hat{\beta}) = \frac{E^{'}E}{n-m} 245 | \end{equation} 246 | where $E$ is the matrix of residuals given as $y - X\hat{\beta}$, $n$ is number of observations and $m$ is number of independent variables. 247 | 248 | \item The OLS estimator that is used for estimating regression coefficients is unbiased, but it can have high variance in the cases where there are lots of predictor variables ($X$), the predictors are highly correlated with one another, or when $n-m$ tends towards 0. 249 | 250 | \item Solution to the above is to reduce variance at the penalty of introducing some bias. This is called \textbf{regularization}. 251 | \end{itemize} 252 | 253 | \subsubsection{LASSO Regression} 254 | \begin{itemize} 255 | \item Least Absolute Shrinkage and Selection. Uses L1 norm or the 'absolute value' of coefficients scaled by shrinkage. 256 | 257 | \item LASSO tends to zero out smaller (unimportant) coefficients (and helps with feature selection) 258 | 259 | \item With LASSO, the MLR objective function is now 260 | \begin{equation} 261 | \sum_{i=1}^{N} \left ( y_i - \beta_0 - \sum_{j = 1}^{m} \beta_j x_{ij} \right )^2 + \lambda \sum_{j=1}^{p} \left | \beta_j \right | 262 | \end{equation} 263 | 264 | \item Disadvantages of LASSO: 265 | \begin{enumerate} 266 | \item In small-$n$-large-$m$ dataset the LASSO selects at most $n$ variables before it saturates. 267 | 268 | \item If there are grouped variables (highly correlated between each other) LASSO tends to select one variable from each group ignoring the others 269 | \end{enumerate} 270 | \end{itemize} 271 | 272 | \subsubsection{Ridge Regression} 273 | \begin{itemize} 274 | \item Uses L2 norm or the squared value of coefficients scaled by shrinkage. It is used when number of predictor variables in a set exceeds the number of observations, or when a data set has correlations between predictor variables. 275 | 276 | \item We shrink the estimated association of each variable. 277 | 278 | \item With LASSO, the MLR objective function is now 279 | \begin{equation} 280 | y = \sum_{i=1}^{N} \left ( y_i - \beta_0 - \sum_{j = 1}^{m} \beta_j x_{ij} \right )^2 + \lambda \sum_{j=1}^{p} \beta_j^2 281 | \end{equation} 282 | 283 | \item Coefficients produced by OLS are scale invariant but that is not the case with Ridge Regression, so we must remember to scale the input 284 | \end{itemize} 285 | 286 | 287 | 288 | \section{Logistic Regression} 289 | \begin{itemize} 290 | \item A binary logistic regression model is given as 291 | \begin{equation*} 292 | P(Y=1) = \frac{e^Z}{1+e^Z} 293 | \end{equation*} 294 | 295 | Where 296 | \begin{equation*} 297 | Z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_k x_k 298 | \end{equation*} 299 | 300 | \item The above equation can be transformed into 301 | \begin{equation} 302 | Z = ln \left( \frac{P(Y=1)}{1-P(Y=1)} \right) 303 | \end{equation} 304 | 305 | \item The quantity $\frac{P(Y=1)}{1-P(Y=1)}$ is called the \textbf{odds}, and the natural logarithm of the odds is called the \textbf{log-odds}. 306 | 307 | \item There is no closed form solution when OLS is used. Hence numerical methods like \textbf{gradient descent} are used to estimate the parameters of the Logistic Regression Model. 308 | \end{itemize} 309 | 310 | \subsection{Contingency Table and Metrics} 311 | \begin{itemize} 312 | \item A confusion matrix for a binary classification problem is as follows 313 | 314 | \begin{figure}[!ht] 315 | \centering 316 | \begin{tabular}{|c|c|c|} 317 | \hline 318 | & Predicted True & Predicted False \\ 319 | \hline 320 | Actual True & TP & FN \\ 321 | \hline 322 | Actual False & FP & TN \\ 323 | \hline 324 | \end{tabular} 325 | \end{figure} 326 | 327 | \item The following metrics are defined from these quantities: 328 | \begin{align*} 329 | Accuracy &= \frac{TP}{TP+TN+FP+FN}\\ 330 | Precision &= \frac{TP}{TP+FP}\\ 331 | Recall &= \frac{TP}{TP+FN} \text{ also known as sensitivity}\\ 332 | Specificity &= \frac{TN}{TN+FP}\\ 333 | F_1 &= \frac{2*Precision*Recall}{Precision + Recall}\\ 334 | J &= Specificity + Recall - 1 335 | \end{align*} 336 | 337 | \item J is the \textbf{Youden's J Statistic} 338 | \end{itemize} 339 | \end{document} -------------------------------------------------------------------------------- /src/HP/UE18CS342_HP_Unit1/flynn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/HP/UE18CS342_HP_Unit1/flynn.png -------------------------------------------------------------------------------- /src/HP/UE18CS342_HP_Unit2/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=1in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{amsmath} 6 | \usepackage{amsfonts} 7 | \usepackage{tabularx} 8 | \usepackage{minted} 9 | \usepackage{algorithmic} 10 | 11 | \title{UE18CS342 \\Heterogeneous Parallelism \\Unit 2} 12 | \author{Aronya Baksy} 13 | \date{March 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | \section{Superscalar Architectures} 18 | \begin{itemize} 19 | \item Superscalar CPU architectures implement ILP inside a single processor that allows for greater throughput at the same clock rate as a scalar pipelined processor. 20 | 21 | \item 22 | \end{itemize} 23 | \subsection{Parallel Pipeline} 24 | \begin{itemize} 25 | \item Multiple instruction pipelines that run instructions simultaneously 26 | 27 | \item Instructions are issued from a sequential stream. The CPU dynamically checks for dependencies between instructions at runtime. 28 | 29 | \item Multiple instructions can be executed in a single clock cycle, as against a single pipeline that has an upper throughput limit of 1 Instruction per Cycle. 30 | \end{itemize} 31 | 32 | \subsection{Diversified Pipeline} 33 | \begin{itemize} 34 | \item Within a single pipeline, maintain different functional units that can operate simultaneously 35 | 36 | \item Each FU is not a separate CPU core, rather an execution resouce within the CPU (such as an ALU, FPU, multiplier, barrel shifter etc.) 37 | 38 | \item Requires scheduling to maximize the utilization of the Functional Units, as well as to minimize any structural hazards 39 | \end{itemize} 40 | 41 | \subsection{Dynamic Pipelines} 42 | \begin{itemize} 43 | \item Making use of dispatch units and reorder buffers to allow for in-order issue, out of order execution and in-order completion 44 | 45 | \item This allows the processor to schedule instructions \textit{around} stalls (i.e. If a stall occurs, the processor can schedule other instructions to be executed until the stall is resolved) 46 | \end{itemize} 47 | 48 | \subsection{Approaches to Multithreading} 49 | \subsubsection{Fine-Grained Multithreading} 50 | \begin{itemize} 51 | \item Switches threads on every clock cycle. One instruction from each thread is executed before context switches to the next thread 52 | 53 | \item Threads are scheduled in a round-robin manner, skipping over any stalled threads 54 | 55 | \item \textbf{Advantage}: It can hide both short and long stalls, since instructions from other threads executed when one thread stalls 56 | 57 | \item \textbf{Disadvantage}: Slows down the execution of threads that are waiting and can execute without any stalls 58 | \end{itemize} 59 | 60 | \subsubsection{Coarse-Grained Multithreading} 61 | \begin{itemize} 62 | \item Threads switched only on costly stalls, such as L2 cache misses 63 | 64 | \item \textbf{Advantages}: no need for fast thread-switching, high performance of current thread (as long as it doesn't stall for too long) 65 | 66 | \item \textbf{Disadvantages}: Short stalls cause high throughput loss due to the time needed to empty the current pipeline and refill it with instructions from the new thread 67 | \end{itemize} 68 | 69 | \subsubsection{Simultaneous Multithreading} 70 | \begin{itemize} 71 | \item In simultaneous multithreading, instructions from more than one thread can be executed in any given pipeline stage at a time. 72 | 73 | \item The main architecture changes needed are the ability to fetch instructions from multiple threads in a cycle, and a larger register file to hold data from multiple threads 74 | 75 | \item The independent state of each thread is duplicated. Thread state involves: 76 | \begin{enumerate} 77 | \item Program Counter (PC) 78 | 79 | \item Register file, and mapping between physical and logical registers 80 | 81 | \item I and D caches 82 | 83 | \item Branch predictor 84 | 85 | \item Re-order Buffer 86 | \end{enumerate} 87 | 88 | \item Thread switching hardware allows for faster context switching than processes (100s or at most 1000s of clock cycles for threads) 89 | \end{itemize} 90 | 91 | \subsubsection{Resource Utilization} 92 | \begin{itemize} 93 | \item Superscalar processor has high under-utilization – not enough work every cycle, especially when there is a cache miss 94 | 95 | \item Fine-grained multithreading can only issue instructions from a single thread in a cycle – can not find max work every cycle, but cache misses can be tolerated 96 | 97 | \item Simultaneous multithreading can issue instructions from any thread every cycle – has the highest probability of finding work for every issue slot 98 | \end{itemize} 99 | \section{Laws of Parallelism} 100 | \subsection{Amdahl's Law} 101 | \begin{itemize} 102 | \item "The speedup of a program using multiple processors in parallel is limited by the time needed for the sequential fraction of the program" - Gene Amdahl, 1967 103 | 104 | \item Mathematically, 105 | 106 | \begin{equation} 107 | S = \frac{1}{s + \frac{1-s}{P}} 108 | \end{equation} 109 | 110 | where $S$ is the speedup obtained, $s$ is the sequential (serial) fraction of the program (hence $1-s$ is the parallelizable fraction) and $P$ is the number of processing units available to work in parallel. 111 | 112 | \item As $P \rightarrow \infty$, we have $S \rightarrow \frac{1}{s}$ (the \textbf{maximum theoretical speedup}, which clearly depends only on the serial fraction $s$) 113 | \end{itemize} 114 | \subsection{Generalized Amdahl's Law} 115 | \begin{itemize} 116 | \item Let $s$ and $f$ be two parts of a program. We have 117 | \begin{equation*} 118 | s + f = 1 119 | \end{equation*} 120 | 121 | \item Now, the part $f$ is sped up by $F$ times. As a result of this, the speedup $S$ is calculated as: 122 | \begin{align} 123 | S &= \frac{s+f}{s + \frac{f}{F}} \\ 124 | \implies S &= \frac{1}{s + \frac{f}{F}} \\ 125 | \implies S &= \frac{1}{ (1-f) + \frac{f}{F}} 126 | \end{align} 127 | \end{itemize} 128 | 129 | \subsubsection{Takeaway from Amdahl's Law} 130 | \begin{itemize} 131 | \item Make the common case fast; reduce the serialized portion, rather than focus on adding more processing units 132 | 133 | \item Only for programs where parallel fraction is large, does adding more processors help 134 | 135 | \item Amdahl's law works only for a fixed problem size (does not scale with larger problems) 136 | \end{itemize} 137 | 138 | \subsection{Gustafson's Law} 139 | \begin{itemize} 140 | \item Scaling the problem size along with the increase of machine size within the same execution time 141 | 142 | \item The speedup gained from $N$ processors is given as: 143 | \begin{equation} 144 | S = N + (1-N)s 145 | \end{equation} 146 | where $S$ is the speedup, $s$ is the serial fraction (i.e. the one that is not affected by increase in resources) 147 | \end{itemize} 148 | 149 | \subsubsection{Takeaway from Gustafson Law} 150 | \begin{itemize} 151 | \item Derived by fixing the parallel execution time (rather than the problem size that is fixed by Amdahl's Law) 152 | 153 | \item Amdahl's law turns out to be too conservative for high performance computing. 154 | 155 | \item For many real world applications, Gustafson's Law makes more sense (If you have more resources you can do more work, LOL) 156 | \end{itemize} 157 | 158 | \section{Drawbacks of both laws} 159 | \begin{itemize} 160 | \item Neither take into account the overhead of synchronization, communication, OS, etc., or the fact that loads may not be equally balanced between processors 161 | \end{itemize} 162 | 163 | \section{Parallel Computing} 164 | \subsection{Approaches to Parallel Computing} 165 | \subsubsection{Extend language} 166 | \begin{itemize} 167 | \item Add functionality for creating, terminating and synchronizing processes, as well as IPC mechanisms 168 | 169 | \item Pros: Easy, quick, least expensive, leverages existing compiler technology, fast delivery of software after new parallel hardware is released 170 | 171 | \item Cons: Lack of support for bug detection, easy to incorporate bugs that can be hard to catch 172 | \end{itemize} 173 | 174 | 175 | \subsubsection{Extend compilers} 176 | \begin{itemize} 177 | \item Compilers detect parallelism in sequential programs, and produce a parallelized executable 178 | 179 | \item Pros: leverage existing sequential code, no reskilling needed for programmers, easier to program sequentially than in parallel 180 | 181 | \item Cons: Performance of parallelizing compilers on broad range of applications still not very encouraging 182 | \end{itemize} 183 | 184 | \subsection{Multithreaded Programming Model} 185 | \begin{itemize} 186 | \item Programmer explicitly creates multiple threads, uses shared memory for load/store 187 | 188 | \item Pre-emptive multithreading (part of thread scheduling) is managed by the Operating System 189 | 190 | \item Use cases: GUI programs, handling I/O latencies, expressing parallelism using TLP 191 | \end{itemize} 192 | 193 | \subsection{GPGPU Computing} 194 | \begin{itemize} 195 | \item GPUs are specialized processors designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. 196 | 197 | \item GPUs are mainly optimized for 2D graphics (that involve bit-block transfers), and raster graphics (that are expressed as 2D rectangular arrays of pixels) 198 | 199 | \item GPUs are examples of throughput-oriented architecture: 200 | \begin{itemize} 201 | \item Small caches for high memory throughput 202 | 203 | \item Simple control logic with no forwarding and branch prediction 204 | 205 | \item Large number of energy efficient ALUs that are heavily pipelined for high throughput 206 | 207 | \item Require massive number of threads to have latencies in tolerable range 208 | \end{itemize} 209 | 210 | \item Devote more transistors to data processing rather than flow control and caching 211 | 212 | \item GPUs have fine-grained and lightweight threads, with poor single-thread performance 213 | \end{itemize} 214 | 215 | \subsubsection{CUDA} 216 | \begin{itemize} 217 | \item Compute Unified Device Architecture, an Nvidia proprietary scalable parallel programming model and software environment for parallel programming 218 | 219 | \item CUDA is the most common platform for General Purpose computing using GPUs. It is exposed to programmers using extensions for C, C++ and Fortran languages. 220 | 221 | \item Easy integration, high efficiency with mathematical computations (especially matrix-vector computations). Can execute code with high levels of data parallelism, reuse and regularity 222 | 223 | \item Disadvantages: GPU harder to program (poor compiler support, architecture differences), architecture (especially poor single-thread performance) is a bottleneck for serious GP computing 224 | \end{itemize} 225 | 226 | \subsection{Parallel Programming} 227 | \begin{itemize} 228 | \item Most common approach is thread-level. Programmers launch threads (lightweight sub-units of a process) and each thread performs a sub-task 229 | 230 | \item The OS takes care of allocating threads to the relevant hardware, and thread scheduling 231 | 232 | \item Most thread-based programming uses the \textit{fork/join model}, wherein the program starts with a main thread, then multiple threads are launched (for the parallel execution) and these threads are joined to the main thread once they complete their task 233 | 234 | \item Threads within a process share code and shared variables, as well as resources (like open files, signals). But each thread has its own PC, register set and stack. 235 | 236 | \item When many threads are simultaneously manipulating a single shared variable, there is a chance of inconsistency depending on the sequence in which the variable is manipulated. This is called a \textbf{race condition} 237 | 238 | \item Synchronization primitives (like mutexes and semaphores) are used to tell the compiler that a shared variable is to be protected from random parallel access. 239 | \end{itemize} 240 | 241 | \subsection{False Sharing} 242 | \begin{itemize} 243 | \item False Sharing occurs when threads on different processors modify variables that reside in the same cache block 244 | 245 | \item It is called false sharing because each thread is actually not sharing access to the same variable 246 | 247 | \item False sharing does not occur when processor word size and cache block size are equal. It does occur when cache block is larger than processor word size. 248 | 249 | \item If one core writes, the cache line holding the memory line is invalidated on other cores. Even though another core may not be using that data (reading or writing), it may be using another element of data on the same cache line. The second core will need to reload the line before it can access its own data again. 250 | 251 | \item The cache hardware ensures data coherency, but at a potentially high performance cost if false sharing is frequent. 252 | 253 | \item Solution is to force the variables into 2 different cache lines, using \textbf{padding}. 254 | \end{itemize} 255 | 256 | \end{document} -------------------------------------------------------------------------------- /src/HP/UE18CS342_HP_Unit3/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=1in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{amsmath} 6 | \usepackage{amsfonts} 7 | \usepackage{tabularx} 8 | \usepackage{minted} 9 | \usepackage{algorithmic} 10 | 11 | \title{UE18CS342 \\Heterogeneous Parallelism \\Unit 3} 12 | \author{Aronya Baksy} 13 | \date{March 2021} 14 | 15 | 16 | \begin{document} 17 | \maketitle 18 | 19 | \section{OpenMP} 20 | \begin{itemize} 21 | \item Open Specification for Multi Processing, uses threads and shared memory to allow parallel execution of tasks. 22 | 23 | \item It is implemented for C/C++/Fortran. The main components of OpenMP are 24 | \begin{itemize} 25 | \item Compiler Directives 26 | 27 | \item Runtime library routines 28 | 29 | \item Environment variables 30 | \end{itemize} 31 | 32 | \item Features of OpenMP: 33 | \begin{itemize} 34 | \item Communication via shared memory: variables may be unique to a thread or shared between all threads 35 | 36 | \item Explicit parallelism (representation of concurrent computations by means of primitives in the form of special-purpose directives or function calls.) 37 | 38 | \item Fork-join model (start with one thread, spawn multiple threads for the parallel part, then join all of them back to the main thread) 39 | \end{itemize} 40 | 41 | \item Unintended sharing of data can lead to race conditions (when the program’s outcome changes as the threads are scheduled differently) 42 | 43 | \item Synchronization primitives are used to control race conditions. But improper use of such primitives leads to deadlocks. 44 | \end{itemize} 45 | \begin{figure}[!h] 46 | \centering 47 | \begin{minted}{c} 48 | #include 49 | #include 50 | int main() 51 | { 52 | #pragma omp parallel 53 | { 54 | //Print the thread ID of the current thread 55 | //Number of threads = OMP_NUM_THREADS 56 | printf("Hello from thread number %d\n", omp_get_thread_num()); 57 | } 58 | } 59 | \end{minted} 60 | \caption{OpenMP code example} 61 | \end{figure} 62 | 63 | \subsection{OMP Runtime Library functions} 64 | \begin{itemize} 65 | \item The \texttt{omp\_get\_thread\_num()} function returns the thread ID of the current thread (returns an int value between 0 and numthreads-1) 66 | 67 | \item The \texttt{omp\_get\_num\_threads()} function returns the total number of threads 68 | 69 | \item The \texttt{omp\_set\_num\_threads(n)} function sets the total number of threads for all upcoming parallel regions. 70 | 71 | \item The \texttt{omp\_get\_num\_procs()} function returns the total number of processors 72 | \end{itemize} 73 | 74 | \subsection{OMP Directives} 75 | \begin{itemize} 76 | 77 | \item The directive \texttt{\#pragma omp parallel [clause [clause ]...]} and the flower brackets after it denote the parallel region of the program. 78 | 79 | \item \texttt{clause} is either \texttt{private(varlist)}, \texttt{shared(varlist)} or \texttt{default(type)} 80 | 81 | \item The default clause allows to specify the default type of variables inside the parallel region. 82 | 83 | \item The directive \texttt{\#pragma omp for} distributes the next for loop it encounters across the threads created. If it is placed aobve a nested loop then it applies only to the first outer loop and not the inner loops after it (the inner loops still run in serial on each thread from start to end) 84 | \end{itemize} 85 | 86 | \subsection{OMP Work Sharing Constructs} 87 | \begin{tabular}{|p{0.45\linewidth}|p{0.45\linewidth}|} 88 | \hline 89 | \textbf{C/C++ Syntax} & \textbf{Functionality} \\ 90 | \hline 91 | \texttt{\#pragma omp for} & Distribute iterations over the threads\\ 92 | \hline 93 | \texttt{\#pragma omp sections} & Distribute independent work units over threads\\ 94 | \hline 95 | \texttt{\#pragma omp section} & One work unit that is executed on one thread \\ 96 | \hline 97 | \texttt{\#pragma omp single} & Only one thread executes a code block. The other threads wait at a \textbf{barrier} until the thread executing the single code block has completed\\ 98 | \hline 99 | \end{tabular} 100 | 101 | \subsection{OMP Shared and Private Variables} 102 | \begin{itemize} 103 | \item In the \texttt{\#pragma omp parallel} the clause fields allow one to specify a list of shared and private variables. 104 | 105 | \item By default, all variables are \textbf{shared} between the threads. If \texttt{default(none)} is specified then each variable has to be declared explicitly inside parallel region. 106 | 107 | \item Generally read only variables are shared (they can not accidently be over written) and main arrays are shared. 108 | 109 | \item A variable that is \textbf{private} can only be read or written by its own thread. 110 | 111 | \item When a variable is declared as private, a new object of the same type is declared once for each thread and all references to the original object are replaced with references to the new object. 112 | 113 | \item Loop indices and loop temporaries are generally made private. 114 | 115 | \item \textbf{Threadprivate} variables are variables that are private to one thread only, but persist even after the completion of the parallel region. This is possible as they are declared on the heap instead of the stack. 116 | 117 | \item The value of a threadprivate variable after the parallel region is the value it had in the initial master thread. 118 | \end{itemize} 119 | 120 | \subsection{OMP Storage Associations} 121 | \begin{itemize} 122 | \item Private variables inside a parallel region have no association with the same variables outside the parallel region (private vars are undefined on entry and exit of parallel region) 123 | 124 | \item The \textbf{firstprivate} clause specifies that each thread should have its own instance of a variable, and that the variable should be initialized with the value of the variable, because it exists before the parallel construct. 125 | 126 | \item The \textbf{lastprivate} clause specifies that the enclosing context's version of the variable is set equal to the private version of whichever thread executes the final iteration (for-loop construct) or last section. 127 | 128 | \item \textbf{Disadvantage}: performance penalty in using lastprivate becuase openMP needs to keep track of the value and which thread executed the last iteration (easy for static workloads but costly for dynamic workloads) 129 | \end{itemize} 130 | 131 | \subsection{OMP Scheduling} 132 | \begin{itemize} 133 | \item The \texttt{schedule} clause allows one to specify how loop iterations should be scheduled between threads. The default scheduling behaviour (in the absence of a schedule clause) is stored in the \texttt{def-sched-var} variable 134 | 135 | \item The general syntax of the schedule clause is \texttt{\#pragma omp $<$dir$>$ schedule(type, chunk)}. 136 | \end{itemize} 137 | 138 | \subsubsection{Scheduling Types} 139 | \begin{itemize} 140 | \item \textbf{Static}: The loop iteration space is divided into chunks of size \texttt{chunksize} and assigned in a round-robin manner to each thread (in order of their thread ID). When no chunk size is specified the chunk size is automatically calculated (most evenly across threads) 141 | 142 | \item \textbf{Dynamic}: Chunks of iterations are assigned to threads as they are requested by the thread. Each thread executes a chunk and requests another until no more chunks are available. 143 | 144 | \item Dynamic scheduling has higher overheads due to runtime distribution but it is appropriate if the thread workloads are not balanced. 145 | 146 | \item \textbf{Guided}: Similar to dynamic scheduling in that chunks are assigned to threads on request until all chunks are exhausted. The chunk size is calculated on the fly 147 | 148 | \item The chunk size is proportional to the number of unassigned iterations divided by the number of the threads. Therefore the size of the chunks decreases exponentially as work proceeds 149 | 150 | \item Minimum size of a chunk is chunksize (specified) except for the last chunk which can have size less than chunksize. 151 | 152 | \item \textbf{Runtime}: The scheduling decision is deferred till runtime. The \texttt{OMP\_SCHEDULE} environment variable and the \texttt{omp\_set\_schedule()} function are used to change this. 153 | \end{itemize} 154 | 155 | \subsection{Limitations of OMP Threads} 156 | \begin{itemize} 157 | \item Even though more number of threads are available, the sections are limited to the declarations. 158 | 159 | \item Assuming two sections that execute \texttt{funcA()} and \texttt{funcB()}: 160 | \begin{itemize} 161 | \item If only one thread is available, both calls are executed in sequential order. 162 | 163 | \item Depending on the type of work performed in the various code blocks and the number of threads used, this might lead to a Load-Balancing problem. 164 | 165 | \item This occurs when threads have different loads and thus take different amounts of time to complete. 166 | 167 | \item A result of load imbalance is that some threads may wait a long time at the next barrier in the program, which means that the h/w resources are not being utilized efficiently 168 | \end{itemize} 169 | 170 | \end{itemize} 171 | 172 | \section{Parallel Programming} 173 | \subsection{Loop Optimizations} 174 | \begin{itemize} 175 | \item \textbf{Loop Interchange} is applicable in case of nested loops. When a 2D array is being accessed in column major order, the cache utilization takes a hit (assuming that data is loaded from memory in row-major order). In this case swapping the inner and outer loops increases performance. 176 | 177 | \item Loop overheads come from pointer arithmetic that has to be done in case of array indexing accesses. 178 | 179 | \item Overheads are high when each loop has small number of operations. \textbf{Loop unrolling} puts more operations in each iteration and reduces number of iterations, therefore overheads are reduced. 180 | 181 | \item \textbf{Loop Fusion} (combining separate loops into one when feasible) increases cache utilization and hence reduces memory access latencies. Apply when same array is manipulated in separate loops. 182 | 183 | \item \textbf{Loop Fission}, i.e. splitting one loop into separate loops in an effort to increase cache utilization, can also be applied. 184 | 185 | \item \textbf{Loop tiling} partitions a loop's iteration space into smaller chunks or blocks, so as to help ensure data used in a loop stays in the cache until it is reused. 186 | 187 | \item Loop tiling leads to partitioning of a large array into smaller blocks, thus fitting the accessed array elements into cache size and increasing cache utilization. 188 | \end{itemize} 189 | 190 | \subsection{Memory Models} 191 | \subsubsection{Shared Memory} 192 | \begin{itemize} 193 | \item Threads share a common address space that is concurrently read from/written to 194 | 195 | \item Access control for concurrent operations is maintained via primitives such as locks/mutexes/semaphores 196 | 197 | \item Advantage: there is no ownership of memory by any one task hence no need to explicitly specify the flow of data between the tasks 198 | 199 | \item Disadvantage: Difficult to manage data locality (performance improvement by keeping data local to the same processor, reduces memory access, cache access, bus traffic) 200 | \end{itemize} 201 | 202 | \subsubsection{Message Passing Model} 203 | \begin{itemize} 204 | \item Tasks residing on either the same machine or arbitrary number of physical machines, each using their own local memory during computation 205 | 206 | \item Data exchange between tasks is done by sending and receiving messages 207 | 208 | \item Advantage: easier to implement than shared memory, and tolerant to high latencies in communication 209 | 210 | \item Disadvantage: Slower communication than the shared memory model because of connection setup overhead 211 | \end{itemize} 212 | 213 | \subsubsection{Data Parallel Model} 214 | \begin{itemize} 215 | \item The working data is organized in a single common data structure. Each task works in parallel on different partitions of the data structure 216 | 217 | \item On distributed memory systems, the data structure is split into chunks with each chunk residing on the local memory of each task. 218 | 219 | \item On shared memory systems all tasks have access to the data via the global memory. 220 | \end{itemize} 221 | 222 | \subsection{Memory Consistency Models} 223 | \begin{itemize} 224 | \item The Memory Consistency model of a shared memory multiprocessor provides a formal specification of how the memory system will appear to the programmer, eliminating the gap between the expected behaviour and the actual system behaviour 225 | 226 | \item Superscalar processors can reorder memory accesses, and executes 2 memory accesses in sequence as long as they don't modify the same data. 227 | 228 | \item A processor may reorder memory accesses e.g. due to lockup-free caches, multiple issue, or write buffer bypassing. 229 | \end{itemize} 230 | 231 | \subsubsection{Lockup-Free Caches} 232 | \begin{itemize} 233 | \item In such a cache, if one cache miss occurs then the cache can still continue to serve other cache requests instead of locking the memory bus waiting for the fresh data to arrive. 234 | 235 | \item This allows for reordering of memory accesses. Superscalar processors make use of this to reorder, thus in the event of a cache miss the execution continues until the data from the cache miss is actually needed again. 236 | 237 | \item Data prefetching caches load memory predictively before it is to be used. Such behaviour requires a lockup-free cache (aka a non-blocking cache) 238 | \end{itemize} 239 | 240 | \subsubsection{Write Buffer Bypassing} 241 | \begin{itemize} 242 | \item First level write buffer exists between L1 and L2 cache (allows L2 to service reads in the meantime). Second level write buffer exists between L2 and the memory bus interface 243 | 244 | \item By letting read misses bypass writes in the buffer to other addresses, the reads can be serviced faster. This involves reordering memory accesses. 245 | 246 | \item A superscalar processor has queues in the load-store functional unit where accesses also can be reordered. 247 | \end{itemize} 248 | 249 | \subsection{Sequential Consistency} 250 | \begin{itemize} 251 | \item A multiprocessor system is sequentially consistent if the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and this order is the same as the order specified in the program. 252 | 253 | \item Basically, a write to a variable by any processor needs to be seen instantaneously by all processors. 254 | 255 | \item Intuitively reasonable reordering of memory operations in a uniprocessor may violate sequential consistency model 256 | 257 | \item Modern microprocessors reorder operations all the time to obtain performance (write buffers, overlapped writes,non-blocking reads…). 258 | \end{itemize} 259 | 260 | \subsection{Relaxed Consistency} 261 | \begin{itemize} 262 | \item All memory operations are classed as either synchronization or data operations. 263 | 264 | \item A sync operation is like a fence. All data operations before a sync operation must be completed before the sync is executed. Data operations before a sync can be reordered 265 | 266 | \item Sync operations always in program order, by disallowing reordering of operations around them. 267 | 268 | \item The Flush directive in OMP provides the strength to synchronization operation \texttt{\#pragma omp flush (list)}. It tells the OpenMP compiler to generate code to make the thread's private view on the shared memory consistent again. 269 | 270 | \item The flush operation implicitly takes pace around: 271 | \begin{itemize} 272 | \item Barriers 273 | 274 | \item Entry/Exit from Parallel, Parallel work-sharing, critical regions 275 | 276 | \item Lock functions 277 | 278 | \item Entry to and Exit from atomic operations 279 | \end{itemize} 280 | \end{itemize} 281 | 282 | \subsection{Release Consistency} 283 | \begin{itemize} 284 | \item A further weakening of the weak ordering that is implemented in relaxed consistency. 285 | 286 | \item All sync operations have 2 parts: 287 | \begin{itemize} 288 | \item \textbf{Acquire}: Acquire must complete before all following memory operations 289 | 290 | \item \textbf{Release}: All memory access operations before release must complete, accesses after release in program order need not wait for release. 291 | \end{itemize} 292 | 293 | \item Assume that two processors P1 and P2 hold a lock L. 294 | 295 | \item In the \textbf{early release}, P1 after Release(L) broadcasts value of L to all processors for coherence operation. Even processors who do not have x will get the message 296 | 297 | \item In the \textbf{lazy release}, No broadcast when P1 release the lock, but when P2 acquires the lock, the system has to make sure all coherence before acquire of lock has to be completed. Reduces messages hence less bandwidth consumed. 298 | \end{itemize} 299 | 300 | \end{document} -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit1/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/IR/UE18CS332_IR_Unit1/ir.png -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit2/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/IR/UE18CS332_IR_Unit2/img1.png -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit2/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/IR/UE18CS332_IR_Unit2/p1.png -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit2/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/IR/UE18CS332_IR_Unit2/p2.png -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit3/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[a4paper, portrait, margin=1in]{geometry} 3 | \usepackage{tabularx} 4 | \usepackage{graphicx} 5 | \usepackage{amsmath} 6 | \usepackage{amsfonts} 7 | \usepackage{algorithm} 8 | \usepackage[noend]{algpseudocode} 9 | 10 | 11 | \title{AIW \& Information Retrieval (UE18CS322)\\Unit 3} 12 | \author{Aronya Baksy} 13 | \date{March 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | \section{Evaluation Metrics for IR Systems} 18 | \begin{itemize} 19 | \item Evaluation may be done quantitatively in terms of 20 | \begin{itemize} 21 | \item Index construction time 22 | 23 | \item Search Time (queries per second) 24 | 25 | \item Cost per query (engg cost vs revenue gained) 26 | 27 | \item User satisfaction (UI, speed, relevance) 28 | \end{itemize} 29 | 30 | \item In web search, the user is either a \textbf{searcher} (rate of return of search engine) or an \textbf{advertiser} (click through rate). Both their satisfaction are correlated 31 | 32 | \item In an enterprise setting, \textbf{buyers} (time to purchase, fraction of “conversions” of searchers to buyers), \textbf{sellers} ( profit per item sold) and \textbf{executives} (company profit) are the users. Buyer satisfaction is correlated with seller/executive satisfaction. 33 | 34 | \item Relevance always measured w.r.t. \textbf{information need}, not actual queries. 35 | \end{itemize} 36 | 37 | \subsection{Relevance Benchmark} 38 | \begin{itemize} 39 | \item Consists of a benchmark corpus, information needs expressed as queries, and a binary judgement of relevance for each query-doc pair. 40 | \end{itemize} 41 | 42 | \subsubsection{Cranfield experiments} 43 | \begin{itemize} 44 | \item Premise: Retrieved documents’ relevance is a good proxy of a system’s utility in satisfying users’ information need 45 | 46 | \item Procedure: 47 | \begin{enumerate} 48 | \item 1398 abstracts from journal articles on aerodynamics, and 225 queries. 49 | 50 | \item Exhaustive relevance judgments of all (query, document) pairs 51 | 52 | \item Compare different indexing system over this collection 53 | \end{enumerate} 54 | \end{itemize} 55 | 56 | \subsubsection{TREC Benchmark} 57 | \begin{itemize} 58 | \item Text Retrieval Conference, organized by the NIST (USA). The most popular benchmark from this set is the TREC Ad Hoc used between 1992 and '99. 59 | 60 | \item 1.89 million documents, mainly NewsWire articles, 450 information needs 61 | 62 | \item No exhaustive relevance judgments – too expensive 63 | 64 | \item Rather, NIST assessors’ relevance judgments are available only for the top $K$ documents returned by a system which was entered in the TREC evaluation 65 | 66 | \item \textbf{GOV2} is another TREC/NIST collection consisting of 25 million webpages. 67 | 68 | \item \textbf{NTCIR} for East Asian languages, and cross-language IR 69 | \end{itemize} 70 | 71 | \subsection{Unranked Evaluation} 72 | \begin{figure} 73 | \centering 74 | \includegraphics[scale=0.9]{p1.png} 75 | \caption{Confusion Matrix} 76 | \label{fig:my_label} 77 | \end{figure} 78 | \begin{itemize} 79 | \item Precision : fraction of retrieved documents that are relevant. Recall: fraction of relevant documents that were retrieved. 80 | 81 | \item Precision prefers systems that retrieve less number of highly relevant documents, Recall prefers high number of retrieved documents. 82 | 83 | \item Precision decreases as the number of retrieved documents increases (unless in perfect ranking), while recall keeps increasing 84 | 85 | \item The F-score is a combination of the precision and recall: 86 | \begin{align} 87 | P &= \frac{TP}{TP+TN} \\ 88 | R &= \frac{TP}{TP+FN} \\ 89 | F &= \frac{1}{\frac{\alpha}{P} + \frac{1-\alpha}{R}} 90 | \end{align} 91 | 92 | \item The HM is used as it is a smooth minimum, and it punishes bad performance on either the P or the R. It is known that $HM \le GM \le AM$ 93 | 94 | \item AM for a naive engine that simply returns everything as result is 0.5 which is too high. 95 | \end{itemize} 96 | 97 | \subsection{Ranked Evaluation} 98 | \begin{itemize} 99 | \item Equation (3) can also be written as 100 | \begin{align} 101 | F &= \frac{1}{\frac{\alpha}{P} + \frac{1-\alpha}{R}} = \frac{(\beta+1)PR}{\beta P + R} \\ 102 | \beta &= \frac{1-\alpha}{\alpha} 103 | \end{align} 104 | 105 | \item $\beta < 1$ emphasizes precision, $\beta > 1$ emphasizes recall. 106 | 107 | \item On one query, different systems tend to perform the same. On different queries, there is large variance in performance of a single system 108 | 109 | \item COmputing P and R for top 1, 2, 3, 4, and so on documents leads to a P-R curve (P on vertical, R on horizontal). A P-R curve is a sawtooth: 110 | \begin{itemize} 111 | \item Next document considered is irrelevant, hence recall constant but precision reduces (vertical decrease) 112 | 113 | \item Next document considered is relevant, hence recall and precision increase, a rightward upward movement. 114 | \end{itemize} 115 | 116 | \item Interpolate the points by taking maximum of all future points 117 | 118 | \item The \textbf{Mean Average Precision} (MAP) is a summary measure derived from the graph. 119 | 120 | \item For single information need, average precision is the average of the precision value obtained for the set of top K documents existing after each relevant document is retrieved 121 | 122 | \item MAP is the average of average precisions over all the queries considered. 123 | 124 | \item For a single query, average precision approximates the area under the precision recall curve 125 | 126 | \item Set of information needs should be diverse for MAP to be an effective measure across systems 127 | \end{itemize} 128 | 129 | \end{document} -------------------------------------------------------------------------------- /src/IR/UE18CS332_IR_Unit3/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/IR/UE18CS332_IR_Unit3/p1.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/ml1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/ml1.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/ml2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/ml2.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/ml3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/ml3.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/ml4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/ml4.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/ml5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/ml5.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit1/prec_recl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit1/prec_recl.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit2/err.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit2/err.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit2/img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit2/img.jpg -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit2/svm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ML/UE18CS303_ML_Unit2/svm.png -------------------------------------------------------------------------------- /src/ML/UE18CS303_ML_Unit3/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{algorithm} 4 | \usepackage{algpseudocode} 5 | \usepackage{amsmath} 6 | \usepackage{amsthm} 7 | \usepackage{amsfonts} 8 | \usepackage{graphicx} 9 | \usepackage{geometry} 10 | \geometry{a4paper, portrait, margin=1in} 11 | 12 | \theoremstyle{plain} 13 | \newtheorem{thm}{Theorem} 14 | 15 | \theoremstyle{definition} 16 | \newtheorem{defn}{Definition} % definition numbers are dependent on theorem numbers 17 | \newtheorem{exmp}{Example} % same for example numbers 18 | 19 | \title{Machine Intelligence (UE18CS303) \\ 20 | \large Unit 3} 21 | \author{Aronya Baksy} 22 | \date{October 2020} 23 | 24 | \begin{document} 25 | \maketitle 26 | \section{Ensemble Learning} 27 | \begin{itemize} 28 | \item Ensemble Learning is a pseudo-algorithm wherein \textit{multiple learning} algorithms are combined in a way that offers better performance than the constituent algorithms alone. 29 | 30 | \item Usually the models used in Ensemble learning are known as \textbf{weak learners}. Weak learners are those that deliver only slightly better performance than just randomly choosing predicting labels (which gives an accuracy of 0.5). 31 | 32 | \item An ensemble learning consists of constructing multiple, diverse predictive models from \textit{adapted versions} of the training data (most often reweighted or resampled) 33 | 34 | \item Ensemble learning takes in multiple models having \textbf{high bias} (ie. very simple models), which when run together, produce a low-bias and low-variance classification output. 35 | 36 | \item The combined hypothesis space of the combination of learners may not be completely overlapping with the hypothesis space of the individual constituent learners. 37 | 38 | \item Following are some key ideas on ensemble learning: 39 | \begin{itemize} 40 | \item Ensemble learning can reduce overfitting (overfitting is an outcome of high variance). 41 | 42 | \item The confidence in the outcome of the ensemble model is 43 | \begin{equation*} 44 | C = 1 - (1-A)^n 45 | \end{equation*} 46 | Assuming that all learners have same accuracy $A$ (this is not a nice assumption in real world). 47 | 48 | \item Let $n_1$ learners predict class $c_1$ and $n_2$ learners predict class $c_2$. Let us assume with no loss of generality that $n_1 > n_2$. Then the probability that the class is actually class $c_1$ is: 49 | \begin{equation*} 50 | C(n, n_2) A^n (1-A)^{n-n_2} 51 | \end{equation*} 52 | where $n = max(n_1, n_2)$ 53 | 54 | \item The final prediction from $N$ learners can be made using: 55 | \begin{equation*} 56 | y = \sum_{i=1}^n w_i d_i 57 | \end{equation*} 58 | Where $w_i$ is the weight given to the learner $i$ and $d_i$ is the prediction made by learner $i$. 59 | 60 | \item The weights can be assigned in proportion to the accuracy of that learner, or in inverse proportion to their variance. 61 | 62 | \item The most important constraint in ensemble learning is that all the learners must be \textit{independent} of one another in terms of their parameters and all effects on one another. It should be possible to train all the models completely in parallel. 63 | 64 | \item Learners can be made independent through learning techniques like \textbf{bagging} and \textbf{boosting}. 65 | \end{itemize} 66 | \end{itemize} 67 | 68 | \subsection{Bagging} 69 | \begin{itemize} 70 | \item Let there be $k$ learners in the ensemble. From the original dataset of size $N$ (say), we create $k$ datasets each of size $N$ by doing random sampling with replacement from the original. 71 | 72 | \item The datasets will have approximately 63.2\% of the unique examples of the original data, with the rest being duplicates. 73 | 74 | \item The learners are independently run on their corresponding datasets. The final output is either a vote or an average of all the individual model outcomes. 75 | 76 | \item The error calculation for a learner $L_i$ using the dataset $D_i$ is done by running the learner $L_i$ on the examples that are a part of $D$ (the original dataset) but not $D_i$. The total error is the average error on all learners. 77 | 78 | \item The advantages of bagging are: 79 | \begin{itemize} 80 | \item Easy to implement and interpret 81 | 82 | \item Models can grow in parallel. 83 | 84 | \item Less variability than only DTs 85 | 86 | \item Heterogeneous data can be passed, no pre processing is needed. 87 | \end{itemize} 88 | \end{itemize} 89 | 90 | \subsection{Boosting} 91 | \begin{itemize} 92 | \item In a boosting setup, learners run serially and they learn from the misclassifications of the previous learners. 93 | 94 | \item Each learner has its own weight (weight by variance or accuracy as above). 95 | 96 | \item Each instance in the training dataset also has its own weight. When a learner $L_1$ makes a mistake on some instances, the next learner in the sequence $L_2$ is told to make other mistakes but it classifies the examples that $L_1$ went wrong in, correctly (this is done by assigning those instances a larger weight). 97 | 98 | \item All the learners use identical datasets (the original data) but with different instance weights. 99 | 100 | \item The final result is the weighted summation of all the individual learner results. 101 | \end{itemize} 102 | 103 | \subsection{AdaBoost (Adaptive Boosting)} 104 | \begin{itemize} 105 | \item Each instance in the training data (of size $N$ examples) has an initial weight $\frac{1}{N}$ 106 | 107 | \item Let the function $I(a, b)$ be defined as 108 | \begin{equation*} 109 | I(a, b) = \begin{cases} 110 | 1 \text{ if } a \ne b\\ 111 | 0 \text{ if } a=b 112 | \end{cases} 113 | \end{equation*} 114 | 115 | \item The error for the $m^{th}$ classifier is given as 116 | \begin{equation} 117 | \varepsilon_m = \sum\limits_{n=1}^{N} w_n^{(m)} I(y_n, t_n) 118 | \end{equation} 119 | 120 | \item The weight of the $m^{th}$ classifier is given as: 121 | \begin{equation} 122 | \alpha_m = \frac{1}{2}ln \left (\frac{1 - \varepsilon_m }{\varepsilon_m} \right ) 123 | \end{equation} 124 | 125 | \item Let $N_m$ be defined as 126 | \begin{equation*} 127 | N_m = e^{\alpha_m}\sum w_i \text{ for wrongly classified examples } + e^{-\alpha_m}\sum w_i\text{ for correctly classified examples} 128 | \end{equation*} 129 | 130 | \item Now the instance weights are modified for use by the $m+1^{th}$ classifier, as follows 131 | \begin{equation} 132 | w_n^{(m+1)} = \begin{cases} 133 | \frac{w_n^{(m)}}{N_m} e^{-\alpha_m} \text{ if }x_n^{(m)}\text{ is correctly classified}\\ 134 | \frac{w_n^{(m)}}{N_m} e^{+\alpha_m} \text{ if }x_n^{(m)}\text{ is wrongly classified} 135 | \end{cases} 136 | \end{equation} 137 | 138 | \item But, from equation (1) it is clear that 139 | \begin{align*} 140 | \sum w_i \text{ for wrongly classified examples } &= \varepsilon \\ 141 | \sum w_i \text{ for correctly classified examples } &= 1 - \varepsilon 142 | \end{align*} 143 | This gives 144 | \begin{equation} 145 | N_m = 2 \sqrt{\varepsilon(1-\varepsilon)} 146 | \end{equation} 147 | 148 | \item Substituting this in equation (3) gives 149 | \begin{equation} 150 | w_n^{(m+1)} = \begin{cases} 151 | \frac{w_n^{(m)}}{2(1-\varepsilon)} \text{ if }x_n^{(m)}\text{ is correctly classified}\\ 152 | \frac{w_n^{(m)}}{2\varepsilon} \text{ if }x_n^{(m)}\text{ is wrongly classified} 153 | \end{cases} 154 | \end{equation} 155 | 156 | \item Hence given a dataset $D$, number of learners as $T$ and the learning algorithm $A$, the AdaBoost Algorithm is summarized as: 157 | \end{itemize} 158 | 159 | \begin{algorithm} 160 | \caption{AdaBoost} 161 | \begin{algorithmic} 162 | \Procedure{AdaBoost}{D, T, A} 163 | \State $w_{i1} \gets \frac{1}{|D|}\text{ }\forall\text{ }x_i\in D$ 164 | \For{t =1 to T} 165 | \State Run $A$ on dataset D with weights $w_{i1}$ for ith example to get a model $M_t$ 166 | \State $\varepsilon_m \gets \sum\limits_{n=1}^{N} w_n^{(m)} I(y_n, t_n) $ 167 | \If{$\varepsilon_t \le 0.5$} 168 | \State \textbf{break} 169 | \EndIf 170 | \State $\alpha_t \gets \frac{1}{2}ln \left (\frac{1 - \varepsilon_m }{\varepsilon_m} \right )$ 171 | \State $w_{t+1}i \gets \frac{w_{(t)i}}{2\varepsilon} \text{ for wrongly classified}$ 172 | \State $w_{t+1}i \gets \frac{w_{(t)i}}{2(1-\varepsilon)} \text{ for correctly classified}$ 173 | \EndFor 174 | 175 | \Return $M(x) \gets \sum_{i=1}^{T} \alpha_t M_t(x)$ 176 | \EndProcedure 177 | \end{algorithmic} 178 | \end{algorithm} 179 | 180 | 181 | \end{document} -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit1/se1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit1/se1.png -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit1/se2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit1/se2.png -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit1/se3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit1/se3.png -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit3/meme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit3/meme.png -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit4/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit4/p1.png -------------------------------------------------------------------------------- /src/OOAD/UE18CS353_OOAD_Unit5/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OOAD/UE18CS353_OOAD_Unit5/p1.png -------------------------------------------------------------------------------- /src/OS/OS_NTFS/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{amsmath} 4 | \usepackage{amsthm} 5 | \usepackage{graphicx} 6 | \usepackage{geometry} 7 | \usepackage{caption} 8 | \usepackage{hyperref} 9 | \usepackage{minted} 10 | \usemintedstyle{manni} 11 | \geometry{a4paper, portrait, margin=1in} 12 | 13 | \theoremstyle{plain} 14 | \newtheorem{thm}{Theorem} 15 | 16 | \theoremstyle{definition} 17 | \newtheorem{defn}{Definition} % definition numbers are dependent on theorem numbers 18 | \newtheorem{exmp}{Example} % same for example numbers 19 | 20 | \hypersetup{ 21 | colorlinks=true, 22 | urlcolor=blue, 23 | } 24 | 25 | \title{Operating Systems (UE18CS302)\\ 26 | \large NTFS} 27 | \author{Aronya Baksy} 28 | 29 | \begin{document} 30 | \maketitle 31 | 32 | \section{Introduction} 33 | \begin{itemize} 34 | \item NTFS is a replacement for the older and widely used FAT-32 file system that is used by a wide variety of systems and other peripherals. 35 | 36 | \item Disadvantage of FAT-32 is that it does not restrict file system access to authorized users. This can be solved by encrypting files before storing in file system, but this leads to increased encryption overheads. 37 | 38 | \item NTFS uses Access Control Lists (ACLs) to control access to individual files and supports 39 | implicit encryption of individual files or entire volumes. 40 | 41 | \item NTFS implements many other features as well, including data recovery, fault tolerance, very large files and file systems, multiple data streams, UNICODE names, sparse files, journaling, volume shadow copies, and file compression. 42 | \end{itemize} 43 | 44 | \section{Internal Layout} 45 | \begin{itemize} 46 | \item Fundamental entity of NTFS is a volume (created by Windows logical disk mgmt utility, based on a logical disk partition). Volume may occupy a part of a disk, an entire disk, or span multiple disks. 47 | 48 | \item Disk space is allocated in \textbf{cluster} units (cluster is a number of sectors on disk ). Larger cluster size indicates better performance for larger files in use nowadays, but can lead to internal fragmentation. 49 | 50 | \item Each cluster has a \textbf{logical cluster number} (LCN) (from $0$ to $N$). Physical offset on disk can be calculated by doing $LCN \times cluster\_size$. 51 | 52 | \item Files in NTFS are structured objects with (attr, value) pairs. Each attribute is a byte stream than can be created/read/updated/deleted. 53 | 54 | \item Standard attributes for all files are name (and aliases if any), creation time, and descriptor that attaches the ACL. 55 | 56 | \item The data of the file is stored in an unnamed data attribute. Additional data streams can be created (eg: Macintosh files stored on Windows Server, The IProp interfaces of the Component Object Model (COM)). The size of the unnamed attribute is returned as file size when queried. 57 | 58 | \item Each file in NTFS has an entry in an array called the \textbf{Master File Table} (MFT). Small attributes of file are stored on the MFT record, and larger ones are stored on contiguous extents of the disk. 59 | 60 | \item The MFT record stores pointers to extents on disk. If one MFT record is not large enough for all the attributes, or the file is highly fragmented and needs many pointers, then one \textbf{base file record} is allocated which stores pointers to the overflow MFT records. 61 | 62 | \item Each file has an unique 64-bit ID called the \textbf{file reference} (48 bit file number, 16 bit sequence number). The 48-bit file number is the index of that file's record in the MFT. 63 | 64 | \item The sequence number is incremented every time an MFT entry is reused. The sequence number enables NTFS to perform internal consistency checks, such as catching a stale reference to a deleted file after the MFT entry has been reused for a new file. 65 | \end{itemize} 66 | 67 | \subsection{Namespace Organization} 68 | \begin{itemize} 69 | \item Hierarchy of directories, each directory is stored as a \textbf{B+ Tree}. 70 | 71 | \item The index root of a directory contains the root of the B+ tree, or pointer to disk extent that contains the rest of the B+ Tree. 72 | 73 | \item Directory entries contain name of file as well as attrs like file size and update time taken from the MFT entry of that file. This is done so that listings can be efficiently generated. 74 | \end{itemize} 75 | 76 | \subsection{Metadata} 77 | \begin{itemize} 78 | \item Metadata of NTFS is stored in files (first file is MFT, second file is first 16 entries of MFT copied, for fault tolerance reasons). 79 | 80 | \item Other metadata files are: 81 | \begin{enumerate} 82 | \item \textbf{Log File} records all metadata updates 83 | 84 | \item \textbf{Volume File} contains volume name, version of NTFS, and a corrupt or not flag. 85 | 86 | \item \textbf{Attribute-definition table} indicates which attribute types are used in the volume and what operations can be performed on each of them. 87 | 88 | \item \textbf{Root} is the top level directory in the hierarchy. 89 | 90 | \item \textbf{Bitmap} is a binary array indicating free/allocated clusters. 91 | 92 | \item The\textbf{ boot file} contains the startup code for Windows and must be located at a particular disk address so that it can be found easily by the ROM bootstrap loader. The boot file also contains the physical address of the MFT. 93 | 94 | \item \textbf{Bad cluster} file tracks bad areas on volume, used for error recovery. 95 | \end{enumerate} 96 | \end{itemize} 97 | \section{Recovery} 98 | \begin{itemize} 99 | \item File systems like UFS store metadata on disk, and they recover from crashes by using the fsck program to check all the file-system data structures and restore them forcibly to a consistent state. 100 | 101 | \item Restoring them often involves deleting damaged files and freeing data clusters that had been written with user data but not properly recorded in the metadata structure. This checking is slow and may cause large amount of data loss. 102 | 103 | \item In NTFS all file system data-structure operations are done using transactions. 104 | 105 | \item Before starting the operation, the transaction writes a log record containing undo and redo information. After the update is done the transaction writes a commit status message indicating success. 106 | 107 | \item Recovery is done by processing this log file, redoing all operations that were successfully completed and then undoing all operations that did not successfully finish. 108 | 109 | \item Every 5 seconds, a checkpoint record is written to the log. This removes the need for all logs before that time, and they can be deleted (to ensure that logs don't become too big). 110 | \item This ensures that metadata is in a consistent state but offers no guarantee on contents of user's data. 111 | 112 | \item The log is stored in the third metadata file at the beginning of the volume, with two parts: the logging area, which is a circular queue of log records, and 113 | the restart area (duplicated twice), which holds context information, such as the position in the logging area where NTFS should start reading during a recovery. 114 | 115 | \item The logging functionality is provided by the log-file service. This service takes care of logging and recovery, and also free space management of log file 116 | 117 | \item If free space in log file becomes low, the manager queues all incoming I/O requests, finishes servicing the existing ones and cleans the log file before resuming operation of new requests. 118 | \end{itemize} 119 | 120 | \section{Security} 121 | \begin{itemize} 122 | \item Security is enforced similarly to Windows object model. 123 | 124 | \item Each file references a security descriptor that contains the ACL for that file. For memory efficiency, these can be made into indirect references to shared objects for shared permissions between many files. 125 | 126 | \item Directory searching is done either one level at a time (to allow for access control and POSIX compliance but slower) or at one shot using longest prefix matching (fast but does not take permissions into account). 127 | \end{itemize} 128 | 129 | \section{Volume Management} 130 | \begin{itemize} 131 | \item Combination of disk partitions can be done using \textbf{volume sets}. A volume with NTFS can be combined easily, by simply extending the bitmap over to the new volume. 132 | 133 | \item NTFS continues to use the same LCN mechanism that it uses for a single physical disk, and the FtDisk driver supplies the mapping from a logical-volume offset to the offset on one particular disk. 134 | 135 | \item Physical partitions can also be combined using \textbf{stripe sets}. Assuming the stripe size to be $x$, then the first $x$ bytes of one file are stored on one partition, the next $x$ bytes in the next partition and so on. The allocation wraps around once all the partitions have been exhausted. 136 | 137 | \item This technique creates one large logical volume but increases I/O bandwidth due to the implied parallelism in this arrangement. NTFS also supports RAID 1 (mirroring) and RAID 5 (block-level striping with distributed parity). 138 | \end{itemize} 139 | 140 | 141 | \end{document} -------------------------------------------------------------------------------- /src/OS/OS_UE18CS302_PROC_SCHEDL/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | 4 | \title{Operating Systems (UE18CS302)} 5 | \author{Aronya Baksy} 6 | \date{August 2020} 7 | 8 | \begin{document} 9 | 10 | \maketitle 11 | 12 | \section{Process Scheduling} 13 | \begin{itemize} 14 | \item While one process waits for some device or I/O response, the scheduler loads one more process to keep the CPU busy in the meantime. 15 | 16 | \item Such an arrangement increases the level of multiprogramming, and keeps the CPU busy at all times, with no idle periods of inefficiency. 17 | 18 | \item The success of this arrangement is due to the fact that processes commonly alternate between periods of heavy CPU activity (a \textbf{CPU burst}) and periods of high I/O activity (an \textbf{I/O burst}). 19 | 20 | \item The frequency distribution of CPU and I/O bursts (CPU bound progs have few long CPU bursts, I/O bound progs have many short CPU bursts, and vice versa for I/O bursts) is important when choosing an appropriate scheduling algorithm. 21 | \end{itemize} 22 | 23 | \subsection{Preemptive and Non Preemptive Scheduling} 24 | 25 | \begin{itemize} 26 | \item CPU scheduling takes place in the following four situations: 27 | \begin{enumerate} 28 | \item Process switching from \textbf{running} to the \textbf{waiting} state, for an I/O or memory access, or invocation of wait() for child process termination. 29 | 30 | \item Process switching from \textbf{running} to \textbf{ready}, when an interrupt occurs. 31 | 32 | \item Process switching from \textbf{waiting} to \textbf{ready} state, for example when an I/O op. completes. 33 | 34 | \item Process \textbf{terminates} 35 | \end{enumerate} 36 | 37 | \item The situations 1 and 4 come under the purview of \textbf{non-preemptive} or \textbf{cooperative} scheduling. 38 | 39 | \item Situations 2 and 3 come under \textbf{preemptive} scheduling. 40 | 41 | \item Under non-preemptive scheduling, once a process is allocated the CPU, it takes control of the CPU until it has to wait or it terminates. 42 | 43 | \item Preemptive scheduling can lead to race conditions. If one process is preempted while it is writing to some data location, and the new process reads from that location, then that data is an inconsistent state. 44 | 45 | \item Preemptive scheduling can also affect kernel design. If a kernel process is preempted while it is changing some kernel data (eg: an I/O queue), then chaos ensues. UNIX family OSes solve this problem by waiting for the entire system call or I/O op to complete before performing the context switching. This is a working solution but is not feasible in real time OSes. 46 | 47 | \item The \textbf{dispatcher} gives control of the CPU to the process that is selected by the short term scheduler. This involves a context switch, a switch to user mode, and jumping to the appropriate location in the user program to start execution. 48 | 49 | \item Every process switch invokes the dispatcher, and the time taken for the dispatcher to stop one process and start another is called the \textbf{dispatch latency}. 50 | \end{itemize} 51 | 52 | \subsection{Scheduling Criteria} 53 | \begin{itemize} 54 | \item \textbf{CPU Utilization:} The fraction of time the CPU is kept busy. Theoretically can be anywhere from 0 to 100\%, but real world values range from 40\% to 90\%. 55 | 56 | \item\textbf{Throughput:} Number of processes completed per unit time. 57 | 58 | \item \textbf{Turnaround Time:} Interval between process submission and process completion. Turnaround time is the sum of the periods spent waiting to get into memory, waiting in the ready queue, executing on the CPU, and doing I/O. 59 | 60 | \item \textbf{Waiting Time:} Sum of all time periods spent by process in the wait queue. 61 | 62 | \item \textbf{Response Time:} Time between process submission and first response. 63 | \end{itemize} 64 | 65 | \textbf{maximize:} CPU Util, Throughput 66 | \textbf{minimize:} Turnaround time, wait time, response time 67 | 68 | \subsection{Scheduling Algorithms} 69 | 70 | \subsubsection{First Come First Serve (FCFS) Scheduling} 71 | \begin{itemize} 72 | \item Processes are added to the ready queue in the order in which they arrive. 73 | 74 | \item The average wait times for FCFS depend very heavily on the process mix, and the burst times for each process. A long process arriving behind many short ones can lead to short wait time, but a long process in front of short ones may lead to longer wait times. 75 | 76 | \item The effect of a long process in front of many short processes, making the short processes wait for CPU time, is called the \textbf{convoy effect}. 77 | 78 | \item The FCFS is non preemptive because it allocates CPU time entirely to the new process, and it causes problems in time sharing systems where each user must get CPU time at regular intervals. 79 | \end{itemize} 80 | 81 | \subsubsection{Shortest Job First (SJF) Scheduling} 82 | \begin{itemize} 83 | \item The process with the shortest CPU burst time is selected for CPU time. 84 | 85 | \item To predict the length of the next CPU burst, in a long term system the process time limit per user can be used, which is supplied by the user. 86 | 87 | \item For a short term scheduling situation, the next CPU burst time is predicted using an exponential average of the previous CPU burst times. 88 | 89 | \begin{equation} 90 | \tau_{n+1} = \alpha t_n + (1-\alpha) \tau_{n} 91 | \end{equation} 92 | 93 | Where $\tau_{i}$ refers to the \textit{predicted} CPU burst value at the time index $i$, and $t_i$ refers to the \textit{actual} CPU burst time at time index $i$. 94 | 95 | \item The parameter $\alpha$ is chosen to be a constant with value $< 1$, most often a value of 0.5 96 | 97 | \item The preemptive version of SJF, also called shortest waiting-time first, where the process with the shortest CPU burst time is chosen, and the current process is pre-empted in its place. 98 | \end{itemize} 99 | 100 | \end{document} 101 | -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os10.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os11.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os12.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os13.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os14.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os15.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os16.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os17.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os18.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os19.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os2.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os20.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os21.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os22.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os3.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os4.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os5.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os6.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os7.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os8.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit1/os9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit1/os9.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit2/os.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit2/os.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit2/os1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit2/os1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit2/os2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit2/os2.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit2/os3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit2/os3.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os10.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os11.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os12.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os13.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os14.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os15.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os16.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os17.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os2.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os3.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os4.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os5.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os6.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os7.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os8.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit3/os9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit3/os9.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os10.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os11.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os12.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os2.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os3.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os4.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os5.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os6.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os7.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os8.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/os9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/os9.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid0.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid01.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid10.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid2.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid3.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid4.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid5.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit4/raid6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit4/raid6.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit5/os1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit5/os1.png -------------------------------------------------------------------------------- /src/OS/UE18CS302_OS_Unit5/os2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/OS/UE18CS302_OS_Unit5/os2.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit1/img/flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit1/img/flowchart.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit1/img/research-problem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit1/img/research-problem.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit1/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{graphicx} 4 | \usepackage{hyperref} 5 | 6 | \title{Research Methodology UE18CS400SG \\ Unit 1} 7 | \author{Aditeya Baral} 8 | \date{January 2022} 9 | 10 | \begin{document} 11 | 12 | \maketitle 13 | 14 | \section{Meaning of Research} 15 | 16 | \begin{itemize} 17 | \item Research (re -- search, search -- examine carefully and probe) is a careful and systematic study in some field of knowledge, undertaken to establish facts or principles. 18 | \item Organized and systematic way of finding answers to questions. 19 | \item A careful investigation or inquiry specially through search for new 20 | facts in any branch of knowledge. 21 | \item \textbf{Redman and Mory} -- \textit{"Systematized effort to gain new knowledge."} 22 | \item \textbf{Clifford Woody} -- 23 | \begin{itemize} 24 | \item Defining and redefining problems 25 | \item Formulating hypothesis or suggested solutions 26 | \item Collecting, organising and evaluating data 27 | \item Making deductions and reaching conclusions 28 | \item Carefully testing the conclusions to determine whether they fit the 29 | formulating hypothesis. 30 | \end{itemize} 31 | \item \textbf{D. Slesinger and M. Stephenson in the Encyclopaedia of Social 32 | Sciences} -- \textit{“The manipulation of things, concepts or symbols for the purpose of generalising to extend, correct or verify knowledge, whether that 33 | knowledge aids in construction of theory or in the practice of an art.”} 34 | \end{itemize} 35 | 36 | \subsection{Objectives of Research} 37 | 38 | \begin{itemize} 39 | \item To gain familiarity with a phenomenon or to achieve new insights into it 40 | \item To portray accurately the characteristics of a particular individual, 41 | situation or a group 42 | \item To determine the frequency with which something occurs or with which 43 | it is associated with something else 44 | \item To test a hypothesis of a causal relationship between variables 45 | \end{itemize} 46 | 47 | \subsection{Motivation for Research} 48 | 49 | \begin{itemize} 50 | \item Research Degree 51 | \item Challenge in solving unsolved problems 52 | \item Joy in doing creative work 53 | \item Service to society 54 | \item Respectability 55 | \end{itemize} 56 | 57 | \subsection{Types of Research} 58 | 59 | \begin{enumerate} 60 | 61 | \item \textbf{Descriptive vs Analytical} 62 | \begin{enumerate} 63 | \item Descriptive -- description of state of affairs as it exists 64 | \item Analytical -- Use facts or information already 65 | available and analyze these to make a critical evaluation of the material 66 | \item \textbf{Characteristic} -- No control over variables, only report what has happened/happening 67 | \item Methods involve comparative and correlation 68 | \end{enumerate} 69 | 70 | \item \textbf{Applied vs Fundamental} 71 | \begin{enumerate} 72 | \item Applied Research -- Focused on solving immediate problem facing a society or an industrial business organization aimed at conclusions (like health, pollution, environment, safety etc) 73 | \item Fundamental -- concerned with generalizations and with the formulation of a theory 74 | \end{enumerate} 75 | 76 | \item \textbf{Quantitative vs Qualitative} 77 | \begin{enumerate} 78 | \item Quantitative -- measurement of quantity, controlled, easy to carry out, objective, repeatable, easy to draw conclusions and decisions 79 | \item Qualitative -- qualitative phenomenon, discover underlying motives of behaviour, opinion research, difficult 80 | \end{enumerate} 81 | 82 | \item \textbf{Conceptual vs Empirical} 83 | \begin{enumerate} 84 | \item Conceptual -- related to abstract ideas or theory, used by philosophers and thinkers to develop new concepts/reinterpret existing ones 85 | \item Empirical -- relies on experience or observation, data based and verified by experiments, \textbf{control over variables under study}, evidence through empirical studies is considered as the most powerful support for a hypothesis 86 | \end{enumerate} 87 | 88 | \item \textbf{Other types} -- one time, longitudinal, field, laboratory, simulation, clinical, diagnostic, historical etc 89 | 90 | \end{enumerate} 91 | 92 | \subsection{Research Method vs Methodology} 93 | 94 | \begin{itemize} 95 | \item \textbf{Method} -- technique or method adopted to conduct research - data collection, statistical methods to establish relationship between data and variables, evaluation methods for accuracy of results 96 | \item \textbf{Methodology} -- Way in which research problem is solved systematically 97 | \end{itemize} 98 | 99 | \subsection{Research Process} 100 | 101 | \begin{figure*}[htp] 102 | \includegraphics[width=1 \linewidth]{img/flowchart.png} 103 | \caption{Research Process} 104 | \label{fig:flowchart} 105 | \end{figure*} 106 | 107 | \begin{enumerate} 108 | 109 | \item \textbf{Formulating the research problem} 110 | \begin{enumerate} 111 | \item Understand research problem thoroughly 112 | \item Rephrase in meaningful terms 113 | \end{enumerate} 114 | 115 | \item \textbf{Extensive literature survey} -- abstracting and indexing journals, conference proceedings, reports, books, internet for earlier studies on topic 116 | 117 | \item \textbf{Developing the hypothesis} 118 | \begin{enumerate} 119 | \item \textbf{Working Hypothesis} -- temporary assumption made to draw out and test logical consequences 120 | \item Affect manner of conducting tests 121 | \item Process -- discussion with colleagues, examination of data and records, review similar studies, exploratory personal investigation like field interviews 122 | \end{enumerate} 123 | 124 | \item \textbf{Preparing the research design} -- concerns with how to obtain information, availability and skills of researcher and staff, time and cost factor (financial) for research 125 | 126 | \item \textbf{Determining sample design} -- simple random, systematic, stratified, quota, cluster, sequential etc 127 | 128 | \item \textbf{Collecting the data} -- observation, surveys, personal/telephonic interviews, questionnaires 129 | 130 | \item \textbf{Execution of the project} 131 | 132 | \item \textbf{Analysis of data} -- coding, tabulation, statistical tests and measures 133 | 134 | \item \textbf{Hypothesis Testing} 135 | \begin{enumerate} 136 | \item \textbf{Hypothesis} is a proposed explanation for a phenomenon. A hypothesis is scientific if it can be tested. Scientific hypothesis are based on previous observations that cannot be explained with available theories. 137 | \item Choose appropriate test like chi-square test, t-test, f-test etc based on nature of research and accept or reject hypothesis 138 | \end{enumerate} 139 | 140 | 141 | \item \textbf{Generalizations and Interpretation} -- arrive at certain generalization and interpret and explain findings based on some theory 142 | 143 | \item \textbf{Preparation of the report or Presentation of the results, i.e., formal write-up of conclusions reached} 144 | \begin{enumerate} 145 | \item Concise report with clear charts and illustrations 146 | \item Introduction, summary of findings, main report, conclusion 147 | \end{enumerate} 148 | \end{enumerate} 149 | 150 | \subsection{Criteria for Good Research} 151 | 152 | \begin{itemize} 153 | \item Purpose should be clearly defined 154 | \item Procedure used should be described in sufficient detail 155 | \item Design of research should be carefully planned to yield result as objective 156 | \item Report – complete frankness, flaws in procedural design 157 | \item Analysis should be sufficiently adequate, method of analysis should be appropriate 158 | \item Conclusion should be confined to those justified by data of research 159 | \end{itemize} 160 | 161 | \subsection{Properties of Good Research} 162 | 163 | \begin{itemize} 164 | \item \textbf{Systematic} -- structured with specific steps in sequence 165 | \item \textbf{Logical} -- guided by by rules of logical reasoning, logical procedure for induction and deduction 166 | \item \textbf{Empirical} -- related to one or more aspects of a real situation, deals with data 167 | \item \textbf{Replicable} -- results can be verified by replicating study, builds on sound basis of decision 168 | \end{itemize} 169 | 170 | \section{Literature Review} 171 | 172 | \begin{itemize} 173 | \item A broad, comprehensive, in-depth, systematic, and critical 174 | review of scholarly publications 175 | \item Surveys, summarizes and links together research in a given field 176 | \item Laborious but essential (may constitute entire project itself) 177 | \item Critical and effective evaluation of available literature on research topic -- overview of problem under study 178 | \item Leads logically to the research question 179 | \end{itemize} 180 | 181 | \subsection{Introduction to Literature Review} 182 | 183 | \subsubsection{Importance of Review of Literature} 184 | 185 | \begin{itemize} 186 | \item Identification, development, refinement of requirements 187 | \item Identification of gaps/inconsistencies 188 | \item Strength and weaknesses of designs/methods/instruments used in research work 189 | \item Development of plan -- research methodology 190 | \item Development of Research Hypothesis 191 | \end{itemize} 192 | 193 | \subsubsection{Purpose of Review of Literature} 194 | 195 | \begin{itemize} 196 | \item Overview and guide to a topic 197 | \item Provides solid background for investigation 198 | \item Updated with current developments in research field 199 | \item Critical look at literature 200 | \item Demonstrates relevance of research 201 | \item Determines 202 | \begin{itemize} 203 | \item Research Design, method of study -- instruments, data collection and analysis 204 | \item Knowns and unknowns 205 | \item Inconsistencies and consistencies 206 | \item Strengths and weaknesses 207 | \item Unanswered questions 208 | \item Refinement of problem, hypothesis and justifications 209 | \end{itemize} 210 | \end{itemize} 211 | 212 | \subsubsection{Functions of Review of Literature} 213 | 214 | Background information, establish importance, familiarity and make space for future research 215 | 216 | \subsubsection{Goal of Review of Literature} 217 | \begin{itemize} 218 | \item Demonstrate mastery over a subject 219 | \item Locate area of current research in present literature 220 | \end{itemize} 221 | 222 | \subsubsection{Sources of Review of Literature} 223 | 224 | \begin{itemize} 225 | \item \textbf{Primary} -- written by person(s) who developed theory or conducted research 226 | \item \textbf{Secondary} -- written by person(s) except those who developed theory or conducted research. Used when primary source is unavailable or to look at the problem from different angles 227 | \end{itemize} 228 | 229 | Databases, journals, research reports, books, conference papers, encyclopedias, dictionaries, magazines, newspapers are sources 230 | 231 | \subsubsection{What to look for in a Review of Literature} 232 | 233 | \begin{itemize} 234 | \item Clearly defined problem 235 | \item Goodness of design 236 | \item Validity of results 237 | \item Flaws in logic 238 | \item Ignored problems 239 | \end{itemize} 240 | 241 | \subsection{Writing Literature Review} 242 | 243 | \begin{enumerate} 244 | \item Organize Studies 245 | \begin{enumerate} 246 | \item Chronological -- publication date, trend 247 | \item Thematic -- based on themes 248 | \item Methodological -- example, qualitative vs quantitative 249 | \end{enumerate} 250 | 251 | \item List down 252 | \begin{enumerate} 253 | \item Facts 254 | \item Opinions 255 | \item Variables and their relationship with concepts 256 | \item Shortcomings and limitations in existing methods 257 | \item Relevance of research 258 | \item Suggestions for future work 259 | \end{enumerate} 260 | 261 | \item Start with introduction, then discussion of sources followed by conclusion with summary of findings relevant to current study 262 | 263 | \item After writing, read for coherence and check for errors in logic 264 | \end{enumerate} 265 | 266 | \subsubsection{Stages of Writing} 267 | \begin{itemize} 268 | \item Problem formulation -- field under study, issues 269 | \item Literature search -- finding materials 270 | \item Data evaluation -- determine which literature is a significant contribution 271 | \item Analysis and interpretation 272 | \end{itemize} 273 | 274 | \subsubsection{Critiquing Criteria for reading Review of Literature} 275 | 276 | \begin{itemize} 277 | \item Uncover gaps and inconsistencies 278 | \item Ensure relevancy of concepts and variables 279 | \item Reveal relevant components of study, design, strengths, weaknesses, conflicts 280 | \item Include concepts, data in present literature 281 | \item Include summary 282 | \item Follow a logical sequence and signify direction of research (justification of problem and leading up to hypothesis) 283 | \end{itemize} 284 | 285 | \subsubsection{Points to Ensure while writing Review of Literature} 286 | 287 | \begin{itemize} 288 | \item Specific and succinct -- no details or in-depth analysis 289 | \item Selective -- important points only 290 | \item Focus on current work 291 | \item Ensure reliability of sources of evidence 292 | \item Reference citations to literature in bibliography 293 | 294 | \end{itemize} 295 | 296 | \subsubsection{Properties of a good Review of Literature} 297 | 298 | \begin{itemize} 299 | \item Focused -- narrow topic 300 | \item Concise but developed (don't leave out details) 301 | \item Logical sequence of ideas 302 | \item Integrative -- similarities/difference among literature, how it contributed to topic 303 | \item Current -- focus on latest work 304 | 305 | \end{itemize} 306 | 307 | \section{Research Problem} 308 | 309 | \textit{"Research Problem, in general, refers to some difficulty which a researcher experiences in the context of either a theoretical or practical situation and wants to obtain a solution for the same"} 310 | 311 | \begin{itemize} 312 | \item A specific issue, difficulty, contradiction, or gap in knowledge that one must aim to address in their research 313 | \item Points to the need for meaningful understanding and systematic investigation 314 | \end{itemize} 315 | 316 | If $ I $ is the individual, $ N $ is the environment defined by $ Y_j $ uncontrolled variables, $ C $ is a course of action and $ O $ is an outcome, then a research problem exists if, 317 | 318 | \begin{equation} 319 | P (O_1 | I, C_1, N) \neq P(O_1 | I, C_2, N) 320 | \end{equation} 321 | 322 | Different choices must have unequal probabilities for desired outcomes. 323 | 324 | \begin{figure} 325 | \begin{center} 326 | \includegraphics[scale=0.25]{img/research-problem.png} 327 | \caption{Refinement of Research Topic to Research Process} 328 | \label{fig:research-problem} 329 | \end{center} 330 | \end{figure} 331 | 332 | \subsection{Elements of Problem Statement} 333 | 334 | \begin{itemize} 335 | \item Topic -- subject area 336 | \item Issue -- concern/problem needing solution 337 | \item Evidence of issue -- literature/experience 338 | \item Deficiencies in evidence -- what do we need to know more 339 | \item Remedy of deficiencies -- how the solution helps people 340 | \end{itemize} 341 | 342 | \subsection{Sources of Research Problems} 343 | 344 | Experience, existing research and theories, social issues, brainstorming, intuitions, exposure to field situations and consultation with experts 345 | 346 | \subsection{Selecting a Research Problem} 347 | 348 | \begin{itemize} 349 | \item Subject is not overdone 350 | \item Avoid controversial subjects and vague problems 351 | \item Subject is familiar and feasible 352 | \item Must be preceded by preliminary study 353 | \end{itemize} 354 | 355 | \subsection{Defining a Research Problem} 356 | 357 | \textit{"A clearly defined research problem is half solved"} 358 | 359 | Task of defining a research problem is sequential -- state problem, resolve ambiguities, more specific formulation to make it realistic and meaningful 360 | 361 | \begin{enumerate} 362 | \item State the problem in a general way 363 | \item Understand nature of problem 364 | \item Survey literature 365 | \item Develop ideas through discussion 366 | \item Rephrase research problem 367 | \item Clearly define terms and phrases 368 | \item State basic assumptions and postulates 369 | \item State criteria for selection of problem 370 | \item State suitability of time period and data sources 371 | \item State scope of investigation 372 | \end{enumerate} 373 | 374 | \subsection{Properties of a well defined Research Problem} 375 | 376 | \begin{itemize} 377 | \item Meaningful 378 | \item Paves way for development of working hypothesis 379 | \item Helps solve the problem 380 | \end{itemize} 381 | 382 | \end{document} 383 | -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit2/img/LSD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit2/img/LSD.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit3/img/table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit3/img/table.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit3/img/tail-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit3/img/tail-tests.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit4/img/report-process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit4/img/report-process.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit4/img/thesis-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/RM/UE18CS400SG_RM_Unit4/img/thesis-structure.png -------------------------------------------------------------------------------- /src/RM/UE18CS400SG_RM_Unit5/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage{graphicx} 4 | \usepackage{hyperref} 5 | \usepackage{multirow} 6 | \usepackage{amsmath} 7 | \usepackage{textcomp} 8 | 9 | \title{Research Methodology UE18CS400SG \\ Unit 5} 10 | \author{Aditeya Baral} 11 | \date{April 2022} 12 | 13 | \begin{document} 14 | 15 | \maketitle 16 | 17 | \section{Research Proposal} 18 | 19 | \begin{itemize} 20 | \item Statement of intent on \textbf{what the study is about, why is it important, how it will be conducted and some insights on results} 21 | \item Concise, coherent summary and plan of proposed work 22 | \item Submitted to panel after initial studies, use future tense 23 | \item Helps clear thought process on micro levels -- \textbf{familiarises background, justifies research, helps anticipate timeline, problems, design, experiments} 24 | \end{itemize} 25 | 26 | \subsection{Format of Research Proposal} 27 | 28 | \begin{enumerate} 29 | \item \textbf{Literature Review} 30 | \item \textbf{Aim or Objectives} 31 | \item \textbf{Proposed Methodology}-- justify methods, prove feasibility 32 | \item \textbf{Proposed Experimental Design} 33 | \item \textbf{Timeline} -- helps keep design in check, avoids dead time, consult others with work in same field 34 | \item \textbf{Budget (if applicable)} -- appreciation for research costs, prevents overspending, add explanations for each requirement 35 | \end{enumerate} 36 | 37 | \section{Ethics} 38 | 39 | \begin{itemize} 40 | \item Research based on trust, be honest 41 | \item Follow \textbf{Code of Ethics -- IEEE, ACM, 10 Commandments of Computer Ethics} 42 | \item \textbf{Authenticity and Accuracy} -- report data for which experiments are carried out 43 | \item \textbf{Originality} -- present your data only, give credits to others 44 | \item While citing, \textbf{indicate and quote exactly what material is taken from source} reference 45 | \item \textbf{No plagiarism} -- no self-plagiarism either 46 | \item \textbf{Accurate, reproducible results} -- include issues, drawbacks, limitations, unexpected and conflicting outcomes 47 | \item Provide \textbf{authorship based on contribution} to work and content 48 | \item Ethical treatment of humans and animals 49 | \item \textbf{Disclosure of conflicts of interest} -- disclose commercial relations, grant proposals, opt for blind reviews (reviewers unknown to authors, authorship removed from paper before review) 50 | \end{itemize} 51 | 52 | \section{Plagiarism} 53 | 54 | \textit{Appropriation of another person’s ideas, processes, results, words, figures, illustrations without giving appropriate credit.} 55 | 56 | \begin{itemize} 57 | \item Ethical issue and should be avoided 58 | \item Software exist to detect parts of a document with plagiarism -- use to improve document 59 | \item \textbf{Cosine Similarity} used to measure similarity -- $\theta$ gives the degree of similarity 60 | \begin{equation} 61 | Similarity = \cos \theta = \frac{\Vec{A}\cdot \Vec{B}}{\left \| A \right \|\left \| B \right \|} 62 | \end{equation} 63 | \item \textbf{Human interpretation required because of false positives} 64 | \end{itemize} 65 | 66 | \section{Reference Management Tools} 67 | 68 | \begin{itemize} 69 | \item Citations in our work must be according to \textbf{standard formats} 70 | \item Reference Management Tools \textbf{help organise and manage bibliographic resources, generates text citations and bibliography} as you write 71 | \item \textbf{Save bibliography from online databases} and can \textbf{switch between formats} easily 72 | \item Install plugin for integrating tool with word processor, and browser extension for importing references to tool 73 | \end{itemize} 74 | 75 | \section{Scientific Misconduct} 76 | 77 | \textit{Violation of scholarly conduct and ethical behaviour in publication of scientific research} 78 | 79 | Scientific misconduct does not include errors, differences in interpretations, scholarly disagreements, opinions, authorship controversies. 80 | 81 | \subsection{Forms of Misconduct} 82 | 83 | \subsubsection{Falsification} 84 | 85 | \begin{itemize} 86 | \item Manipulation of research material, processes, or alteration or omission of observed results in an experiment 87 | \item Most common (over 40\% cases of misconduct) 88 | \item Used to improve results or remove results contradicting hypothesis 89 | \end{itemize} 90 | 91 | \subsubsection{Fabrication} 92 | 93 | \begin{itemize} 94 | \item Invention of data, records or results 95 | \item Most commonly fabricated documents are consent forms and patient diaries 96 | \end{itemize} 97 | 98 | \subsubsection{Plagiarism} 99 | 100 | \begin{itemize} 101 | \item Copying someone's intellectual property (information or ideas) without citing source 102 | \item \textbf{Does not distort scientific knowledge} but is not ethical and harmful for careers 103 | \end{itemize} 104 | 105 | \subsection{Reasons for Scientific Misconduct} 106 | 107 | \begin{itemize} 108 | \item Academic, publication and career pressure 109 | \item Desire for fame, higher positions or financial gain 110 | \item Sloppy science 111 | \item Inability to determine right from wrong 112 | \end{itemize} 113 | 114 | \subsection{Consequences of Scientific Misconduct} 115 | 116 | \begin{itemize} 117 | \item Dismissal from faculty 118 | \item Rejection of research grants 119 | \item Blacklisting - from hiring, funding, publications 120 | \item Removal of past academic achievements 121 | \end{itemize} 122 | 123 | \subsection{Measures to Maintain Research Ethics} 124 | 125 | \begin{enumerate} 126 | \item \textbf{Before research} -- develop research plan, submit protocols for research review, prepare with research community, agree on authorship, evaluate strength of grant 127 | \item \textbf{During research} -- Follow approved protocol, gain consent, regularly check data, involve research community, set standards for supervision, communicate expectations, establish an Office of Research Integrity 128 | \item \textbf{After Research} -- Share report, follow publication ethics like citing correct references 129 | \end{enumerate} 130 | 131 | \subsection{Why Research Misconduct Matters} 132 | 133 | \begin{itemize} 134 | \item Difficult to recognize and prevent 135 | \item Undermines public trust in research 136 | \item Corrupts scientific records 137 | \end{itemize} 138 | 139 | \subsection{Hazards to Good Scientific Practice} 140 | 141 | \begin{itemize} 142 | \item Pressure of expectations, evaluation, publication, competition between research groups, positions and grants 143 | \item Involvement in commercialization, paid opinions, media presence, ambition 144 | \item Careless experimentation, inadequate and insufficient analysis, testing, awareness, ignorance of errors 145 | \item Preconceived opinions, failure to see unsuitability of data or results, emotion-driven judgement, arrogance and ambition 146 | \end{itemize} 147 | 148 | \section{Intellectual Property Rights} 149 | 150 | \subsection{Patents} 151 | 152 | \begin{itemize} 153 | \item A \textbf{patent} is an \textbf{exclusive government granted monopoly right to make, use or sell an innovation for a limited area and time (20 years) by stopping others from doing the same} 154 | \item Patent rights are granted by \textbf{National Patent Offices}, hence patent protection for an invention must be sought in each country 155 | \item A patent can be bought, sold, licensed or mortgaged 156 | \item \textbf{Things that cannot be patented} -- ideas, anything contrary to laws, morality, common knowledge, methods of agriculture, animals, plants, computer programs, schemes, rules, literary, artistic work 157 | \item \textbf{Ingredients of Patents} 158 | \begin{itemize} 159 | \item Novelty and innovation 160 | \item Lack of obviousness 161 | \item Sufficiency of description 162 | \end{itemize} 163 | \end{itemize} 164 | 165 | \subsubsection{Reason for Patent} 166 | 167 | \begin{itemize} 168 | \item Right to manufacture, import or sell 169 | \item Ability to enjoy monopoly of invention by exclusive rights 170 | \item Reduce competitors in market 171 | \item Revenue generation via licensing, assignment, technology transfer, mergers and acquisitions 172 | \item Confidence for venture capitalists, investors 173 | \item Increase value of company and build its image 174 | \item Key component in business strategies, helps protect company assets, allows company to operate from a strong position 175 | \item Encourage public interest in invention 176 | \end{itemize} 177 | 178 | \subsubsection{Who can Apply for Patent} 179 | 180 | \begin{itemize} 181 | \item Any person (regardless of citizenship) who is the true first inventor 182 | \item His assignee or legal representative 183 | \item Alone or jointly with another person 184 | \end{itemize} 185 | 186 | \subsubsection{Procedure for Obtaining a Patent} 187 | 188 | \begin{enumerate} 189 | \item Patent Application 190 | \item Publication 191 | \item Examination 192 | \item Application in Order for Grant 193 | \item Publication of Grant 194 | \item Pre-Grant opposition 195 | \item Post-Grant opposition 196 | \end{enumerate} 197 | 198 | \subsubsection{International Applications} 199 | 200 | PCT (Patent Cooperation Treaty) Application and Convention Application 201 | 202 | \subsubsection{Patent Application} 203 | 204 | \begin{itemize} 205 | \item \textbf{Bibliographic information} -- Date of filing, name and address, title, classification, abstract, formula, corresponding priority application or patent 206 | \item \textbf{Technical Information} -- State-of-the-Art, description, drawings, claims 207 | \end{itemize} 208 | 209 | An application consists of: 210 | 211 | \begin{enumerate} 212 | \item Applicants 213 | \item Inventors 214 | \item Title 215 | \item Address of correspondence 216 | \item Priority particulars of applications 217 | \item Particulars for filing PCT 218 | \item Particulars for filing Divisional Application 219 | \item Particulars for filing patent addition 220 | \item Declaration 221 | \item Attachments 222 | \end{enumerate} 223 | 224 | \subsubsection{Term of a Patent} 225 | 226 | 20 years from date of priority, maintained by paying renewal fees every year 227 | 228 | \subsubsection{Patent Oppositions} 229 | 230 | \begin{enumerate} 231 | \item \textbf{Pre-Grant Opposition} 232 | \begin{itemize} 233 | \item \textbf{Filed by any person, after publication of patent application} 234 | \item Filed on claims such as -- wrongfully obtaining an invention, invention is anticipated, application does not disclose source, geographic origin, or inventive step 235 | \end{itemize} 236 | 237 | \item \textbf{Post-Grant Opposition} 238 | \begin{itemize} 239 | \item \textbf{Can be filed by any individual involved in, or promoting work in the same field as the patent, after patent has been granted} 240 | \item Same grounds as pre-grant opposition 241 | \end{itemize} 242 | \end{enumerate} 243 | 244 | \subsubsection{Grant of Patent} 245 | 246 | \begin{itemize} 247 | \item The exclusive right given for a period of 20 years that prevents unauthorized use of the technology 248 | \item \textbf{A patent needs to be granted for it to be effective} against infringement 249 | \end{itemize} 250 | 251 | \subsubsection{Infringement of Patent} 252 | 253 | \begin{itemize} 254 | \item Injunction (permanent or temporary) 255 | \item Damages to profits, seizure of business, destruction 256 | \end{itemize} 257 | 258 | \subsection{Copyright} 259 | 260 | \begin{itemize} 261 | \item \textbf{A copyright allows people to own their creative work and prevents others from reproducing it} 262 | \item Gives the creator control and monopoly by protecting literary, software, musical, motion picture, soundtracks, architectural etc works 263 | \item It is owned by the creator, but in the course of an employment is owned by the employer 264 | \item \textbf{Cannot be obtained for government works, ideas, concepts, common information with no originality, works that are not fixed} 265 | \end{itemize} 266 | 267 | \subsection{Trademarks} 268 | 269 | \begin{itemize} 270 | \item \textbf{A trademark is a symbol, image, sound, word or phrase, combination of colours or label legally registered and established that represents a company, product or business} 271 | \item Used to \textbf{distinguish the product from competitors} 272 | \item Owners of a trademark can sue for damages when infringements occur 273 | \item Any person claiming to be the owner of a product can apply for a trademark 274 | \begin{itemize} 275 | \item Use the {\texttrademark} symbol when application is underway (8-24 months) 276 | \item Use the {\textregistered} symbol once registered and registration certificate is obtained 277 | \item Each trademark is valid for 10 years and can be renewed 278 | \end{itemize} 279 | \item Registered by \textbf{Controller General of Patents Designs and Trademarks, Ministry of Commerce and Industry, Government of India} 280 | \end{itemize} 281 | 282 | \subsubsection{Reasons for Trademark} 283 | 284 | \begin{itemize} 285 | \item Identify the product and source for advertisement and branding 286 | \item Guarantees quality 287 | \end{itemize} 288 | 289 | \subsubsection{Documents required for Trademark Application} 290 | 291 | \begin{itemize} 292 | \item Trademark 293 | \item Applicant details 294 | \item Goods or services being registered 295 | \item Date of first use in India (if used prior to application) 296 | \item Power of attorney (needs signature of applicant) 297 | \end{itemize} 298 | 299 | \subsubsection{Steps to register a Trademark} 300 | 301 | \begin{enumerate} 302 | \item Select and authorize Trademark agent or attorney, who conducts a search for any existing or similar trademark. 303 | \item If nothing is found, an application is drafted and filed by the Trademark attorney with Trademark Office who will also send you a receipt 304 | \item After a few days, Original Representation Sheet of your trademark is sent by Trademark attorney to you, since it has been filed with Trademark Office 305 | \item It can take between 18 months to 2 years for the Trademark Office to decide whether or not to grant you the trademark based on objections 306 | \item After being accepted, it will be published in the Trademark journal 307 | \end{enumerate} 308 | 309 | \footnote{A few things in the slides have been skipped in these notes - Laws, Acts, prices for patents, governing bodies etc since they did not seem important.} 310 | 311 | \end{document} 312 | -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit1/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=0.6in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{subcaption} 6 | \usepackage{amsmath} 7 | \usepackage{geometry} 8 | \usepackage{array} 9 | 10 | 11 | \title{Software Testing (UE18CS400SB) \\ Unit 1} 12 | \author{Aronya Baksy} 13 | \date{August 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | 18 | \section{Introduction} 19 | \begin{itemize} 20 | 21 | \item \textbf{Testing}: A process consisting of all life-cycle activities both static and dynamic concerned with \textbf{planning}, \textbf{preparation} and \textbf{evaluation} of a software product and the related work to determine that it \textbf{satisfies the specific requirements} and it fits the purpose, as well as to \textbf{detect defects} 22 | 23 | \item Provides stakeholders with info about quality of the software product under test 24 | 25 | \item Software testing ensures quality of software and accelerates software development 26 | 27 | \item Testing levels: Unit test, integration test, system test and acceptance test 28 | \end{itemize} 29 | 30 | \section{Software Quality} 31 | \begin{itemize} 32 | \item Quality is conformance to standards or requirements (PMBOK) 33 | 34 | \item \textbf{ISO 9000}: totality of features and characteristics of a product/service that bear on its ability to satisfied stated and implied needs 35 | 36 | \item \textbf{IEEE definition} of quality: 37 | \begin{itemize} 38 | \item The degree to which a system/component/process meets requirements 39 | 40 | \item The degree to which a system/component/process meets user needs or expectations 41 | \end{itemize} 42 | 43 | \item \textbf{Pressman's definition} of quality: Conformance to explicitly stated functional and performance requirements, explicitly documented development standards and implicit characteristics that are expected of all professionally developed software 44 | 45 | \item Quality is a process than a product. A continuous process of improvement and use of lessons learnt in the past to enhance processes 46 | 47 | \item Software defects are costly (money/reputation/danger to human life) 48 | 49 | \item Reasons for software failures: 50 | \begin{itemize} 51 | \item Uniqueness of the product 52 | 53 | \item High complexity 54 | 55 | \item Limited opportunities to detect bugs 56 | 57 | \item Software dev environment 58 | 59 | \item Teamwork 60 | \end{itemize} 61 | \end{itemize} 62 | 63 | \subsection{Software Quality Factors} 64 | \begin{itemize} 65 | \item \textbf{Correctness}: With regards to conforming to requirements 66 | 67 | \item \textbf{Reliability} 68 | 69 | \item\textbf{Efficiency} 70 | 71 | \item \textbf{Usability} 72 | 73 | \item \textbf{Maintainability} 74 | 75 | \item \textbf{Flexibility} with regard to changing requirements and adding functionality 76 | 77 | \item\textbf{Testability} 78 | 79 | \item\textbf{Portability} across platforms and environments (cloud or native) 80 | 81 | \item\textbf{Interoperability} with other services and products 82 | 83 | \item\textbf{Reusability} 84 | \end{itemize} 85 | 86 | \subsection{Deming's PDCA Cycle} 87 | \begin{itemize} 88 | \item \textbf{Plan} improvements to existing practices (establish objectives and processes needed to deliver them) 89 | 90 | \item \textbf{Do}: Implementation of the plan and objectives of the previous step 91 | 92 | \item \textbf{Check} to see if desired results are achieved (compare with expected outcomes to measure similarity and differences) 93 | 94 | \item \textbf{Act}: Implement corrective solutions, process improvement appens in this phase 95 | \end{itemize} 96 | 97 | \subsection{Cost of Quality} 98 | \begin{itemize} 99 | \item Total price of all effort needed to achieve product/service quality (3-5\% of total program cost devoted to cost of quality) 100 | 101 | \item The quality cost has 4 main components: 102 | \begin{itemize} 103 | \item \textbf{Prevention Cost} 104 | 105 | \item \textbf{Appraisal Cost} 106 | 107 | \item \textbf{Internal Failure Cost} 108 | 109 | \item \textbf{External Failure Cost} 110 | \end{itemize} 111 | \end{itemize} 112 | 113 | \subsection{Project Quality Management} 114 | \begin{itemize} 115 | \item The processes required to ensure that the project satisfies the needs for which it was undertaken 116 | 117 | \item Includes all activities of which the overall management function that determine the quality policy, objectives and responsiblities and implements them using quality planning, assurance, control and improvement within the quality system. 118 | 119 | \item PQM addresses both management and end product of the project 120 | \end{itemize} 121 | 122 | \subsubsection{PQM Processes} 123 | \begin{itemize} 124 | \item \textbf{Quality Planning} 125 | \item \textbf{Quality Assurance} 126 | \item \textbf{Quality Control} 127 | \item \textbf{Quality Improvement} 128 | \end{itemize} 129 | \begin{figure}[!h] 130 | \centering 131 | \begin{tabular}{|c|c|} 132 | \hline 133 | \textbf{Quality Assurance} & \textbf{Quality Control} \\ 134 | \hline 135 | Process-oriented & Product-oriented \\ 136 | \hline 137 | Focus on preventing quality issues & Focus on identifying quality issues in products \\ 138 | \hline 139 | Performed throughout the cycle & Performed after product is built \\ 140 | \hline 141 | A staff function & Line function \\ 142 | \hline 143 | e.g.: Reviews, Audits & e.g.: Software testing at various levels\\ 144 | \hline 145 | \end{tabular} 146 | \end{figure} 147 | 148 | \subsubsection{Quality Control using Fish-Bone Analysis} 149 | \begin{itemize} 150 | \item A multi-purpose representation used for brainstorming, but is mostly used for cause-effect analysis 151 | 152 | \item The fish head represents the effect that is observed 153 | 154 | \item The bones on the fish's spine represent the causes of the effect that was observed 155 | 156 | \item Used in Agile-based development life cycles like Scrum and Kanban 157 | 158 | \item Steps in building a Fish-bone diagram: 159 | \begin{enumerate} 160 | \item Agree on the problem statement (\textbf{effect}). This forms the fish head. The problem statement must be clear, specific but not defined in terms of any solutions. 161 | 162 | \item Agree on major categories of \textbf{causes}. These are the branches on the fish spine 163 | 164 | \item Brainstorm all possible causes of the problem. As each idea is put forth, the facilitator puts it on the appropriate category (branch) of the diagram 165 | 166 | \item Ask "why does it happen" and form sub branches from the main branches 167 | 168 | \item Generate deeper levels of causes and organize them under relevant categories of causes. 169 | \end{enumerate} 170 | \end{itemize} 171 | 172 | \section{Software Developement Life Cycle} 173 | \begin{itemize} 174 | \item Generic phases of SDLC: Requirement analysis, planning, design, implementation, testing, deployment and maintenance 175 | 176 | \item \textbf{Verification}: Evaluating whether the product of a particular phase satisfies the conditions imposed at the start of that phase 177 | 178 | \item \textbf{Validation}: Evaluating a system/component during or at the end of the development process to determine whether it satisfies the specified requirements. 179 | 180 | \item Every phase of SDLC is characterized by: entry, task, verification, and exit activities. 181 | 182 | \item Attributes of an SDLC model: 183 | \begin{itemize} 184 | \item Activities performed the sequence and their deliverables 185 | 186 | \item Methods of validation and deliverables 187 | 188 | \item Methods of verification for each activity, including communication mechanisms between activities 189 | \end{itemize} 190 | \end{itemize} 191 | 192 | \subsection{Waterfall Model} 193 | \begin{itemize} 194 | \item Progress through each phase flows from top to bottom, in a cascading manner. 195 | 196 | \item \textbf{Strengths}: simple, useful for projects divided into components 197 | 198 | \item \textbf{Drawbacks}: Delay in feedback among phases, errors in one phase are not detected till next one 199 | \end{itemize} 200 | 201 | \subsection{Prototyping Models} 202 | \begin{itemize} 203 | \item Early and frequent feedback increases chances of meeting customer requirements, and allows project to adapt to rapid changes easily 204 | 205 | \item \textbf{Prototyping}: constant user interaction produces a prototype from which the SRS is derived. Prototype is discarded after this, and then the development proceeds once client accepts the SRS 206 | \end{itemize} 207 | 208 | \subsection{Iterative Model} 209 | \begin{itemize} 210 | \item Start with a skeleton code and iteratively refine it till a complete product is ready 211 | 212 | \item It is represented in the form of a spiral and hence called a \textbf{spiral model} as well 213 | \end{itemize} 214 | 215 | \begin{figure}[!ht] 216 | \centering 217 | \includegraphics[scale=0.5]{p1.png} 218 | \caption{Spiral Model} 219 | \label{fig:my_label} 220 | \end{figure} 221 | 222 | \subsection{V Model} 223 | \begin{itemize} 224 | \item The test planning and the development activity is done at the same time 225 | 226 | \item The development and testing activities form the 2 lines of the V, hence the shape and the name of the model. 227 | 228 | \item Test planning is done early, but tests are executed only after implementation 229 | 230 | \item Apart from the shape, V also stands for \textbf{Verification} and \textbf{Validation}. 231 | 232 | \item In a V model, every activity is sequential (one phase only starts after the previous one finishes) 233 | \end{itemize} 234 | \begin{figure} 235 | \centering 236 | \includegraphics[scale=0.5]{p2.png} 237 | \caption{V Model} 238 | \label{fig:my_label_1} 239 | \end{figure} 240 | 241 | \subsection{Modified V Model} 242 | \begin{itemize} 243 | \item Modified V model recognizes that different parts of a product are in different stages of evolution 244 | 245 | \item Each part entires the appropriate testing phase when the appropriate criteria are met 246 | \end{itemize} 247 | 248 | \section{Software Test Life Cycle} 249 | \begin{itemize} 250 | \item A sequence of specific ccations performed during the testing process to ensure that softwre quality objectives are met 251 | 252 | \item Includes both verification and validation 253 | 254 | \item The phases of a normal STLC are: 255 | \begin{itemize} 256 | \item Contract Signing 257 | 258 | \item Requirement Analysis 259 | 260 | \item Test planning 261 | 262 | \item Test development 263 | 264 | \item Test environment setup 265 | 266 | \item Test execution 267 | 268 | \item Retest defects 269 | 270 | \item Closure 271 | \end{itemize} 272 | \end{itemize} 273 | 274 | \subsection{STLC Phases} 275 | \subsubsection{Requirement Analysis} 276 | \begin{itemize} 277 | \item \textbf{Entry Criteria}: SRS and architecture design available, test acceptance criteria defined 278 | 279 | \item \textbf{Activity}: 280 | \begin{enumerate} 281 | \item Identify and prioritize tests to perform 282 | 283 | \item Prepare an RTM 284 | 285 | \item Identify the test environment and perform automation feasibility analysis 286 | \end{enumerate} 287 | 288 | \item \textbf{Exit Criteria}: Signed off RTM and authorized automation feasibility report 289 | 290 | \item \textbf{Deliverables}: RTM, automation feasiblity report 291 | \end{itemize} 292 | 293 | \subsubsection{Test Planning} 294 | \begin{itemize} 295 | \item \textbf{Entry Criteria}: SRS, RTM, automation feasibility report 296 | 297 | \item \textbf{Activity}: 298 | \begin{enumerate} 299 | \item Prepare test plan/strategy document 300 | 301 | \item Estimate test effort 302 | 303 | \item Resource planning 304 | 305 | \item Training requirements 306 | \end{enumerate} 307 | 308 | \item \textbf{Exit Criteria}: Approved test plan document, signed off effort estimate 309 | 310 | \item \textbf{Deliverables}: Test plan document, effort estimate document 311 | \end{itemize} 312 | 313 | \subsubsection{Test Case Development} 314 | \begin{itemize} 315 | \item \textbf{Entry Criteria}:SRS, RTM, test plan, automation analysis report 316 | 317 | \item \textbf{Activity}: 318 | \begin{enumerate} 319 | \item Create test cases 320 | 321 | \item Automation scripts if applicable 322 | 323 | \item Review and baseline test cases/scripts 324 | 325 | \item Create test dataset 326 | \end{enumerate} 327 | 328 | \item \textbf{Exit Criteria}: Reviewed and signed test cases/scripts, test dataset 329 | 330 | \item \textbf{Deliverables}: Test cases, scripts, test dataset 331 | \end{itemize} 332 | 333 | \subsubsection{Test Environment Setup} 334 | \begin{itemize} 335 | \item \textbf{Entry Criteria}: System design and architecture, environment setup plan 336 | 337 | \item \textbf{Activity}: 338 | \begin{enumerate} 339 | \item Understand the required setup 340 | 341 | \item Prepare hardware \& software requirements and envt. checklist 342 | 343 | \item Perform smoke test on build and accept based on smoke test result 344 | \end{enumerate} 345 | 346 | \item \textbf{Exit Criteria}: Working test envt as per plan, complete test data setup and successful smoke test 347 | 348 | \item \textbf{Deliverables}: Ready test envt and test dataset, smoke test result 349 | \end{itemize} 350 | 351 | \subsubsection{Test Execution} 352 | \begin{itemize} 353 | \item \textbf{Entry Criteria}: Baselined RTM, test plan, test scripts/cases/envt/data, unit/integration test report 354 | 355 | \item \textbf{Activity}: 356 | \begin{enumerate} 357 | \item Run tests, document results and log defects 358 | 359 | \item Update test assets 360 | 361 | \item Map defects to test cases in RTM 362 | 363 | \item Perform regression test 364 | \end{enumerate} 365 | 366 | \item \textbf{Exit Criteria}: All planned tests are executed, defects logged and tracked 367 | 368 | \item \textbf{Deliverables}: Filled RTM with exec status, updated test cases and results, bug reports 369 | \end{itemize} 370 | 371 | \subsubsection{Test Cycle Closure} 372 | \begin{itemize} 373 | \item \textbf{Entry Criteria}: Completed testing with results, defect logs available 374 | 375 | \item \textbf{Activity}: 376 | \begin{enumerate} 377 | \item Evaluate completion critera (time, cost, coverage, biz objectives) 378 | 379 | \item Test metric calcuation 380 | 381 | \item Document learnings from project 382 | 383 | \item Prepare closure report (report of quality of work product to customer) 384 | 385 | \item Test result analysis to find distr. of bugs by type and severity 386 | \end{enumerate} 387 | 388 | \item \textbf{Exit Criteria}: Signed off test closure report 389 | 390 | \item \textbf{Deliverables}: Test closure report, test metrics 391 | \end{itemize} 392 | 393 | \section{Classification of Testing Types} 394 | \begin{itemize} 395 | \item\textbf{Based on method}: 396 | \begin{enumerate} 397 | \item White-box testing 398 | 399 | \item Black-box testing 400 | \end{enumerate} 401 | 402 | \item \textbf{Based on requirement type}: 403 | \begin{enumerate} 404 | \item Functional testing: can be black or white box 405 | 406 | \item Non-functional testing: load/stress test, usability test, l10n testing 407 | \end{enumerate} 408 | 409 | \item \textbf{Based on life-cycle phase}: Focus changes from unit to sub-system to entire system 410 | \begin{enumerate} 411 | \item Unit testing: uses white-box testing 412 | \item Integration testing: Using white/black box tests 413 | \item System testing: uses black-box 414 | \end{enumerate} 415 | 416 | \item \textbf{Based on need}: 417 | \begin{enumerate} 418 | \item Regression testing: ensure that changes have not impacted existing behaviour 419 | 420 | \item $\alpha$ testing (limited user base, dev site) and $\beta$ testing (larger user base, cust. site) 421 | \item Acceptance testing 422 | \end{enumerate} 423 | \end{itemize} 424 | \end{document} 425 | -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit1/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ST/UE18CS400SB_ST_Unit1/p1.png -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit1/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ST/UE18CS400SB_ST_Unit1/p2.png -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit2/st1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abaksy/pesu-cse-notes/106df3f529dc38c9ecd66fe2aab983a69bb4af24/src/ST/UE18CS400SB_ST_Unit2/st1.png -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit3/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=0.6in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{subcaption} 6 | \usepackage{amsmath} 7 | \usepackage{geometry} 8 | \usepackage{array} 9 | 10 | 11 | \title{Software Testing (UE18CS400SB) \\ Unit 3} 12 | \author{Aronya Baksy} 13 | \date{November 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | \section{Black-Box Testing} 18 | \begin{itemize} 19 | \item Done with only functional knowledge of system, and no knowledge of system internals 20 | 21 | \item Characteristics: 22 | \begin{itemize} 23 | \item Done based on requirements. Should address stated and implied requirements 24 | 25 | \item Encompass the end-user perspective 26 | 27 | \item Check for valid conditions/inputs 28 | \end{itemize} 29 | 30 | \item Black-box testing methodologies should be chosen so that likelihood of uncovering \textbf{new} defects is \textbf{maximized} 31 | \end{itemize} 32 | \subsection{Advantages of Black-Box Testing} 33 | \begin{itemize} 34 | \item Well suited and efficient for large code segments. 35 | \item Code access is not required. 36 | \item Clearly separates user's perspective from the developer's perspective through visibly defined roles. 37 | \item Large numbers of moderately skilled testers can test the application with no knowledge of system internals 38 | \end{itemize} 39 | 40 | \subsection{Disadvantages of Black-Box Testing} 41 | \begin{itemize} 42 | \item Limited coverage, since only a selected number of test scenarios is actually performed. 43 | \item Inefficient testing, due to the fact that the tester only has limited knowledge about an application. 44 | \item Blind coverage, since the tester cannot target specific code segments or error-prone areas. 45 | \item The test cases are difficult to design 46 | \end{itemize} 47 | 48 | \section{Specification-Based Testing} 49 | \begin{itemize} 50 | \item A specification can be anything like a written document, collection of use cases, a set of models or a prototype 51 | 52 | \item Specification-based testing is applicable at all levels (unit to acceptance test) 53 | 54 | \item Can be in the form of equivalence partitioning, boundary value analysis, decision tables or state-transitioning 55 | \end{itemize} 56 | 57 | \subsection{Positive and Negative Testing} 58 | \begin{itemize} 59 | \item Positive: check that the product does what it's supposed to do (supply valid input, expect valid output) 60 | 61 | \item Negative: Check that product does not fail when given unexpected input (supply invalid input, return error message) 62 | 63 | \item Coverage is well defined in positive testing, and positive testing maps exactly to a specific requirement 64 | \end{itemize} 65 | 66 | \subsection{Boundary Value Analysis} 67 | \begin{itemize} 68 | \item Boundary testing is the process of testing between extreme ends or boundaries between partitions of the input values. 69 | 70 | \item 5 types of values are chosen: Minimum, Just above the minimum, A nominal value, Just below the maximum, Maximum 71 | 72 | \item Reasoning: Most defects occur at these boundaries (from a white-box perspective, decision boundaries) 73 | \end{itemize} 74 | 75 | \subsection{Decision-Based Testing} 76 | \begin{itemize} 77 | 78 | \item A decision table is a black-box test technique that presents combinations of inputs and outputs, where inputs are conditions or cases, and outputs are actions or effects. 79 | 80 | \item Distinct combinations of decision variables in a program lead to different scenarios 81 | 82 | \item Each scenario occupies a row in the decision table, and the row also has expected results 83 | \end{itemize} 84 | 85 | \subsection{Equivalence Partitioning} 86 | \begin{itemize} 87 | \item Equivalence partitioning is a testing technique that divides the input data into partitions of equivalent data from which test cases can be derived. 88 | 89 | \item Divide infinite input space into partititons. One element from each partition acts as a representative of that partititon 90 | 91 | \end{itemize} 92 | 93 | \subsection{State Graph Testing} 94 | \begin{itemize} 95 | \item Useful for language processors, compilers, workflow/data modelling 96 | 97 | \item Design test cases corresponding to each valid state-input combination. 98 | Design test cases corresponding to the most common invalid combinations of state-input. 99 | \end{itemize} 100 | 101 | \section{Requirement-Based Testing} 102 | \begin{itemize} 103 | \item Ensures that all requirements are covered 104 | 105 | \item Review: some implicit requirements are translated to explicit, reqs are prioritized 106 | \end{itemize} 107 | \subsection{RTM} 108 | \begin{itemize} 109 | \item Mapping between requirements and test cases for those requirements 110 | 111 | \item Makes sure customer needs are met, test cases capture the requirements, identify extra/missing features, track change requests 112 | 113 | \item Without RTM: unknown test coverage, expensive fixes later on in the cycle, hard to plan/track projects 114 | \end{itemize} 115 | 116 | 117 | \end{document} -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit4/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=0.6in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{subcaption} 6 | \usepackage{amsmath} 7 | \usepackage{geometry} 8 | \usepackage{array} 9 | 10 | 11 | \title{Software Testing (UE18CS400SB) \\ Unit 4} 12 | \author{Aronya Baksy} 13 | \date{November 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | \section{Acceptance Testing} 18 | \begin{itemize} 19 | \item Testing done in accordance with customer specified criteria (mutually agreed) 20 | 21 | \item Done in the customer environment by customer-specified individuals 22 | 23 | \item Types of Acceptance testing: 24 | \begin{itemize} 25 | \item User Acceptance Testing 26 | 27 | \item Business Acceptance Testing 28 | 29 | \item Contract Acceptance Testing 30 | 31 | \item Regulations Acceptance Testing 32 | 33 | \item Operational Acceptance Testing 34 | 35 | \item $\alpha$ and $\beta$ testing 36 | \end{itemize} 37 | 38 | \item Approaches to acceptance testing: 39 | \begin{itemize} 40 | \item \textbf{Design / Architecture based approach}: Full functionality, Cases that fail here may trigger review 41 | 42 | \item \textbf{Business vertical / customized instance}: 43 | Typically for products / frameworks 44 | Customized instances are put through testing based on business domain 45 | 46 | \item \textbf{ Deployment focused}: Large applications tested in complex hw or sw environments 47 | \end{itemize} 48 | 49 | \item Criteria for acceptance testing: 50 | \begin{itemize} 51 | \item SPecifying the business requirements (may be functional or non functional) 52 | 53 | \item May be process requirements (test coverage, training etc.) 54 | \end{itemize} 55 | 56 | \item Acceptance test cases cover: Critical functionality, End-to-end scenarios. New functionalities – during upgrade, Legal / statutory needs, Functionality to work on a defined corpus 57 | 58 | \item Acceptance test execution: on site, in the presence of dev engineers, with proper documentation of the execution process 59 | 60 | \item Challenges: criteria not easy to specify, multiple iterations with multiple cust. representatives needed 61 | \end{itemize} 62 | 63 | \section{Non-Functional Testing} 64 | \begin{itemize} 65 | \item Testing the non-functional attributes (performance, reliability, scalability, load, security, compatibility and others) of the system 66 | 67 | \item Reasons: 68 | \begin{itemize} 69 | \item Identify and correct design faults 70 | 71 | \item Identify limits of the system 72 | 73 | \item Whether the product can behave gracefully during stress and load conditions 74 | 75 | \item To ensure that the product can work without degrading for a long duration 76 | 77 | \item To compare with other products and previous versions 78 | 79 | \item To avoid un-intended side effects. 80 | \end{itemize} 81 | 82 | \item When the product has no basic issues and meets the minimum entry criteria, then the non-functional test can start. 83 | 84 | \item The non-functional testing is stopped when there is enough data to make a judgement. This must be aligned with release schedule 85 | \end{itemize} 86 | 87 | \subsection{Types of Non-Functional Testing} 88 | \subsubsection{Scalability Test} 89 | \begin{itemize} 90 | \item Ability of a system to handle increasing amounts of work without unacceptable level of performance (degradation) 91 | 92 | \item Scalability may be vertical or horizontal 93 | 94 | \item The test cases will focus on to test the maximum limits of the features, utilities and performing some basic operations 95 | \end{itemize} 96 | 97 | \subsubsection{Performance Test} 98 | \begin{itemize} 99 | \item Evaluating response time of product to perform required actions under stated conditions 100 | 101 | \item comparison with different versions of same product and competitive products. 102 | 103 | \item Test cases focus on getting response time and throughput for different operations, under defined environment and load 104 | \end{itemize} 105 | 106 | \subsubsection{Reliability Test} 107 | \begin{itemize} 108 | \item Evaluate the ability of the product to perform it's required functions under stated conditions for a specified period of time or number of iterations 109 | 110 | \item The test cases will focus on the product failures when the operations are executed continuously for a given duration or iterations 111 | 112 | \item Focus on frequently used operations 113 | \end{itemize} 114 | \subsubsection{Stress Test} 115 | \begin{itemize} 116 | \item Evaluate a system beyond the limits of the specified requirements or environment resources to ensure the product behavior is acceptable. 117 | 118 | \item Well-designed system shows graceful degradation and safe behaviour 119 | 120 | \item System should show performance decrease when resource/load ratio reduces, and symmetric increases when load is reduced 121 | \end{itemize} 122 | 123 | \subsubsection{Security Test} 124 | \begin{itemize} 125 | \item Both static and dynamic in nature 126 | 127 | \item Test tools identify vulnerabilities at application level (access control, SQL injection, buffer overflow, encryption, API design) 128 | 129 | \end{itemize} 130 | 131 | \subsubsection{Regression Test} 132 | \begin{itemize} 133 | \item A \textbf{black-box} technique, that ensures that code change does not impact existing functionality 134 | 135 | \item Types of regression testing: 136 | \begin{itemize} 137 | \item \textbf{Corrective}: No changes to requirements, reuse existing test cases 138 | 139 | \item \textbf{Retest-all}: Re-doing all tests again, not advisable for minor changes 140 | 141 | \item \textbf{Selective}: Using a subset of the test cases, analyze impact of new code on existing code 142 | 143 | \item \textbf{Progressive}: When change in spec, new test cases, ensures that new features do not break existing ones 144 | 145 | \item \textbf{Complete}: Used for major changes in code. 146 | 147 | \item \textbf{Partial}: Tests issues when new code is added to already existing code, ensures that a system continues to work after adding new code 148 | 149 | \item \textbf{Unit}: focus on a single unit, block all dependencies 150 | 151 | \end{itemize} 152 | \end{itemize} 153 | \end{document} -------------------------------------------------------------------------------- /src/ST/UE18CS400SB_ST_Unit5/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage[utf8]{inputenc} 3 | \usepackage[a4paper, portrait, margin=0.6in]{geometry} 4 | \usepackage{graphicx} 5 | \usepackage{subcaption} 6 | \usepackage{amsmath} 7 | \usepackage{geometry} 8 | \usepackage{array} 9 | 10 | 11 | \title{Software Testing (UE18CS400SB) \\ Unit 5} 12 | \author{Aronya Baksy} 13 | \date{November 2021} 14 | 15 | \begin{document} 16 | \maketitle 17 | \section{Testing Tools} 18 | \subsection{JUnit} 19 | \begin{itemize} 20 | \item An open-source testing framework for Java projects, based off XUnit 21 | 22 | \item Promotes test-driven development 23 | 24 | \item The testing code is embedded into the main Java program and by using the assert statements, and the programmers knowledge on the expectant result, we can test each component of the project 25 | 26 | \item Annotations identify test methods. Assert statements identify the results 27 | 28 | \item Tests run automatically, instant feedback, progress reports for test suites 29 | 30 | \item JUNit terminology: 31 | \begin{itemize} 32 | \item A \textbf{test case} tests a single method 33 | 34 | \item A \textbf{unit test} tests all methods in a class 35 | 36 | \item \textbf{Test suite} combines unit tests 37 | 38 | \item \textbf{Test fixture} provide support for test cases (envt setup, teardown) 39 | 40 | \item \textbf{Test runner} runs the test suite/test cases 41 | 42 | \item \textbf{Test result} summarises the test info of the test suite 43 | \end{itemize} 44 | 45 | \item Disadvantages of JUnit: can't do dependency testing, not suitable for high level testing, can't test multiple JVMs at once 46 | \end{itemize} 47 | 48 | \subsection{JMeter} 49 | \begin{itemize} 50 | \item An open-source GUI application (Apache project) used for load/performance testing of web applications (now supports many types of apps) 51 | 52 | \item Useful in testing the performance of both static and dynamic resources like files, Servlets, Perl scripts, Java Objects, Data Bases, Queries, FTP Servers and more 53 | 54 | \item Allows for distributed testing (using multithreaded framework) and supports plugin addition or removal as per requirements. 55 | 56 | \item Advantages: open source, GUI tool, load/stress/distributed test, robust reporting, multiple protocol support 57 | 58 | \item Disadvantages: Limited to web app testing, no JS support, high memory usage, no complex scenarios with JMeter thread group 59 | \end{itemize} 60 | 61 | \subsection{MonkeyTalk} 62 | \begin{itemize} 63 | \item Real and functional interactive tests, smoke tests for Android and iOS apps (available on Linux, MacOS and Win) 64 | 65 | \item Used to be free and open source before Oracle acquisition 66 | 67 | \item Generates result in HTML and XML formats, supports JUnit reporting 68 | 69 | \item MonkeyTalk works with Emulators, Simulators, Tethered and Actual Hardware devices 70 | 71 | \item Provides record and playback, can be used to validate controls/images/text or any property of an object, provides complete gesture support. 72 | 73 | \item Supports linked-in libraries and subprojects 74 | 75 | \item Components of MonkeyTalk: 76 | \begin{itemize} 77 | \item MonkeyTalk IDE: Eclipse-based IDE, used to record/playback/modify and manage test suites 78 | 79 | \item MonkeyTalk Agent: A platform specific library injected into the app for the tool to be able to recognize it and test it 80 | 81 | \item MonkeyTalk Scripts: 3 types (simple, parameterized, data-driven), can be in either JS/MonkeyTalk/Tabular scripting languages 82 | 83 | \item Advantages: easy to learn, cross platform, supports keyword-driven and data-driven concepts, JUnit reporting, testing of desktop and mobile apps 84 | 85 | \item Disadvantages: Need to install agent, no support for HTML5 and embedded webpages, hard to test games, bug discovery may take time due to lack of predefined test 86 | \end{itemize} 87 | \end{itemize} 88 | 89 | \subsection{Appium} 90 | \begin{itemize} 91 | \item An open source, cross-platform tool for automating native, mobile web and hybrid apps on Android, iOS and Windows desktop 92 | 93 | \item Appium philosophy: 94 | \begin{itemize} 95 | \item Shouldn't have to recompile or modify app to test it 96 | 97 | \item Shouldn't be locked into a specific lang or framework for testing 98 | 99 | \item Don't reinvent the wheel in terms of API design 100 | 101 | \item Open source in name and spirit 102 | \end{itemize} 103 | 104 | \item Appium uses client-server architecture. Appium server exposes REST API, that accepts request to start a test session and responds with a session ID 105 | 106 | \item Desired capabilites are sent in the request (as a JSON object) to identify the parameters for the test (e.g.: test platform iOS, allow Safari popups, etc.) 107 | 108 | \item Appium server runs the test server. It is written in node.js and available as an NPM package. Appium desktop is a GUI wrapper for the Appium server 109 | 110 | \item Appium client libraries in multiple languages support the Appium extended WebDriver protocol. 111 | 112 | \item Advantage: language agnostic, simple to use, same test base for multiple platforms 113 | 114 | \item Disadvantage: Slower than Espresso/XCUITests, complex to test cross-platform apps 115 | \end{itemize} 116 | \subsection{Robotium} 117 | \begin{itemize} 118 | \item Test framework for native and hybrid Android apps 119 | 120 | \item Test cases for automating GUI, functional, system, acceptance tests that can run on real device or emulator 121 | 122 | \item Based on JUnit and can be integrated with build tools like Maven and ANT 123 | 124 | \item Advantage: easy black-box testing, readable test cases, integrate with Maven, Ant, Gradle and other CI tools, works with APK and source code, IDE plgin available 125 | 126 | \item Disadvantage: one device, one app, one process at a time, not cross-platform (only for Android) 127 | \end{itemize} 128 | 129 | \subsection{Selenium} 130 | \begin{itemize} 131 | \item A portable testing framework that supports record-playback tools 132 | 133 | \item 4 components: Selenium IDE, Selenium remote control, WebDriver, Selenium Grid 134 | 135 | \item Selenium IDE: A GUI extension for Firefox/Chrome browsers that allows for recording, editing and debugging of functional tests 136 | 137 | \item Selenium WebDriver: used for automating web-based application testing to verify that it performs expectedly, run using test scripts 138 | 139 | \item Selenium Grid: tool used together with Selenium RC to run parallel tests across different machines and different browsers all at the same time 140 | 141 | \item Advantage: FOSS, multi browser and multi platform support, extensible, run tests in parallel 142 | 143 | \item Disadvantage: Only for web apps, no built-in object repository, slower, less support for data-drivent testing 144 | \end{itemize} 145 | 146 | \subsection{Selendroid} 147 | \begin{itemize} 148 | \item Selendroid is a test automation framework which drives off the UI of Android Native and hybrid applications (apps) and the mobile web. 149 | 150 | \item Android APK file must exist on the machine, where the selendroid-standalone server will be started to allow a customized selendroid-server for the app under test (AUT) 151 | 152 | \item Main selling point over Appium is \textbf{backward compatibility} (Selendroid supports Android API versions 10 onwards) 153 | 154 | \item Advantage: gesture support, multi-device support, hot plugging, inspector simplifies UI test development 155 | 156 | \item Disadvantage: need to recompile app for testing, complex for mobile webapps 157 | \end{itemize} 158 | 159 | \subsection{Magneto} 160 | \begin{itemize} 161 | \item Magneto is an open source test automation framework that allows to write smart and powerful tests for Android apps. 162 | 163 | \item Magneto is written in Python for Android devices. 164 | 165 | \item It utilizes the uiautomator tool via a Python wrapper and pytest as a test framework. 166 | 167 | \item Magneto can be triggered from CLI, IDE and CI tools 168 | \end{itemize} 169 | 170 | \section{Defect Management} 171 | \begin{itemize} 172 | \item Need a place to track and store all the defects logged during various testing phases and cycles 173 | 174 | \item Consider basic features like ticket statuses, email notifications, and the overall usability/experience 175 | 176 | \item Scalable, customizable, work with source control tool, Reporting capabilities 177 | 178 | \end{itemize} 179 | \end{document} --------------------------------------------------------------------------------