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 0000000..2ec5c4e Binary files /dev/null and b/notes/images/cartesian.png differ diff --git a/notes/images/critical.png b/notes/images/critical.png new file mode 100644 index 0000000..828931e Binary files /dev/null and b/notes/images/critical.png differ diff --git a/notes/images/cylindricalcoord.png b/notes/images/cylindricalcoord.png new file mode 100644 index 0000000..73d3241 Binary files /dev/null and b/notes/images/cylindricalcoord.png differ diff --git a/notes/images/overdamp.png b/notes/images/overdamp.png new file mode 100644 index 0000000..1e6936b Binary files /dev/null and b/notes/images/overdamp.png differ diff --git a/notes/images/sphericalcoord.png b/notes/images/sphericalcoord.png new file mode 100644 index 0000000..98e8138 Binary files /dev/null and b/notes/images/sphericalcoord.png differ 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"], [], [], [], []] + } + } +}