Skip to the content.

The “really” small subset of courses I took at IIIT Hyderabad.


Events

Courses

Reports (Courses)

Additional details



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) taught by late Prof. R. Govindarajulu; I implement k-compare single-swap (KCSS) - an extension of CAS that enables atomically checking multiple addresses before making an update - as the course project, in Java. It is based on the paper “Nonblocking k-compare-single-swap” by V. Luchangco, M. Moir, and N. Shavit. As a part of course requirement, I present on “DDR, GDDR, HBM SDRAM Memory”, “Concurrency in Distributed Systems, Leslie Lamport papers”, and “Nonblocking k-compare-single-swap”. We also do a lot of exercises - these were optional, but I enjoy them. These include mutual exclusion problems and solutions, such as, Sleeping Barber Problem, Dining Philosopher Problem, Dekker’s Algorithm, Peterson’s Algorithm, Bakery Algorithm, Semaphore, and a Monitor; locks for synchronization, such as, Simple Reentrant Lock, Simple Read Write Lock, FIFO Read Write Lock, TAS Lock, TTAS Lock, Backoff Lock, Array Lock, CLH Lock, MCS Lock, and Bathroom Lock; concurrent data structures, such as, Locked Queue, Array Queue, Array Stack, Backoff Stack, Elimination Backoff Stack, Coarse Set, Fine Set, and Optimistic Set; data structures for software combining, such as Combining Tree; balanced counting networks, such as, Bitonic Network and Periodic Network; and a concurrent in-memory Savings Account.\ignore{During the course, we study the following research papers: “Nonblocking k-compare-single-swap”, “RISC-V offers simple, modular ISA”, “Real-world Concurrency”, “The Concurrency Challenge”, “Data Structures in the Multicore Age”, “Software and the Concurrency Revolution”, “Turing Lecture - The Computer Science of Concurrency - The Early Years”, and “Solution of a Problem in Concurrent Programming Control”.}

While studying the course Advanced Computer Networks (ACN), 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, and a Wide Area Network for File sharing, Energy \& Gas metering, Fire alarm, Burglar security between 1 Village \& 2 Apartments - as the course project. I also present on “Distance Vector Multicast Routing Protocol (DVMRP)”, “Submarine cables, Indian Perspective”, “Internet Hierarchy, APNIC”, and “Request For Comments (RFC)”, 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 Infectious Disease Modeling under the guidance of Prof. Kishore Kothapalli; I prepare presentations on “SIR Model, Disease Modelling, Epidemiology”, “Medical organizations, USA and India”, and write an animated demo of SIR Model simulation with Processing - a Java based graphical language and IDE. I also study C++, including Lvalues and Rvalues, and practice a number of CUDA programming examples, such as, querying Device Properties, Choosing a Device, computing Vector Sum, Dot Product, Matrix Multiplication, Histogram, and measuring Memory Allocation Performance.

During the course Advanced Computer Architecture (ACA), taken by Prof. R. Govindarajulu; I write a turing-complete 32-bit CPU 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), by Prof. Venkatesh Chopella; I model 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 → Q, Q → P). We also submit assignments of basic and induction based proofs on Coq - an interactive theorem prover, and model Merge sort as a multi-stage transition system in Elm.

I also take the course Optimization methods (OM) 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; perform Spectral Clustering - a graph-based data grouping algorithm; try Manifold Learning - an approach to non-linear dimensionality reduction; learn data visualization techniques, such as, Isomap, Locally linear embedding (LLE), and Multi-Dimensional Scaling (MDS); and Estimating COVID-19 new cases and unlockdown date.

While taking the course Compilers, taken by Prof. Suresh Purini; I implement an LLVM based parser in C++ for a Simpler version of the BASIC programming language. 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) by Prof. Venkatesh Chopella; I implement an Interpreter that parses an S-expression to AST, and then evaluates the AST. We implement it in steps - supporting Arithmetic, Lexical, Functional, Recursive, and Stores (variables) in both Haskell and Racket - a Scheme-like programming language. We solve assignments for performing a number of operations on Lists, S-Lists/Expressions, and Trees in Racket.

During taking the course Distributed Systems (DS) by Prof. Kishore Kothapalli; I write Python scripts for Unit Conversion with gRPC server and client and for Displaying who is logged in on remote server using gRPC. In the course Software Engineering (SE) taught by Prof. Prof. Raghu Reddy; I improve upon an existing Bowling Alley Management System (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) managed by Prof. Ramesh Loganathan, I develop a Basic HTTP server; and a Basic FTP serverimplementation 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. These include using FAT FS for file read/write, SPIFFS for file operations, Scan and log WiFi networks, WiFi access point setup, WiFi station setup, WiFi in AP and station mode with AP scanning, Internet time synchronization with NTP, Periodic alarm using timer group, Static website server in access point mode, Read temperature and humidity from SHT21 sensor, MQTT client for sending repeated messages, and SHT21 sensor with MQTT over WiFi.

The courses Discrete Mathematics and Algorithms (DMA) by Prof. Bapi Raju and Queuing Theory (QT) by Prof. Prof. Sujit Gujar (part of ACN) are purely theoretical. I also enjoy the online Virology course by Prof. Vincent Racaniello.



ORG