From 40bfda3e6c5dfbc15d2dd1d9a00102cdeb04a607 Mon Sep 17 00:00:00 2001 From: Dipam Sen Date: Thu, 8 Aug 2024 23:43:17 +0530 Subject: [PATCH] add link compilation, notes, timeyable --- README.md | 4 +- frontend/timetable.typ | 42 +++ notes/CS10003.typ | 161 ++++++++++++ notes/CS19003.typ | 221 ++++++++++++++++ notes/EE11003.typ | 17 ++ notes/MA11003.typ | 251 ++++++++++++++++++ notes/ME10001.typ | 71 +++++ notes/PH11003.typ | 414 ++++++++++++++++++++++++++++++ notes/PH19003.typ | 15 ++ notes/images/cartesian.png | Bin 0 -> 6126 bytes notes/images/critical.png | Bin 0 -> 9129 bytes notes/images/cylindricalcoord.png | Bin 0 -> 13638 bytes notes/images/overdamp.png | Bin 0 -> 11601 bytes notes/images/sphericalcoord.png | Bin 0 -> 16269 bytes notes/template.typ | 38 +++ pages/index.html | 107 ++++++++ pages/styles.css | 72 ++++++ timetable/sem01/CS.json | 115 +++++++++ timetable/sem01/index.json | 65 +++++ 19 files changed, 1592 insertions(+), 1 deletion(-) create mode 100644 frontend/timetable.typ create mode 100644 notes/CS10003.typ create mode 100644 notes/CS19003.typ create mode 100644 notes/EE11003.typ create mode 100644 notes/MA11003.typ create mode 100644 notes/ME10001.typ create mode 100644 notes/PH11003.typ create mode 100644 notes/PH19003.typ create mode 100644 notes/images/cartesian.png create mode 100644 notes/images/critical.png create mode 100644 notes/images/cylindricalcoord.png create mode 100644 notes/images/overdamp.png create mode 100644 notes/images/sphericalcoord.png create mode 100644 notes/template.typ create mode 100644 pages/index.html create mode 100644 pages/styles.css create mode 100644 timetable/sem01/CS.json create mode 100644 timetable/sem01/index.json diff --git a/README.md b/README.md index 07f6a60..696fa72 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# College Stuffs +# Coursework + +Course work for 4 Years B. Tech program (2024-28) in Computer Science and Engineering at IIT Kharagpur. diff --git a/frontend/timetable.typ b/frontend/timetable.typ new file mode 100644 index 0000000..c78105b --- /dev/null +++ b/frontend/timetable.typ @@ -0,0 +1,42 @@ +#set page(flipped: true) + +#let mat = json("../timetable/sem01/index.json").timeTableSlotMatrix + +#let lunchAfterPeriod = int((mat.lunchStartTime - mat.firstPeriodStartTime) / 100) + +#let getTime(start) = { + // start = 800 => 8:00 AM to 8:55 PM + let hour = int(start / 100) + let minute = calc.rem(start, 100) + let startTime = datetime(hour: hour, minute: minute, second: 0) + let endTime = datetime(hour: hour, minute: minute + 55, second: 0) + [ + #startTime.display("[hour repr:12]:[minute] [period]") - #endTime.display("[hour repr:12]:[minute] [period]") + ] +} + +#let days = ("monday", "tuesday", "wednesday", "thursday", "friday", "saturday") + +#table( + align: horizon + center, + columns: (auto,) + (1fr,) * lunchAfterPeriod + (auto,) + (1fr,) * (mat.numPeriods - lunchAfterPeriod), + table.header([Period], ..for i in range(lunchAfterPeriod) { + ([#(i + 1)],) + }, [], ..for i in range(lunchAfterPeriod, mat.numPeriods) { + ([#(i + 1)],) + }), + [Time], + ..for i in range(lunchAfterPeriod) { + ([#getTime(mat.firstPeriodStartTime + i * 100)],) + }, + table.cell(rowspan: 7)[Lunch], + ..for i in range(lunchAfterPeriod, mat.numPeriods) { + ([#getTime(mat.firstPeriodStartTime + i * 100 + 100)],) + }, + ..for day in days { + (upper(day), ..for i in range(mat.numPeriods) { + let slots = mat.days.at(day).at(i) + ([#slots.join("\n")],) + }) + }, +) diff --git a/notes/CS10003.typ b/notes/CS10003.typ new file mode 100644 index 0000000..55aa175 --- /dev/null +++ b/notes/CS10003.typ @@ -0,0 +1,161 @@ +#import "template.typ": * + +#show: project + += CS10003: Programming and Data Structures [Autumn 2024-25] + +- Course Website: https://cse.iitkgp.ac.in/~soumya/pds-th/pds-th.html + +- Additional Resources: https://cse.iitkgp.ac.in/pds/notes/ + +- Instructor: Prof. Pralay Mitra (Section 2) +- Course Coordinator: Prof. Soumyajit Dey + +- Class Test Dates: Aug 28th, Oct 29th (7-8) + +#dated(datetime(day: 5, month: 8, year: 2024)) + +Computer hardware is designed to "understand" certain sequences of 0s and 1s (binary code) as instructions, to perform +certain actions. + +When a user interacts with a computer, a third party software ("translator") is required to "translate" the user's +instructions (in a high-level language) into machine code. This software can be an _interpreter_ or a _compiler_. +- *Interpreter* converts high-level code to machine code line-by-line, executing each line immediately. +- *Compiler* converts high-level code to machine code all at once, and the machine code is executed later. + +*Syntax* is the rules defining the allowable structure of a program. + +*Semantics* is the meaning of the program. + +A program consists of various units. The smallest unit is a *token*, which is a sequence of characters that represents a +single unit of the program. Tokens can be keywords, identifiers, constants, operators, etc. A *statement* is an +instruction which is created by combining tokens. A *program* is a collection of statements. + +*Problem Solving* +- Clearly specify the problem. +- Create a flowchart/algorithm. +- Convert it to a program. +- Compile the program. +- Execute the program. + +#dated(datetime(day: 6, month: 8, year: 2024)) + +== Basic structure of a C program + +The following program is a simple C program that prints "Hello, World!" on the screen. + +```c +#include +int main() +{ + printf("Hello, World!\n"); + return 0; +} +``` + +The program consists of the following elements: + +- `#include `: This line imports the library file `stdio.h` which contains the `printf()` function and other + standard input/output functions. + +- `int main()`: This is the main function of the program. The program execution starts from this function. The code inside + the curly braces `{}` is the body of the function. + +- `printf("Hello, World!\n");`: This line prints the string "Hello, World!" to the standard output (usually the screen). + - The `\n` "escape sequence" is used to print a newline character. (Other escape sequences include `\t` for tab, `\\` for + backslash, etc.) + + +== Compilation + +We can compile the program using the `gcc` compiler. The command to compile the program is: + +```bash +gcc program.c +``` + +`gcc` compiles our C code into machine code, which is stored in a file named `a.out` (this file is called an executable +file). To run the program, we can use the following command: + +```bash +./a.out +``` + +To change the name of the output file, we can use the `-o` option: ```bash +gcc program.c -o program +./program +``` + +Steps of compilation: +1. The compiler compiles the source code and generates an object file. (`hello.o`) +2. The linker links the object file with the standard C library to generate an executable file. (`a.out`) + +== Variables, Data types and input + +A *variable* is a named memory location that stores a value. A *data type* specifies the type of data that a variable +can hold. + +In C, the basic data types are: +- `int`: Integer (2/4 bytes, format specifier `%d`) +- `float`: Floating-point number (real number) (4 bytes, format specifier `%f`) +- `char`: Character (1 byte, format specifier `%c`) + +To define a variable, you need to specify the data type and the variable name. For example: `int num;` creates a +variable of type `int` named `num`. + +The `scanf` function is used to read input from the user. For example, the following program reads an integer from the +user and prints it: + +```c +#include +int main() +{ + int num; + scanf("%d", &num); + printf("%d\n", num); + return 0; +} +``` + +In the `scanf` function, the `%d` format specifier is used to read an integer. The second argument passed to `scanf` is +`&num`, where the `&` operator is used to get the address of the variable `num`. This is required because `scanf` needs +to know the address of the memory location where the input should be stored. Thus, whatever value is entered by the user +will be stored in the variable `num`. + +== Expressions and Operators + +Arithmetic operators in C include `+`, `-`, `*`, `/`, `%`. Relational operators include `==`, `!=`, `>`, `<`, `>=`, +`<=`. Logical operators include `&&`, `||`, `!`. + +Note that the `/` (division) operator performs integer division if both operands are integers. For example, `5 / 2` will +be `2`. To perform floating-point division, at least one of the operands should be a floating-point number. For example, +`5.0 / 2` will be `2.5`. + +```c +#include +int main() +{ + int a; + + scanf("%d", &a); + + a = a + 10; + + printf("%d\n", a); + + return 0; +} +``` + +The above program reads an integer from the user, adds 10 to it, and prints the result. + +== Characters and Strings + +A *character* is a single alphabet, digit, or special symbol enclosed within single quotes (`' '`). A *string* is a +sequence of characters enclosed within double quotes (`" "`). + +So, `'A'` is a character, and `"Hello"` is a string. + +In terms of memory, a character occupies 1 byte, while a string occupies multiple bytes depending on the number of +characters. A string is terminated by a null character (`'\0'`), which is automatically added at the end of the string. +So, a string of length `n` occupies `n+1` bytes in memory. \ No newline at end of file diff --git a/notes/CS19003.typ b/notes/CS19003.typ new file mode 100644 index 0000000..3855ac8 --- /dev/null +++ b/notes/CS19003.typ @@ -0,0 +1,221 @@ +#import "@preview/cetz:0.2.2" +#import "template.typ": * + +#show: project + + += CS19003: Programming and Data Structures Lab [Autumn 2024-25] + +- Course Website: + +- Instructor: Prof. Pralay Mitra + + +#dated(datetime(year: 2024, month: 8, day: 6)) + +== Basic UNIX Commands + +#let data = ( + "passwd": [change password], + "pwd": [print current working directory], + "ls": [list files in current directory + - `-l`: display in long format + - `-a`: display hidden files], + "cd [path]": [change directory to given path + - `cd ..`: move to parent directory + - `cd`: move to home directory + - `cd /`: move to root directory], + "mkdir [dir]": [create a new directory], + "gedit [file]": [open a file in text editor], + "rm [file]": [delete a file], + "rm -r [dir]": [delete a directory recursively], + "cp [src] [dest]": [copy a file], + "cp -r [src] [dest]": [copy a directory recursively], + "mv [src] [dest]": [move a file], + "cat [file]": [display contents of a file], + "cat [file] >> [dest_file]": [append contents of a file to another file], + "touch [file]": [create an empty file], + "head [file]": [display first 10 lines of a file], + "tail [file]": [display last 10 lines of a file], + "wc [file]": [display word count of a file + - `-l`, `-w`, `-c`: display lines, words, characters respectively], + "chmod +x": [add execution permissions to a file], + "ln -s [filename] [link_name]": [create a symbolic link having alias `link_name`], + "tar -czvf [archive.tar.gz] [file/directory]": [compress directory to a tarball with name archive.tar.gz], + "tar -xzvf [archive.tar.gz]": [extract compressed folder], +) + +#table(columns: (0.7fr, 1fr), ..for (k, v) in data.pairs() { + (raw(k), v) +}) + +== Writing the first C program + +Using the command `gedit hello.c`, we can open a text editor to write a C program. The following is a simple program to +print "Hello, World!". + +```c +#include + +int main() { + printf("Hello, World!\n"); + return 0; +} +``` + +`printf` is a function in C to print a message to the output. The `\n` character is used to print a newline character at +the end of the message, so that anything printed after this will be on a new line. + +To compile the program, the `gcc` compiler is used. + +```bash +gcc hello.c +``` + +`gcc` compiles (converts) our source code in the file `hello.c` into machine code. This machine code is stored in a file +called `a.out` by default. This file is called an "executable file", because it can be directly executed by the +computer. To run this file we can write: + +```bash +./a.out +``` + +This will print the message "Hello, World!" to the terminal. + +== Accepting User Input + +To accept input from the user, we can use the `scanf` function. The following program reads an integer from the user and +prints it back. + +```c +#include + +int main() { + int num; + scanf("%d", &num); + printf("%d\n", num); + return 0; +} +``` + +In this program, `scanf` reads an integer from the user and stores it in the variable `num`. Note that the second +argument passed to `scanf()` is `&num`, where the `&` operator is used to get the address of the variable `num`. `scanf` +needs to know the address of the memory location where it should store the value read from the user. + +`%d` is called a format specifier. The following are a few of the format specifiers used in C: + +- `%d`: integer +- `%f`: float +- `%c`: character + +These format specifiers are used to specify the type of data that `scanf` should read from the user. Also, they are used +in `printf` to specify the type of data that should be printed. + +The program thus reads an integer from the user and prints the same back. + +We can also check the memory address of a variable using the `&` operator. + +```c +#include + +int main() { + int ht; + float wt; + + scanf("%d %f", &ht, &wt); // read integer and float from user + + printf("%d %d\n", &ht, ht); // print memory address and value of ht + + printf("%x %f\n", &wt, wt); // print memory address and value of wt +} +``` + +A sample output of this code, when the user enters `20`, and `4.5` is: + +``` +2018718112 20 +785331a4 4.500000 +``` + +Here, the `scanf` function reads an integer and a float from the user and stores them in the variables `ht` and `wt` +respectively. + +The first call to `printf` prints the memory address and value of `ht`. Note that both of these things are printed in +integer format (`%d`). So we see the memory address in decimal (`2018718112`) and the value of `ht` (`20`). + +The second call to `printf` prints the memory address and value of `wt`. Here, the memory address is printed in +hexadecimal format (`%x`)#footnote[ +Hexadecimal format is a base-16 number system. It uses the digits 0-9 and the letters A-F to represent numbers. It is +often used to represent memory addresses as it is more compact than decimal numbers. For example, the decimal number +`2018718112` is represented as `785331a4` in hexadecimal. +] and the value of `wt` is printed as a float (`%f`). + +*Sidenote 1*: If you try to enter a different integer, it is possible that the memory address of `ht` is printed as a +negative number. This happens when the value of the memory address is too large to be stored in an integer within 2/4 +bytes, and the value overflows to the negative side. + +This can be fixed by using `%ld` instead of `%d` to print the memory address. `%ld` is used to print long integers. + +```c +printf("%ld %d\n", &ht, ht); +``` + +*Sidenote 2*: Other than the `float` data type, there is also a `double` data type in C. The `double` data type has more +precision than the `float` data type. If it is used, the corresponding format specifier to be used is `%lf`. + +```c +double wt; +scanf("%lf", &wt); +printf("%x %lf\n", &wt, wt); +``` + +*Sidenote 3*: Note that when printing the float/double value, 6 decimal places are printed by default. This can be +changed by modifying the format specifier. For example, to print 4 decimal places, use `%.4f` (or `%.4lf`). + + +== Typecasting + +Consider the following program + +```c +#include + +int main() { + int a, b; + float c; + + a = 10; + b = 4; + + c = a / b; + printf("%f\n", c); + + c = (float) a / b; + printf("%f\n", c); + + c = (a * 1.0) / b; + printf("%f\n", c); + + c = (float) (a/b); + printf("%f\n", c); +} +``` + +The output of this program is: ``` +2.000000 +2.500000 +2.500000 +2.000000 +``` + +In the first case, `a/b` is an integer division (as both the numbers `a` and `b` are integers), which results in `2`. +This is then assigned to `c`, which is a float variable. + +In the second case, we typecast `a` to a float (by using the syntax `(float) a`), so the division is now a float +division, which results in `2.5`. (During division, if any of the operands is a float, we get float division.) + +In the third case, we multiply `a` by `1.0` to convert it to a float, and then divide by `b`. This also results in +`2.5`. + +In the fourth case, we first calculate `a/b` (which is `2`), and then typecast it to a float. So, `c` is assigned `2.0`. + diff --git a/notes/EE11003.typ b/notes/EE11003.typ new file mode 100644 index 0000000..c97c04a --- /dev/null +++ b/notes/EE11003.typ @@ -0,0 +1,17 @@ +#import "@preview/cetz:0.2.2" +#import "template.typ": * +#import "@preview/showybox:2.0.1": * +#show: project + + += EE11003: Electrical Technology [Autumn 2024-25] + +- Course Website: + +- Instructor: Dr. Santanu Kapat + +- Class Test Dates: + +#dated(datetime(year: 2024, month: 8, day: 7)) + +Introduction to Electrical Engineering. \ No newline at end of file diff --git a/notes/MA11003.typ b/notes/MA11003.typ new file mode 100644 index 0000000..da6be58 --- /dev/null +++ b/notes/MA11003.typ @@ -0,0 +1,251 @@ +#import "@preview/cetz:0.2.2" +#import "@preview/showybox:2.0.1": * +#import "@preview/ctheorems:1.1.2": * +#import "template.typ": * +#show: project + + += MA11003: Advanced Calculus [Autumn 2024-25] + +- Course Website: + +- Instructor: Prof. Mousumi Mandal + +- Class Test Dates: + +#dated(datetime(year: 2024, month: 8, day: 7)) + +#showybox( + title: "Food for thought", +)[ + Multivariable calculus deals with functions of more than one variable. Consider a function + + $ + f(x, y): RR^2 -> RR + $ + + In single variable calculus, limits are said to exist if the function approaches the same value, if the input approaches + a certain value either from the left or the right. + + #grid(columns: (1fr, auto), $ + lim_(x->a) f(x) "exists iff" lim_(x->a^+) f(x) = lim_(x->a^-) f(x) + $, cetz.canvas({ + import cetz.draw: * + + line((-1, 0), (1, 0)) + circle((0, 0), radius: 0.07, fill: black) + content((0, 0), v(1mm) + [a], anchor: "north") + + mark((-1, 0), (-0.3, 0), symbol: "straight") + mark((-1, 0), (-0.5, 0), symbol: "straight") + mark((1, 0), (0.5, 0), symbol: "straight") + mark((1, 0), (0.3, 0), symbol: "straight") + + content((1.3, 0), $RR$) + })) + + However, if we have our domain in $RR^2$, and our input is a point $(x_0, y_0)$ on the domain, then there are infinitely + many directions in which we can approach the point $(x_0, y_0)$! + + #grid( + columns: (auto, 1fr), + gutter: 1.5em, + cetz.canvas({ + import cetz.draw: * + + line((-1, 0), (1, 0)) + line((0, -1), (0, 1)) + + content((1.2, -0.7), $RR^2$) + + translate((0.6, 0.4)) + + line((-0.7, 0), (0.7, 0), stroke: luma(160)) + line((0, -0.7), (0, 0.7), stroke: luma(160)) + + mark((-1, 0), (-0.2, 0), symbol: "straight", scale: 0.7) + mark((-1, 0), (-0.4, 0), symbol: "straight", scale: 0.7) + mark((1, 0), (0.4, 0), symbol: "straight", scale: 0.7) + mark((1, 0), (0.2, 0), symbol: "straight", scale: 0.7) + + mark((0, -1), (0, -0.2), symbol: "straight", scale: 0.7) + mark((0, -1), (0, -0.4), symbol: "straight", scale: 0.7) + mark((0, 1), (0, 0.4), symbol: "straight", scale: 0.7) + mark((0, 1), (0, 0.2), symbol: "straight", scale: 0.7) + + circle((0, 0), radius: 0.07, fill: black) + content((0, 0), h(1mm) + $(x_0, y_0)$ + v(2mm), anchor: "south-west") + }, length: 1.2cm), + )[ + In fact, there are infinitely many paths that can be taken to approach the point $(x_0, y_0)$, since the path followed + can be any curve in the plane! + + So, how can we create a consistent definition of the limit for a function of two variables, which is independent of the + path taken to approach the point? + ] + + Another consequence of the existence of infinite directions, is that reaching $infinity$ can have many different + meanings, as going away from the origin in $RR^2$ can be done in infinitely many directions! +] + +Some basic theorems in Single Variable Calculus: + +#theorem( + name: "Extreme Value Theorem", +)[ + Let $f$ be a continuous function on a closed interval $[a, b]$. Then $f$ must attain a maximum and minimum each at least + once. + + i.e, $exists c, d in [a, b] st $$ f(c) <= f(x) <= f(d) forall x in [a, b] $ +] + +#theorem[ + If $f$ is continuous on $[a, b]$ and differentiable on $(a, b)$ and attains maxima or minima at some point $c in (a, b)$, + then $f'(c) = 0$ +] + +#theorem( + name: "Intermediate Value Theorem", +)[ + #grid( + columns: (1fr, auto), + [Let $f: [a, b] -> RR$ be continuous in $[a, b]$. Then, $forall u in [f(a), f(b)] exists c in [a, b] st f(c) = u $], + cetz.canvas({ + import cetz.draw: * + line((-0.2, 0), (1, 0)) + line((0, -0.2), (0, 1)) + + let (a, b, c, d) = ((0.2, 0.15), (0.8, 0.8), (0.4, 1), (0.6, 0.2)) + + line((0, 0.15), (1, 0.15), stroke: (dash: "dotted")) + line((0, 0.8), (1, 0.8), stroke: (dash: "dotted")) + + line((0, 0.4), (1, 0.4), stroke: gray) + line((0.29, 0), (0.29, 0.4), stroke: gray) + bezier(a, b, c, d) + }, length: 1.2cm), + ) +] + +#theorem( + name: "Rolle's Theorem", +)[ + #grid(columns: (1fr, auto), [Let $f: [a, b] -> RR$ be + + continuous in $[a, b]$ + + differentiable in $(a, b)$ + + $f(a) = f(b)$ + + Then, $exists c in (a, b) st f'(c) = 0$], cetz.canvas({ + import cetz.draw: * + line((-0.2, 0), (1, 0)) + line((0, -0.2), (0, 1)) + + let (a, b, c, d) = ((0.1, 0.5), (0.9, 0.5), (0.4, 1.2), (0.6, 0)) + bezier(a, b, c, d) + + line((0, 0.5), (1, 0.5), stroke: (dash: "dotted")) + line((0.15, 0.73), (0.45, 0.73)) + line((0.6, 0.36), (0.85, 0.36)) + }, length: 2cm)) + + Geometrically, it means that there exists a point $c in (a, b)$ where the tangent to the curve is parallel to the $x$-axis. +] + +Applications of Rolle's Theorem: + +#theorem( + name: "Application 1", +)[ + If $p(x)$ is a polynomial of degree $n$ with $n$ real roots, then all the roots of $p'(x)$ are also real. +][ + *Proof*: + + Let the roots of $p(x)$ be $alpha_1 < alpha_2 < ... < alpha_n$. + + Then, $p(alpha_1) = p(alpha_2) = ... = p(alpha_n) = 0$. + + Applying Rolle's theorem in $[alpha_1, alpha_2]$, $[alpha_2, alpha_3]$, ..., $[alpha_(n-1), alpha_n]$, we get that in + each of these $n-1$ intervals, there exists a point where $p'(x) = 0$. + + Hence, $p'(x)$ has $n-1$ real roots. +] + +#question( + title: [ + Q: Using Rolle's Theorem, show that $x^13 + 7 x^3 - 5 = 0$ has exactly one real root in $[0, 1]$. + ], +)[ + Let $f(x) = x^13 + 7 x^3 - 5$. + + $f(0) = -5, f(1) = 0$, thus from the intermediate value theorem, there is at least one root in $[0, 1]$. + + Suppose that there exist more than one root in $[0, 1]$. Let any two of them be $alpha, beta$ with $alpha < beta$. + + Then, $f(alpha) = f(beta) = 0$. Applying Rolle's theorem in $[alpha, beta]$, we get that there exists a point $c in (alpha, beta)$ where $f'(c) = 0$. + + $ + f'(c) = 13 c^12 + 21 c^2 = 0 + $ + + However, there exists no such $c in (alpha, beta)$ that satisfies the above equation. + + Hence, $f(x)$ has only one root in $[0, 1]$. +] + +#question( + title: [ + Q: Prove that if $a_0, a_1, ..., a_n$ are real numbers such that $a_0/(n+1) + a_1/n + ... + a_(n-1)/2 + a_n = 0$, then $exists x in (0, 1) st a_0 x^n + a_1 x^(n-1) + ... + a_(n-1) x + a_n = 0$. + ], +)[ + Let $f(x) = a_0 x^n + a_1 x^(n-1) + ... + a_(n-1) x + a_n$. + + Let $F(x) = integral f(x) dif x = a_0 x^(n+1) / (n + 1) + a_1 x^(n) / (n ) + ... + a_(n-1) x^2 / 2 + a_n x$. + + $F(1) = a_0/(n+1) + a_1/n + ... + a_(n-1)/2 + a_n = 0$ (given). Also, $F(0) = 0$. + + Applying Rolle's theorem in $[0, 1]$ on $F(x)$, we get that there exists a point $c in (0, 1)$ where $F'(c) = 0$. + + Thus, $exists x in (0, 1) st f(x) = 0 $#h(1fr)$qed$ +] + +#theorem( + name: "Lagrange's Mean Value Theorem", +)[ + #grid(columns: (1fr, auto), [If $f: [a, b] -> RR$ is + 1. continuous in $[a, b]$ + 2. differentiable in $(a, b)$ + then $exists c in (a, b) st f'(c) = (f(b) - f(a)) / (b - a)$], cetz.canvas({ + import cetz.draw: * + line((-0.2, 0), (1, 0)) + line((0, -0.2), (0, 1)) + + let (a, b, c, d) = ((0.1, 0.2), (0.9, 0.6), (0.4, 1.2), (0.6, 0)) + bezier(a, b, c, d) + + line((0.1, 0.2), (0.9, 0.6), stroke: (dash: "dotted")) + line((0.1, 0.5), (rel: (), to: (0.4, 0.2))) + line((0.55, 0.33), (rel: (), to: (0.4, 0.2))) + }, length: 2cm)) + + Geometrically, it means that there exists a point $c in (a, b)$ where the tangent to the curve is parallel to the secant + line. +][ + *Proof*: + + Let $g(x)$ be the equation of the secant line passing through $(a, f(a))$ and $(b, f(b))$. + + $g(x) - f(a) = (f(b) - f(a)) / (b - a) (x - a)$ + + Consider the function $F(x) = f(x) - g(x)$. + + $F(a) = F(b) = 0$. (as $g(a) = f(a)$ and $g(b) = f(b)$) + + Applying Rolle's theorem in $[a, b]$ on $F(x)$, we get that there exists a point $c in (a, b)$ where $F'(c) = 0$. + + $ + => f'(c) - g'(c) = 0\ + => f'(c) = g'(c)\ + => f'(c) = (f(b) - f(a)) / (b - a) + $ #h(1fr) $qed$ +] + diff --git a/notes/ME10001.typ b/notes/ME10001.typ new file mode 100644 index 0000000..b2cedd5 --- /dev/null +++ b/notes/ME10001.typ @@ -0,0 +1,71 @@ +#import "@preview/cetz:0.2.2" +#import "template.typ": * + +#show: project + + += ME10001: Basic Engineering Mechanics [Autumn 2024-25] + +- Course Website: + +- Instructor: Prof. Arnab Roy +- Course Coordinator: + +- Class Test Dates: 29th August, 6th November (6:30 - 9) + +#dated(datetime(year: 2024, month: 8, day: 5)) + + +== Books +- Statics and Mechanics of Materials by Ferdinand P. Beer, E. Russell Johnston Jr., John T. DeWolf and David F. Mazurek, + 1st edition +- Vector Mechanics for engineers - Statics and Dynamics Ferdinand P. Beer, E. Russell Johnston Jr., and co-authors, 9th + edition +- Mechanics of Materials P. Beer, E. Russell Johnston Jr., and co-authors, 6th edition + +== Introduction + +Mechanics is the branch of physics which deals with the study of state of motion of bodies under the action of forces. +- A broad classification of mechanics is as *Classical Mechanics* - deals with macroscopic objects, *Statistical + Mechanics* - deals with large number of particles, *Quantum Mechanics* - deals with subatomic particles. +- A further subdivision of classical mechanics can be *rigid body dynamics*, *deformable body dynamics* and *fluid + dynamics*. +- *Statics* deals with the study of bodies at rest or in equilibrium, *Dynamics* deals with the study of bodies in motion. +- This course deals primarily with statics of rigid bodies. + +#dated(datetime(year: 2024, month: 8, day: 7)) + +/ Rigid Body: collection of large number of particles, the distance between any two particles remains constant. + +/ Particle: small amount of matter that occupies a single point in space. + +== Coordinate System for Vectors + + +// Cartesian +// #cetz.canvas({ +// import cetz.draw: * + +// line((0, 0), (1, 0)) +// line((0, 0), (0, 1)) +// line((0, 0), (0, 0, -1)) + + +// }) + +#grid( + columns: 3, + align: center + horizon, + figure(image("images/cartesian.png"), caption: [Cartesian Coordinate System\ $(x, y, z)$]), + figure(image("images/sphericalcoord.png"), caption: [Spherical Coordinate System\ $(r, theta, phi)$]), + figure(image("images/cylindricalcoord.png", width: 90%), caption: [Cylindrical Coordinate System\ $(r, theta, z)$]), +) + +== Types of Vectors + +/ Free Vector: can move anywhere in the plane + +/ Sliding Vector: is restricted to move along a line, i.e. has unique line of action but no unique point of application + +/ Fixed vector: has unique point of application and unique line of action + diff --git a/notes/PH11003.typ b/notes/PH11003.typ new file mode 100644 index 0000000..c3ba05b --- /dev/null +++ b/notes/PH11003.typ @@ -0,0 +1,414 @@ +#import "@preview/cetz:0.2.2" +#import "template.typ": * +#import "@preview/showybox:2.0.1": * +#show: project + + += PH11003: Physics of Waves [Autumn 2024-25] + +- Course Website: https://sites.google.com/view/iitkgp-physics-of-waves + +- Instructor: Dr. Samudra Roy +- Course Coordinator: Dr. Samudra Roy + +- Class Test Dates: 7th September, 9th November (4-7) + +#dated(datetime(year: 2024, month: 8, day: 5)) + +Waves are disturbances that propagate through a medium. They carry energy from one place to another without the transfer +of matter. + +The concept of waves is omnipresent in physics. It appears in the following disciplines: + +- Mechanics +- Electromagnetism +- Optics +- Quantum Mechanics + +Any mathematical quantity which is a function of space and time, is said to be a wave if it satisfies the wave equation. + +#let fun = $Phi(x, t)$ + +#numbered[$ + dd2(fun, t) = 1/v^2 dd2(fun, x) + $ ] + +Moving towards electrodynamics, in free space in absence of any source, we can write the following Maxwell's equations: + +#let Ef = $arrow(E)$ +#let Bf = $arrow(B)$ + +$ + nabla dot Ef &= 0\ + nabla dot Bf &= 0\ + nabla times Ef &= -dd(Bf, t)\ + nabla times Bf &= mu_0 epsilon_0 dd(Ef, t) +$ + +where, $nabla$ is the del operator, defined as + +$ + nabla = dd(, x) hat(i) + dd(, y) hat(j) + dd(, z) hat(k)\ + nabla^2 = lr(|dd2(, x) + dd2(, y) + dd2(, z)|) +$ + +On solving the above equations, the we obtain: + +$ + nabla^2 Ef = mu_0 epsilon_0 dd2(Ef, t) +$ + +If we consider $Ef$ to be confined in one dimension (say, $x$), then the above equation simplifies to: + +#numbered[$ + dd2(Ef, x) = mu_0 epsilon_0 dd2(Ef, t) + $] + +which matches with @base as a wave equation, with $v = 1/sqrt(mu_0 epsilon_0) = c$. + +== Simple Harmonic Motion + +Considering a spring system, we can find the motion of a block attached to a spring by modelling the spring force with +Hooke's law: + +#let xd = $dot(x)$ +#let xdd = $dot.double(x)$ + +$ + F = - k x\ + m xdd + k x &= 0\ + xdd + (k/m) x &= 0\ + xdd + omega^2 x &= 0 +$ + +By some manipulation of the second equation, we can prove conservation of mechanical energy: + +$ + m xdd + k x &= 0\ + m xd xdd + k x xd &= 0\ + dd(, t)(1/2 m xd^2 + 1/2 k x^2) &= 0\ + underbrace(1/2 m xd^2, "Kinetic Energy") + underbrace(1/2 k x^2, "Potential energy") &= E +$ + +The expression of potential energy can be calculated from $integral_x^0 F dif x$: + +General solution for the SHM equation is: + +$ + x &= x_0 sin (omega t + phi.alt_0) +$ + +Alternatively, it can be written in an exponential form involving complex numbers: + +$ + x = x_0 e^i(omega t + phi.alt_0) +$ +which is said to be "well-behaved" as it is easier to work with. (The real part of the above expression gives the actual +solution.) + +For analysing this kind of situations, a helpful tool is a phase diagram, or a phase space plot, which is a plot of $p_x$ vs $x$, +over time. + +For the ideal simple harmonic oscillator: + +$ + 1/2 m xd^2 + 1/2 k x^2 = E\ + p_x^2/(2m) + 1/2 k x^2 = E\ +// (p_x)^2/(sqrt(2 E m))^2 + x^2 / display((sqrt((2E)/k))^2) = 1 +$ + +#figure( + cetz.canvas( + { + import cetz.draw: * + + line((-2, 0), (2, 0), thickness: 0.1, mark: (end: ">"), name: "x") + content((), $x$, anchor: "west") + + line((0, -1), (0, 1), thickness: 0.1, mark: (end: ">"), name: "y") + content((), $p_x$ + v(1mm), anchor: "south") + + mark((0.8 * calc.cos(30deg), 0.6 * calc.sin(30deg)), (rel: (), to: (-0.1, 0.1)), symbol: "stealth", fill: black) + + + + circle((0, 0), radius: (0.8, 0.6)) + + circle((0.8, 0), radius: 0.03) + }, + length: 2cm, + ), + caption: [The $p_x$-$x$ phase plot for an ideal simple harmonic oscillator is an ellipse.], +) + +If we calculate the area of the ellipse, it turns out to be proportional to the energy of the system. + +From this observation we can infer, that in case of a damped oscillator, the area of the ellipse will decrease with +time, and the phase plot will spiral inwards. + +#dated(datetime(year: 2024, month: 8, day: 6)) + + +The differential equation for a simple harmonic oscillator is: + +$ + xdd + omega_0^2 x = 0 +$ + +To solve this equation, it is convenient to rewrite the equation in the energy form: + + +$ + 1/2 m &xd^2 + 1/2 k x^2 = E\ + + &xd^2 + k/m x^2 = (2E)/m\ + + dd(x, t) &= sqrt((2E)/m- k/m x^2)\ + dd(x, t) &= sqrt(k/m) sqrt(alpha^2 - x^2)\ + dd(x, t) &= omega_0 sqrt(alpha^2 - x^2) +$ +#h(1fr)where $omega_0 = k/m$ and $alpha = sqrt((2E)/k)$. + + + +$ + integral (dif x) / sqrt(alpha^2 - x^2) = omega_0 integral (dif t)\ + sin^(-1)(x/alpha) = omega_0 t + phi.alt_0\ + #box(stroke: 1pt, outset: (x: 3mm, y: 2mm))[$x = alpha sin(omega_0 t + phi.alt_0)$] +$ + +Many mechanical systems follow such a simple harmonic motion, such as: +- A mass attached to a spring +- A pendulum +- A vibrating string +- A tortional pendulum +etc. + +== Eigenfunctions and Eigenvalues + +If $H$ is an operator defined on a function space, then the eigenfunctions of $H$ are the functions $f$ such that + +$ + H f = lambda f +$ + +where $lambda$ is the eigenvalue corresponding to the eigenfunction $f$. + +For example, for the operator $dd(, t)$, one of the eigenfunctions is $e^(lambda t)$, with the eigenvalue $lambda$. + +$ + dd(, t) e^(lambda t) = lambda e^(lambda t) +$ + +When dealing with a certain operator, it is often useful to work with its eigenfunctions and eigenvalues, as they can +simplify the problem significantly. + +In this case, we are concerned with operators $dd(, x)$ and $dd2(, t)$. For both of these operators, the exponential +function $e^(lambda x)$ is an eigenfunction. Thus, it is useful to work with the exponential form of the harmonic +oscillator, $x = e^(i(omega_0 t + phi.alt))$. + +Note that functions $sin$ and $cos$ are indeed eigenfunctions of the operator $dd2(, t)$ but not for $dd(, t)$. (The +first order differential operator will show up in our equation when modelling damping.) + +== Functions as vectors and Taylor Series + +Consider a vector $arrow(v)$ in a vector space. We can expand this vector in terms of a basis set of vectors $arrow(e_i)$: + +#grid(columns: (0.3fr, 1fr), align: center + horizon, cetz.canvas({ + import cetz.draw: * + + line((0, 0), (0.7, 0.8), name: "v", mark: (end: ">")) + + line((0, 0), (0.8, 0), name: "e_1", mark: (end: (symbol: "stealth", fill: black))) + line((0, 0), (0, 0.8), name: "e_2", mark: (end: (symbol: "stealth", fill: black))) + content((0.8, 0.8), $arrow(v)$, anchor: "south") + content((1, 0), $arrow(e_1)$, anchor: "south") + content((0, 0.9), $arrow(e_2)$, anchor: "south") +}, length: 2cm), $ + arrow(v) &= v_1 arrow(e_1) + v_2 arrow(e_2)\ + &= sum_(i=1)^n v_i arrow(e_i) +$) + +Note that the basis vectors $arrow(e_i)$ are *linearly independent* and span the vector space. In this case, they also +are *orthogonal* to each other. The coefficients $v_i$ are components of the vector $arrow(v)$ in the basis $arrow(e_i)$. + +Analogously, any function $f(x)$ can be expanded in terms of a basis set of functions $e_i (x)$: + +$ + f(x) &= c_1 e_1(x) + c_2 e_2(x) + ... + c_n e_n (x)\ + &= sum_(i=1)^n c_i e_i (x) +$ + +We must choose the basis functions $e_i (x)$ to be linearly independent. + +Some examples of sets of basis functions that are orthogonal to each other are: + +1. ${1, x, x^2, x^3, x^4, ...} $ (polynomials) +2. ${sin(x), sin(2x), sin(3x), ...} $ (sine functions) +3. ${cos(x), cos(2x), cos(3x), ...} $ (cosine functions) + + +If we consider the set 1. above, we can expand any function $f(x)$ in terms of the basis functions $1, x, x^2, x^3, ...$. +The series thus obtained is called a *Taylor series*. + +Similarly, if we consider the set 2/3 above, we can expand any function $f(x)$ in terms of the basis sinusoidal +functions. The series thus obtained is called a *Fourier series*. + +To find the coefficients of the Taylor series, we can exploit the fact that differentiating a polynomial reduces its +degree: + +$ + f(x) = c_0 + c_1 x + c_2 x^2 + c_3 x^3 + ... + c_n x^n\ +$$ c_0 &= f(0)\ +c_1 &= f'(x)|_(x=0)\ +c_2 &= lr((f''(x))/2!|)_(x=0)\ +c_3 &= lr((f'''(x))/3!|)_(x=0)\ + &dots.v $ + +Thus, + +$ + f(x) = f(0) + f'(0) x + (f''(0))/2! x^2 + (f'''(0))/3! x^3 + ... + (f^n (0))/n! x^n + ... +$ + +Some common Taylor series expansions are: + +$ + e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...\ + + sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...\ + + + cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + ... +$ + +The above three expansions can be correlated with the Euler's formula: + +$ + e^(i x) &= 1 + i x - x^2 / 2! - i x^3 / 3! + x^4 / 4! + ...\ + + & = [1 - x^2 / 2! + x^4 / 4! - ...] + i [x - x^3 / 3! + x^5 / 5! - ...]\ + &= cos(x) + i sin(x) +$ + +== Damped Harmonic Oscillator + +A damping force is modelled by a force term that is proportional to the velocity of the object: + +$ + F = - k x - gamma xd\ + + m xdd + gamma xd + k x = 0\ + dd2(x, t) + gamma/m dd(x, t) + k/m x = 0 +$ +The above differential equation is a second order ordinary homogeneous linear differential equation with constant +coefficients. + +#showybox(title: "Recap: Solving second order ODEs", breakable: true)[ + A second order linear ordinary differential equation is of the form: + + $a dd2(y, x) + b dd(y, x) + c y = 0$ + + Consider a solution + $ + y tilde e^(m x) + $ + + Substituting the above solution in the differential equation, we get: + + $ + a m^2 e^(m x) + b m e^(m x) + c e^(m x) &= 0\ + e^(m x) (a m^2 + b m + c) &= 0\ + a m^2 + b m + c &= 0 + $ + + If $m_1$ and $m_2$ are the roots of the characteristic equation: + + $m = (-b plus.minus sqrt(b^2 - 4 a c)) / (2 a)$ + + Thus, the general solution of the differential equation is: + + If $m_1 eq.not m_2$: + + $ + y = c_1 e^(m_1 x) + c_2 e^(m_2 x) + $ + + If $m_1 = m_2$: + + $ + y = (c_1 + c_2 x )e^(m x) + $ + +] + +To solve the damped oscillator, we will rephrase the equation by taking $Gamma = gamma / (2m)$ and $omega_0^2 = k/m$: + +$ + dd2(x, t) + 2 Gamma dd(x, t) + omega_0^2 x = 0 +$ + +Substituting $x tilde e^(m t)$, we get: + +$ + m^2 + 2 Gamma m + omega_0^2 = 0\ + + m = -Gamma plus.minus sqrt(Gamma^2 - omega_0^2) +$ + +Consider $beta = sqrt(Gamma^2 - omega_0^2)$: + +Thus the general solutions are: + +1. *Case 1*: If $Gamma^2 > omega_0^2$: Overdamping + +$ + x(t) = c_1 e^(m_1 t) + c_2 e^(m_2 t)\ + m_1 = -Gamma + sqrt(Gamma^2 - omega_0^2)\ + m_2 = -Gamma - sqrt(Gamma^2 - omega_0^2)\ + + => #box(stroke: 1pt, outset: 2mm)[$x(t) = e^(-Gamma t) [c_1 e^(beta t) + c_2 e^(-beta t)$]] +$ +$c_1$ and $c_2$ are determined by the initial conditions. If we take boundary conditions - $x(t=0) = 0$ and $xd(t=0) = v_0$, +we can find the values of $c_1$ and $c_2$. + +#showybox(title: [Hyperbolic Trig functions], breakable: true)[ + $ sinh(x) = (e^x - e^(-x))/2\ + cosh(x) = (e^x + e^(-x))/2\ + tanh(x) = sinh(x)/cosh(x)\ $ +][$ + sinh(i x) = i sin(x)\ + + cosh(i x) = cos(x)\ + $][$ + sinh'(x) = cosh(x)\ + + cosh'(x) = sinh(x) + $ + +] + +On using the boundary conditions we get + +$ + x(t) = v_0 / beta e^(-Gamma t) sinh(beta t) +$ + +#image("images/overdamp.png", width: 40%) + +2. *Case 2*: If $Gamma^2 = omega_0^2$: Critical damping + +$ + x(t) = e^(-Gamma t) (c_1 + c_2 t) +$ + +By using same boundary conditions, + +$ + x(t) = v_0 t e^(-Gamma t) +$ +#image("images/critical.png", width: 40%) + +In this case, the amplitude of the oscillation decays faster than the overdamped case. + + diff --git a/notes/PH19003.typ b/notes/PH19003.typ new file mode 100644 index 0000000..de3d16f --- /dev/null +++ b/notes/PH19003.typ @@ -0,0 +1,15 @@ +#import "@preview/cetz:0.2.2" +#import "template.typ": * + +#show: project + + += PH19003: Physics Laboratory [Autumn 2024-25] + + + +#dated(datetime(year: 2024, month: 8, day: 5)) + + +Measurements - Using a Vernier Calipers, Screw Gauge to measure the diameter of a wire, thickness of a glass plate, etc. +and using error analysis to find their volumes and relative errors. \ No newline at end of file diff --git a/notes/images/cartesian.png b/notes/images/cartesian.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec5c4edb0a7293cd10ca479c6bb5fc350bb3a41 GIT binary patch literal 6126 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 literal 0 HcmV?d00001 diff --git a/notes/images/cylindricalcoord.png b/notes/images/cylindricalcoord.png new file mode 100644 index 0000000000000000000000000000000000000000..73d3241c3dbc2b4c3b25bfd1b81f679a21b25091 GIT binary patch literal 13638 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 kXCVm$-qd@z$w?0YZL;5jIK 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 IvajF%7kin*zW@LL literal 0 HcmV?d00001 diff --git a/notes/images/sphericalcoord.png b/notes/images/sphericalcoord.png new file mode 100644 index 0000000000000000000000000000000000000000..98e8138d537adee1728aae46079fa4f015de5774 GIT binary patch literal 16269 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 LD}y1D#zFrF3CPQ| literal 0 HcmV?d00001 diff --git a/notes/template.typ b/notes/template.typ new file mode 100644 index 0000000..f54781b --- /dev/null +++ b/notes/template.typ @@ -0,0 +1,38 @@ +#import "@preview/showybox:2.0.1": * + +#let theorem(name: "Theorem", ..body) = { + showybox(title: name, frame: (title-color: green.darken(20%)), title-style: (weight: 800), ..body) +} + +#let question = showybox.with(frame: (title-color: blue)) + +#let dated(date) = { + block(fill: blue.lighten(50%), inset: 0.5em, radius: 1em)[Lecture on #date.display()] +} + +#let numbered(body) = { + set math.equation(numbering: "(1)") + body +} + +#let dd(t, b) = $(dif #t)/(dif #b)$ +#let dd2(t, b) = $(dif^2 #t)/(dif #b^2)$ +#let st = $"s.t."$ +#let exists = math.class("relation", math.exists) +#let forall = math.class("relation", math.forall) + +#let project(body) = { + set text(font: "Atkinson Hyperlegible") + + show link: underline + + show math.equation.where(block: false): math.display + + set figure(numbering: none) + + show raw.where(block: false): box.with(fill: luma(230), inset: (x: 1mm), outset: (y: 1mm)) + + show raw.where(block: true): set block(fill: luma(240), width: 100%, outset: (y: 0.65em), inset: (x: 0.65em), radius: 2mm, stroke: 1pt + luma(200)) + + body +} \ No newline at end of file diff --git a/pages/index.html b/pages/index.html new file mode 100644 index 0000000..b2a02b0 --- /dev/null +++ b/pages/index.html @@ -0,0 +1,107 @@ + + + + + + + + + CSE 2024 - IIT KGP + + + +
+

IITKGP - 2024 CS - Resources

+ +

Links to websites containing notes/slides/resources of courses.

+ +

Semester 1

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subject NumberSubject NameLink
MA11003Advanced Calculus + Institute Moodle Server +
CS10003Programming and Data Structures + Course site +
CS19003Programming and Data Structures Lab + CSE Moodle Server +
ME11003Basic Engineering Mechanics + Content shared through Email +
PH11003Physics of Waves + Course site +
PH19003Physics Lab + Demos +
EE11003Electrical Technology + Content shared through Email +
+ + + Compiled by Dipam Sen + +
+ + diff --git a/pages/styles.css b/pages/styles.css new file mode 100644 index 0000000..50b7fc6 --- /dev/null +++ b/pages/styles.css @@ -0,0 +1,72 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: "Roboto", sans-serif; + background-color: #f4f4f4; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +h1 { + margin-bottom: 20px; + margin-top: 40px; +} + +h2 { + margin-bottom: 10px; + margin-top: 20px; +} + +p { + margin-bottom: 10px; +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +table th, +table td { + padding: 10px; + border: 1px solid #5b5b5b; +} + +table th { + background-color: #5b5b5b; + color: #fff; +} + +table td { + background-color: #fff; +} + +table tr:nth-child(even) td { + background-color: #f4f4f4; +} + +table tr:hover td { + background-color: #e9e9e9; +} + +a { + color: #3401ff; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +small { + color: #5b5b5b; +} diff --git a/timetable/sem01/CS.json b/timetable/sem01/CS.json new file mode 100644 index 0000000..4c90521 --- /dev/null +++ b/timetable/sem01/CS.json @@ -0,0 +1,115 @@ +{ + "branchName": "CS", + "name": "Semester 1", + "courses": [ + { + "subjectNo": "MA11003", + "subjectName": "ADVANCED CALCULUS", + "LTP": [3, 1, 0], + "credit": 4 + }, + { + "subjectNo": "CS10003", + "subjectName": "PROGAMMING AND DATA STRUCTURES", + "LTP": [3, 0, 0], + "credit": 3 + }, + { + "subjectNo": "CS19003", + "subjectName": "PROGAMMING AND DATA STRUCTURES LABORATORY", + "LTP": [0, 0, 3], + "credit": 2 + }, + { + "subjectNo": "ME11003", + "subjectName": "BASIC ENGINEERING MECHANICS", + "LTP": [3, 1, 0], + "credit": 4 + }, + { + "subjectNo": "PH11003", + "subjectName": "PHYSICS OF WAVES", + "LTP": [3, 1, 0], + "credit": 4 + }, + { + "subjectNo": "PH19003", + "subjectName": "PHYSICS LABORATORY", + "LTP": [0, 0, 3], + "credit": 2 + }, + { + "subjectNo": "EE11003", + "subjectName": "ELECTRICAL TECHNOLOGY", + "LTP": [3, 1, 0], + "credit": 4 + }, + { + "subjectNo": "EA10007", + "subjectName": "EXTRA ACADEMIC ACTIVITY-I", + "LTP": [0, 0, 3], + "credit": 1 + } + ], + + "timeTable": { + "MA11003": { + "section": 2, + "slot": "E", + "room": "NR112", + "branches": ["AI", "CS", "GG"] + }, + "CS10003": { + "section": 2, + "slot": "B", + "room": "NR112", + "branches": ["AI", "CS", "HS"] + }, + "CS19003": { + "section": 3, + "branches": ["PH", "CS"], + "slot": "L", + "room": "PC Labs" + }, + "ME11003": [ + { + "section": 1, + "branches": ["AE", "MT", "CS"], + "slot": ["G", "S31"], + "room": "NR112" + }, + { + "section": 2, + "branches": ["EE", "IE", "CS"], + "slot": ["G", "S31"], + "room": "NR211" + } + ], + "PH11003": { + "section": 3, + "branches": ["CS", "CY"], + "slot": "D", + "room": "NR111" + }, + "PH19003": [ + { + "section": 3, + "branches": ["CS", "AI"], + "slot": "J", + "room": "Department" + }, + { + "section": 4, + "branches": ["CS", "AI"], + "slot": "X", + "room": "Department" + } + ], + "EE11003": { + "section": 3, + "branches": ["CS", "MF"], + "slot": ["C3", "S32"], + "room": "NR212" + } + } +} diff --git a/timetable/sem01/index.json b/timetable/sem01/index.json new file mode 100644 index 0000000..66062c0 --- /dev/null +++ b/timetable/sem01/index.json @@ -0,0 +1,65 @@ +{ + "timeTableSlotMatrix": { + "firstPeriodStartTime": 800, + "lunchStartTime": 1300, + "numPeriods": 9, + "days": { + "monday": [ + ["A2", "A3"], + ["A2", "A3"], + ["C3", "C4", "Q"], + ["B3", "Q"], + ["D3", "D4", "Q"], + ["H3", "J"], + ["U3", "U4", "J"], + ["U3", "U4", "J"], + ["S3"] + ], + "tuesday": [ + ["B2", "B3"], + ["B2", "B3"], + ["D2", "D3", "D4", "K"], + ["D2", "D3", "D4", "K"], + ["A3", "K"], + ["U4", "L"], + ["U3", "U4", "L"], + ["H2", "H3", "L"], + ["H2", "H3"] + ], + "wednesday": [ + ["C2", "C3", "C4"], + ["C2", "C3", "C4"], + ["F3", "F4", "R"], + ["G3", "R"], + ["E3", "E4", "R"], + ["X4", "X"], + ["X4", "X"], + ["X4", "X"], + ["X4"] + ], + "thursday": [ + ["D4"], + ["F3", "F4"], + ["C4", "M"], + ["E3", "E4", "M"], + ["G3", "M"], + ["I2", "N"], + ["V2", "V3", "V4", "N"], + ["V2", "V3", "V4", "N"], + ["S3"] + ], + "friday": [ + ["G3"], + ["E2", "E3", "E4"], + ["E2", "E4", "O"], + ["F2", "F3", "F4", "O"], + ["F2", "F4", "O"], + ["V4", "P"], + ["V3", "V4", "P"], + ["I2", "P"], + ["S3"] + ], + "saturday": [["EAA"], ["EAA"], ["EAA"], ["EAA"], ["EAA"], [], [], [], []] + } + } +}