Skip to content

Commit

Permalink
🐛 with my story (academic)
Browse files Browse the repository at this point in the history
  • Loading branch information
wolfram77 committed Nov 25, 2023
1 parent 6543abf commit 38580d1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 6 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021-22 Subhajit Sahu
Copyright (c) 2021-23 Subhajit Sahu

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
40 changes: 35 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
The "really" small subset of courses i took at IIIT Hyderabad.
The "really" small subset of courses I took at IIIT Hyderabad.

<br>


#### Events
## Events

- 👨‍🔬 [R&D Showcase 2021](https://iiithf.github.io/rnd-showcase-2021/)


#### Courses
## Courses

- 🕸️ [Research activities (RA)](https://puzzlef.github.io)
- 🚂 [Queuing Theory (part of ACN)](https://github.com/iiithf/queuing-theory)
Expand All @@ -23,7 +23,7 @@ The "really" small subset of courses i took at IIIT Hyderabad.
- 📻 [Distributed Systems (DS)](https://github.com/iiithf/distributed-systems)


#### Reports (Courses)
## Reports (Courses)

- [SIR Model, Disease Modelling, Epidemiology](https://gist.github.com/wolfram77/45a01f935b6a72800af16ddbe0af34e3)
- [Medical organizations, USA and India](https://gist.github.com/wolfram77/a7a90549c3c36667860d2832c093a72b)
Expand All @@ -38,7 +38,7 @@ The "really" small subset of courses i took at IIIT Hyderabad.
- [Request For Comments (RFC)](https://gist.github.com/wolfram77/a2f344125aff9657f97e61b7f2219462)


#### Additional details
## Additional details

- [Courses for Monsoon 2020](https://github.com/iiithf/monsoon-courses)
- [Virology](https://github.com/iiithf/virology)
Expand All @@ -49,5 +49,35 @@ The "really" small subset of courses i took at IIIT Hyderabad.
<br>


## My Story

At IIIT Hyderabad, I take courses focusing on the systems side. These include Concurrent Data Structures (CDS), Advanced Computer Networks (ACN), Independent Study (IS), Advanced Computer Architecture (ACA), Software Foundations (SF), Optimizations Methods (OM), Compilers, Principles of Programming Languages (PoPL), Discrete Maths and Algorithms (DMA), Distributed Systems (DS), Software Engineering (SF), and Internals of Application Servers (IAS).

In the course **[Concurrent Data Structures (CDS)](https://github.com/iiithf/concurrent-data-structures)** taught by late Prof. R. Govindarajulu; I implement [k-compare single-swap (KCSS)](https://github.com/javaf/k-compare-single-swap) - an extension of CAS that enables atomically checking multiple addresses before making an update - as the \textit{course project}, in Java. It is based on the paper ["Nonblocking k-compare-single-swap"](https://dl.acm.org/doi/10.1145/777412.777468) by V. Luchangco, M. Moir, and N. Shavit. As a part of course requirement, I \textit{present} on ["DDR, GDDR, HBM SDRAM Memory"](https://gist.github.com/wolfram77/28da72ab511eacafbd55f3576fb03019), ["Concurrency in Distributed Systems, Leslie Lamport papers"](https://gist.github.com/wolfram77/3507129650f2e56e00da013a7de93ddb), and ["Nonblocking k-compare-single-swap"](https://gist.github.com/wolfram77/77758eb9f7d393598fc142d9559e5a5e). We also do a lot of \textit{exercises} - these were optional, but I enjoy them. These include \textit{mutual exclusion} problems and solutions, such as, [Sleeping Barber Problem](https://github.com/javaf/sleeping-barber-problem), [Dining Philosopher Problem](https://github.com/javaf/dining-philosophers-problem), [Dekker's Algorithm](https://github.com/javaf/dekker-algorithm), [Peterson's Algorithm](https://github.com/javaf/peterson-algorithm), [Bakery Algorithm](https://github.com/javaf/bakery-algorithm), [Semaphore](https://github.com/javaf/simple-semaphore), and a [Monitor](https://github.com/javaf/monitor-example); \textit{locks} for synchronization, such as, [Simple Reentrant Lock](https://github.com/javaf/simple-reentrant-lock), [Simple Read Write Lock](https://github.com/javaf/simple-read-write-lock), [FIFO Read Write Lock](https://github.com/javaf/fifo-read-write-lock), [TAS Lock](https://github.com/javaf/tas-lock), [TTAS Lock](https://github.com/javaf/ttas-lock), [Backoff Lock](https://github.com/javaf/backoff-lock), [Array Lock](https://github.com/javaf/array-lock), [CLH Lock](https://github.com/javaf/clh-lock), [MCS Lock](https://github.com/javaf/mcs-lock), and [Bathroom Lock](https://github.com/javaf/bathroom-lock); \textit{concurrent data structures}, such as, [Locked Queue](https://github.com/javaf/locked-queue), [Array Queue](https://github.com/javaf/array-queue), [Array Stack](https://github.com/javaf/array-stack), [Backoff Stack](https://github.com/javaf/backoff-stack), [Elimination Backoff Stack](https://github.com/javaf/elimination-backoff-stack), [Coarse Set](https://github.com/javaf/coarse-set), [Fine Set](https://github.com/javaf/fine-set), and [Optimistic Set](https://github.com/javaf/optimistic-set); data structures for \textit{software combining}, such as [Combining Tree](https://github.com/javaf/combining-tree); \textit{balanced counting networks}, such as, [Bitonic Network](https://github.com/javaf/bitonic-network) and [Periodic Network](https://github.com/javaf/periodic-network); and a concurrent in-memory [Savings Account](https://github.com/javaf/savings-account).\ignore{During the course, we study the following research papers: ["Nonblocking k-compare-single-swap"](https://gist.github.com/wolfram77/0dc7ef397381b0d0bb33bd38331cb572), ["RISC-V offers simple, modular ISA"](https://gist.github.com/wolfram77/333f712e250e3ef6fca913771f1c7a9e), ["Real-world Concurrency"](https://gist.github.com/wolfram77/7e3201aa76545759d284b3ab2d910944), ["The Concurrency Challenge"](https://gist.github.com/wolfram77/a0ed73c64f1954ff831a060be4c23092), ["Data Structures in the Multicore Age"](https://gist.github.com/wolfram77/88b9d87dfcce95d7fd591f8c77be1c35), ["Software and the Concurrency Revolution"](https://gist.github.com/wolfram77/c03196475788a7c3d000481dab6010da), ["Turing Lecture - The Computer Science of Concurrency - The Early Years"](https://gist.github.com/wolfram77/cfb8376d29f7d2de04143fc5ce411bc6), and ["Solution of a Problem in Concurrent Programming Control"](https://gist.github.com/wolfram77/9e38862624bfb9875dcbaec25471e7e6).}

While studying the course **[Advanced Computer Networks (ACN)](https://github.com/iiithf/advanced-computer-networks)**, taken by Prof. Shatrunjay Rawat; Ram, Ravi and I design a [Local Area Network for Personal and Common Internet connections along with Security Cameras at Golf View Apartments](https://github.com/iiithf/lan-design), and a [Wide Area Network for File sharing, Energy \& Gas metering, Fire alarm, Burglar security between 1 Village \& 2 Apartments](https://github.com/iiithf/wan-design) - as the course project. I also present on ["Distance Vector Multicast Routing Protocol (DVMRP)"](https://gist.github.com/wolfram77/ace297c1087a99fa2f3549914922bf19), ["Submarine cables, Indian Perspective"](https://gist.github.com/wolfram77/b1ea41b91a2971aab383a4f6cf4e6378), ["Internet Hierarchy, APNIC"](https://gist.github.com/wolfram77/53c17aa4aeb99f2c619202d044d783e7), and ["Request For Comments (RFC)"](https://gist.github.com/wolfram77/a2f344125aff9657f97e61b7f2219462), as a part of the requirements. We are also given assignments on reading RFCs, reading on CIDR, Farthest (Hop) traceroute, Switch comparision from various companies, and Firewall comparision from Cisco, Juniper, Checkpoint, Fortinet, Sophos, Barracuda, Sonicwall.

While doing **Independent Study (IS)** of \textit{Infectious Disease Modeling} under the guidance of Prof. Kishore Kothapalli; I prepare presentations on ["SIR Model, Disease Modelling, Epidemiology"](https://gist.github.com/wolfram77/45a01f935b6a72800af16ddbe0af34e3), ["Medical organizations, USA and India"](https://gist.github.com/wolfram77/a7a90549c3c36667860d2832c093a72b), and write an animated demo of [SIR Model simulation](https://github.com/orgs/processingf/sir_model) with Processing - a Java based graphical language and IDE. I also study C++, including [Lvalues and Rvalues](https://gist.github.com/wolfram77/e1e304d93e2543ebb616588d00cba795), and practice a number of CUDA programming examples, such as, querying [Device Properties](https://github.com/cudaf/device-properties), [Choosing a Device](https://github.com/cudaf/choose-device), computing [Vector Sum](https://github.com/cudaf/vector-sum), [Dot Product](https://github.com/cudaf/dot-product), [Matrix Multiplication](https://github.com/cudaf/matrix-multiplication), [Histogram](https://github.com/cudaf/histogram), and measuring [Memory Allocation Performance](https://github.com/cudaf/malloc-test).

During the course **[Advanced Computer Architecture (ACA)](https://github.com/iiithf/advanced-computer-architecture)**, taken by Prof. R. Govindarajulu; I write a [turing-complete 32-bit CPU](https://github.com/vhdlf/cpu_basic) in VHDL with data movement, branch, arithmetic, and logical instructions. It follows the instruction format of Intel x86 processors, where each instruction takes 2 register operands and an optional immediate value. Like x86, this has 16 32-bit registers, a flag register, and an instruction pointer. The memory address is made to be 16-bit for simulation purposes. A program running on the CPU (a simulation/testbench) was able to compute factorial of integers.

In the course **[Software Foundations (SF)](https://github.com/iiithf/software-foundations)**, by Prof. Venkatesh Chopella; I model [Balanced sliding window](https://github.com/htmlf/balanced-sliding-window) - a protocol used where reliable in-order delivery of packets is required (like TCP) - as a transition system, in Elm. Here, two communicating processes $P$ and $Q$ send packets to each other, through a channel. $P$ is considered to be the main sending process, and $Q$ is sending acknowledgements. Each process has a send and a recieve buffer, and the channel is thought of as having $2$ buffers ($P \rightarrow Q$, $Q \rightarrow P$). We also submit assignments of [basic and induction based proofs](https://github.com/iiithf/software-foundations/blob/main/Assignments/Coq) on Coq - an interactive theorem prover, and model [Merge sort as a multi-stage transition system](https://github.com/htmlf/merge-sort) in Elm.

I also take the course **[Optimization methods (OM)](https://github.com/iiithf/optimization-methods)** by Prof. C.V. Jawahar. As a part of the assignments, I write Python scripts to get introduced to the basic concepts of [Gradient Descent](https://github.com/python3f/gradient-descent); perform [Spectral Clustering](https://github.com/python3f/spectral-clustering) - a graph-based data grouping algorithm; try [Manifold Learning](https://github.com/python3f/manifold-learning) - an approach to non-linear dimensionality reduction; learn \textit{data visualization techniques}, such as, [Isomap](https://github.com/python3f/isomap), [Locally linear embedding (LLE)](https://github.com/python3f/locally-linear-embedding), and [Multi-Dimensional Scaling (MDS)](https://github.com/python3f/multidimensional-scaling); and [Estimating COVID-19 new cases and unlockdown date](https://github.com/python3f/covid19-estimate).

While taking the course **[Compilers](https://github.com/iiithf/compilers)**, taken by Prof. Suresh Purini; I implement an LLVM based parser in C++ for a [Simpler version of the BASIC programming language](https://github.com/cppf/basic-parser). It supports comments (with $'$), numbers, strings, variables (with type suffix), expressions, single line IF-ELSE, multiline IF-ELSE-ElSE IF-END IF, FOR-NEXT, WHILE-WEND, DO WHILE-LOOP, and DO-LOOP UNTIL loops, SUB-END SUB subroutines and FUNCTION-END FUNCTION functions, and a number of in-built commands, such as, CLS, INPUT, PRINT, DIM, REDIM, EXIT FOR/WHILE/DO, OPEN, CLOSE, EOF, and LINE INPUT.

In the course **[Principles of Programming Languages (PoPL)](https://github.com/iiithf/principles-of-programming-languages)** by Prof. Venkatesh Chopella; I implement an [Interpreter](https://github.com/haskellc/interpreter) that parses an S-expression to AST, and then evaluates the AST. We implement it in steps - supporting [Arithmetic](https://github.com/interpreterz/arithmetic2), [Lexical](https://github.com/interpreterz/lexical), [Functional](https://github.com/interpreterz/functional), [Recursive](https://github.com/interpreterz/recursive), and [Stores](https://github.com/interpreterz/stores) (variables) in both Haskell and Racket - a Scheme-like programming language. We solve assignments for performing a number of operations on [Lists](https://github.com/racketf/lists-assignment), [S-Lists/Expressions](https://github.com/racketf/lists-quiz), and [Trees](https://github.com/racketf/trees-assignment) in Racket.

During taking the course **[Distributed Systems (DS)](https://github.com/iiithf/distributed-systems)** by Prof. Kishore Kothapalli; I write Python scripts for [Unit Conversion with gRPC server and client](https://github.com/python3f/grpc-unit-conversion) and for [Displaying who is logged in on remote server using gRPC](https://github.com/python3f/grpc-who). In the course **[Software Engineering (SE)](https://github.com/iiithf/software-engineering)** taught by Prof. Prof. Raghu Reddy; I improve upon an existing [Bowling Alley Management System](https://github.com/javaf/bowling-alley) (in Java). We also do in-class activities on the Design of an Automobile Maintenance Diagnostic System, and a Drawing Editor. While taking the course **[Internals of Application Servers (IAS)](https://github.com/iiithf/internals-of-application-servers)** managed by Prof. Ramesh Loganathan, I develop a [Basic HTTP server](https://github.com/python3f/http-socket-server); and a [Basic FTP server](https://github.com/python3f/ftp-socket-server)implementation using sockets in Python. We later use these with Tensorflow and ZeroMQ to design an AI model running platform as a service.

During the Summer of 2019, I work with Prof. Vishal Garg as a part of his ongoing Smart metering project. Here, I learn about using the ESP32 microcontroller through a number of [Examples](https://github.com/iiithf/esp32-examples). These include using [FAT FS for file read/write](https://github.com/esp32f/storage_fatfs), [SPIFFS for file operations](https://github.com/esp32f/storage_spiffs), [Scan and log WiFi networks](https://github.com/esp32f/wifi_scan), [WiFi access point setup](https://github.com/esp32f/wifi_ap), [WiFi station setup](https://github.com/esp32f/wifi_sta), [WiFi in AP and station mode with AP scanning](https://github.com/esp32f/wifi_apsta), [Internet time synchronization with NTP](https://github.com/esp32f/sntp_sync), [Periodic alarm using timer group](https://github.com/esp32f/timer_alarm), [Static website server in access point mode](https://github.com/esp32f/http_server), [Read temperature and humidity from SHT21 sensor](https://github.com/esp32f/sensor_sht21), [MQTT client for sending repeated messages](https://github.com/esp32f/mqtt_client), and [SHT21 sensor with MQTT over WiFi](https://github.com/esp32f/mqtt_sht21).

The courses **[Discrete Mathematics and Algorithms (DMA)](https://github.com/iiithf/discrete-mathematics-and-algorithms)** by Prof. Bapi Raju and **[Queuing Theory (QT)](https://github.com/iiithf/queuing-theory)** by Prof. Prof. Sujit Gujar (part of ACN) are purely theoretical. I also enjoy the online **[Virology](https://github.com/iiithf/virology)** course by Prof. Vincent Racaniello.

<br>
<br>


[![](https://img.youtube.com/vi/379s_WzePts/maxresdefault.jpg)](https://www.youtube.com/watch?v=379s_WzePts)
[![ORG](https://img.shields.io/badge/org-wolfram77-green?logo=Org)](https://wolfram77.github.io)

0 comments on commit 38580d1

Please sign in to comment.