Teaching
Spring 2025: CSCI 4061 - Introduction to Operating
Meeting time: 1:00 PM‑2:15 PM TTh
Instructor: Ali Anwar
We will cover Processes/threads, process coordination, interprocess communication, asynchronous events, memory management, file systems. Systems programming projects using operating system interfaces and program development tools. Upon completion of CSCI 4061, students will be able to:
- Understand some of the central abstractions that most operating systems provide. This includes processes, files, I/O utilities, virtual memory and paging, threads, synchronization, and communication both within a single machine and over a network.
- Explain why these abstractions allow an operating system to provide security, integrity, flexibility, and efficiency.
- Demonstrate basic knowledge of the responsibilities of the OS kernel and how the kernel makes hardware features available to user programs through system calls.
- Effectively use various system calls standard to Unix environments to create processes, communicate and coordinate between processes, manage memory, manipulate files, and communicate over the network.
- Understand the benefits and drawbacks of parallelism and concurrency and write programs involving multiple processes and threads.
- Develop medium-sized programs in the C language that leverage system calls.
- Demonstrate insight into the broad concepts involved in systems programming such as basic communication protocols, efficient use of virtual memory, coordinated use of shared resources, and some internal OS structures.
Registration prerequisites: CSCI 2021.
Fall 2024: CSCI 5980 - Cloud Computing
Meeting time: 9:45 AM‑12:00 PM TTh
Instructor: Ali Anwar
Cloud computing serves many large-scale applications ranging from search engines like Google to social networking websites like Facebook to online stores like Amazon. More recently, cloud computing has emerged as an essential technology to enable emerging fields such as Artificial Intelligence (AI), the Internet of Things (IoT), and Machine Learning. The exponential growth of data availability and demands for security and speed has made the cloud computing paradigm necessary for reliable, financially economical, and scalable computation. The dynamicity and flexibility of Cloud computing have opened up many new forms of deploying applications on infrastructure that cloud service providers offer, such as renting of computation resources and serverless computing.
This course will cover the fundamentals of cloud services management and cloud software development, including but not limited to design patterns, application programming interfaces, and underlying middleware technologies. More specifically, we will cover the topics of cloud computing service models, data centers resource management, task scheduling, resource virtualization, SLAs, cloud security, software defined networks and storage, cloud storage, and programming models. We will also discuss data center design and management strategies, which enable the economic and technological benefits of cloud computing. Lastly, we will study cloud storage concepts like data distribution, durability, consistency, and redundancy.
Registration prerequisites: CSCI 4061, CSCI 2021, or undergraduate level computer systems course.
Fall 2023: CSCI 5980 - Cloud Computing
Meeting time: 9:45 AM‑12:00 PM TTh
Instructor: Ali Anwar
Cloud computing serves many large-scale applications ranging from search engines like Google to social networking websites like Facebook to online stores like Amazon. More recently, cloud computing has emerged as an essential technology to enable emerging fields such as Artificial Intelligence (AI), the Internet of Things (IoT), and Machine Learning. The exponential growth of data availability and demands for security and speed has made the cloud computing paradigm necessary for reliable, financially economical, and scalable computation. The dynamicity and flexibility of Cloud computing have opened up many new forms of deploying applications on infrastructure that cloud service providers offer, such as renting of computation resources and serverless computing.
This course will cover the fundamentals of cloud services management and cloud software development, including but not limited to design patterns, application programming interfaces, and underlying middleware technologies. More specifically, we will cover the topics of cloud computing service models, data centers resource management, task scheduling, resource virtualization, SLAs, cloud security, software defined networks and storage, cloud storage, and programming models. We will also discuss data center design and management strategies, which enable the economic and technological benefits of cloud computing. Lastly, we will study cloud storage concepts like data distribution, durability, consistency, and redundancy.
Registration prerequisites: None.
Fall 2022: CSCI 8980 - Topics in Modern Distributed Systems
Meeting time: 11:15 AM‑12:30 PM TTh
Instructor: Ali Anwar
Distributed Systems enable large scale modern applications ranging from internet-scale applications like Facebook, Google to web-based services like AWS, Azure, Amazon Lambda to distributed machine learning like Federated Learning. This course will cover various topics of distributed system, storage, and networking; including but not limited to cloud object stores, serverless frameworks, AI/deep learning, scheduling internet scale applications, containers, resource management, key value stores, and so on. We will discuss research papers from top conferences to fuel brainstorming sessions to generate cool and novel ideas. Students will also get the opportunity to build real world large scale distributed systems to realize the new ideas discussed in class.
Registration prerequisites: Have taken undergraduate-level Operating System or a similar course.