Other links:

Other links:

Course Catalogue

Ashoka University’s undergraduate course curriculum is taught across three semesters: Spring, Summer and Monsoon (Fall). Courses are broadly divided into three categories – Foundation Courses (core curriculum), Major & Minor Courses and Co-Curricular Courses.

You may search courses offered at Ashoka here. Please use the drop down menu to choose the specific semester and subject to see the full list of courses under each department. Foundation courses are offered in all semesters and do not have prerequisites. Offerings in other categories differ in each semester. Some higher level major/minor courses may have prerequisites.

To view Summer Semester Courses-2024: Click here

Computing in the Cloud

Code: CS-4622-1

Faculty: Manu Awasthi

Public Clouds are ubiquitous. A majority of SaaS (Software as a Service) applications are being deployed on public clouds owing to numerous benefits they offer – reduction in operational and deployment overheads, and a seemingly better economic model.

The number of public cloud providers is increasing (AWS, GCP, Azure etc.), with each provider offering an even larger number of services starting from barebones, but configurable VMs to serverless (Function as a Service, FaaS) computing offerings all the way to highly available, managed relational databases and data lakes. Public clouds have created an entirely new economic model where users are charged explicitly for every component of the computer system they use –  storage and memory costs (charged per GiB), compute costs (charged per vCPU and its “type”) and network inflow and outflow traffic, among many other such a la carte charges. 

The course will be divided into two parts. The first part will be an introduction to the  foundational technologies that have made public clouds possible. We will discuss topics both at the hardware and the system software level, starting with the basics of warehouse scale computing, the design and deployment of large scale datacenters and the innovations in CPU, memory, storage and network architectures. Next, we will discuss system software technologies like virtualization, containerization and software defined networking, which in conjunction with hardware innovations like IOMMUs have allowed physical resources to be efficiently shared across multiple tenants while maintaining performance.

In the second part of the course, we will build on these foundations to discuss the major components of developing SaaS applications and the various tradeoffs that software architects have to consider while designing and developing these apps for scaling up. Typical tradeoffs include choice of the technology stack, deciding whether to create an application as a monolith or a collection of microservices, incorporating high availability and high performance into application design and use of caching and tiering in application design. We will also discuss the various security considerations and the reasons why application developers must pay attention to them right from the start, rather than an afterthought. Finally, we will discuss data management, data lifecycle, data security of applications: the various factors that application developers should be cognizant of while designing and deploying applications to ensure data safety and integrity.

The tentative, and possibly exhaustive list of topics to be covered in the course is below. The list will be revised with exact topics closer to the start of the semester. 

Basics of Cloud Infrastructure and networking, Virtualization and Containers, Datacenter server architectures

Deployment architectures: Monoliths vs. Microservices

Application deployment considerations: N-tier architectures; Load Balancers, Application and Caching layers, Data management layers

Data management basics: ACID properties; Consistency; transactions in DB architectures; Schema Design and optimization; query construction and optimization; Replication / Sharding and when to use them

Data management layer: Choice of Relational vs. NoSQL options; In Memory DBs and Caching; Fine tuning existing DBs for performance 

Fault-tolerance and High Availability: Basic concepts, Implementations by Cloud providers

Application monitoring and alerting: Basics of observability; what to monitor, when to alert; Application logging for performance and debugging

Security considerations: DDoS prevention, firewalls; Basic security measures for all deployments: port scanning, internal and external IP addresses, tunneling, consideration of performance overheads due to security.

Basics of Cloud Economics: Understanding cloud billing; performance / dollar for your application.

Implications of privacy laws (GDPR e.g.) on application design and deployment; Reading and Understanding DPAs.

Study at Ashoka

Study at Ashoka

    Sticky Button