Researchers in this area investigate computer and network systems:
- Design, develop, and prototype systems and networks with scalability, efficiency, reliability, privacy and security in mind.
- Evaluate their performance and effectiveness through experiments, measurements and analysis.
- Develop cutting-edge next-generation algorithms, architectures, and protocols for distributed systems and networks, including Internet of Things (IoT), cloud systems, pervasive and mobile systems, wireless and sensor networks.
- Moiz Arif (advisor: M. Mustafa Rafique)
- Kevin Tunder Elom Assogba (advisor: M. Mustafa Rafique)
- Carlos Barrios (advisor: Mohan Kumar)
- Eduardo Coelho de Lima (advisor: Minseok Kwon)
- Sahil Gupta (advisor: H.B. Acharya)
- Naureen Hoque (advisor: Hanif Rahbari)
- Joshua Karns (advisor: Travis Desell)
- Ali Khalid (advisor: Fawad Ahmad)
- Kaleem Nawaz Khan (advisor: Fawad Ahmad)
- Xinmiao Lin (advisor: Matthew Wright)
- Gursimran Singh Lnu (advisor: H.B. Acharya)
- Zimeng Lyu (advisor: Travis Desell)
- Nathanael James Mathews (advisor: Matthew Wright)
- Avinash Kumar Maurya (advisor: M. Mustafa Rafique)
- Jaiaid Mobin (advisor: M. Mustafa Rafique)
- Justin Ronaldo Namba (advisor: Michael Mior)
- Mohammad Saidur Rahman (advisor: Matthew Wright)
- Sovantharith Seng (advisor: Matthew Wright)
- Shaikh Akib Shahriyar (advisor: Matthew Wright)
- Saniat Javid Sohrawardi (advisor: Matthew Wright)
- Shuang Wei (advisor: Michael Mior)
- Yijing Wu (advisor: Matthew Wright)
- Hong Yang (advisor: Travis Desell & Alexander Ororbia)
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.
Concepts of Parallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required.
Data Communications and Networks
This course is an in-depth study of data communications and networks. The course covers design of, and algorithms and protocols used in, the physical, data link, network, transport, and application layers in the Internet; methods for modeling and analyzing networks, including graphs, graph algorithms, and discrete event simulation; and an introduction to network science. Programming projects will be required.
An in-depth study of operating system concepts. Topics include process synchronization, interprocess communication, deadlock, multiprogramming and multiprocessing, processor scheduling and resource management, memory management, static and dynamic relocation, virtual memory, file systems, logical and physical I/O, device allocation, I/O processor scheduling, process and resource protection. Programming projects involving the development of or modification to operating system kernel features will be required.
Application of operating system concepts to the design of hardware interfaces for a multiprogramming environment. Laboratory work includes the development of a multiprogramming (optionally, multiprocessing) kernel with system call and interrupt handling facilities, and the building of device drivers for a variety of peripheral devices. This course provides extensive experience with those aspects of systems programming that deal directly with the hardware interface. A significant team programming project is a major component of this course.
Computer Architecture is a study of the design of both modern and classic computer hardware. Topics include: a review of classical computer architectures; the design of operation codes and addressing modes, data formats, and their implementation; internal and external bus structures; architectural features to support virtual storage and page-replacement policies, high-level language features, and operating systems. Students will write programs which simulate the organization of several different processor architectures to help further their understanding of design choices.
Foundations of Computer Networks
This course is an introduction to the concepts and principles of computer networks. Students will design and implement projects using application protocols, and will study transport, network, and data link protocols and algorithms. The course also includes an introduction to local area networks, data transmission fundamentals, and network security. Programming projects and reading research papers will be required.
An introduction to the study of distributed systems. The course covers distributed system architectures such as client-server and peer-to-peer, distributed system design issues such as communication, fault tolerance, coordination, and deadlock, distributed system middleware such as remote method invocation (RMI) and tuple space, and the theory of distributed algorithms such as logical clocks and leader election. Students will also learn about ethical and legal concerns in computing and research. Programming projects are required.
Foundations of Parallel Computing
This course is a study of the hardware and software issues in parallel computing. Topics include an introduction to the basic concepts, parallel architectures and network topologies, parallel algorithms, parallel metrics, parallel languages, granularity, applications, parallel programming design and debugging. Students will become familiar with various types of parallel architectures and programming environments.
Topics in Systems
This course examines current topics in Systems. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Distributed Systems cluster, the Architecture and Operating Systems cluster, the Security cluster, or some combination of these three clusters.
Cyberinfrastructure integrates all parts of large-scale computing including a set of software, services, and tools in order to solve large-scale computing problems. This course will give an overview of the problems and solutions of large-scale computing, e.g., Large Hydron Collider. Students will design and develop new tools for cyberinfrastructure. Presentations and written reports are required. Note: Knowledge in data structure and object-oriented design, or permission of instructor is required.
Internet of Things Security
As the world becomes more and more connected as ever before via various kinds of devices and systems on the Internet, called the Internet of Things (IoT), the associated security and privacy-related issues also become increasingly challenging. This course is designed for students who wish to advance their knowledge in the Internet of Things security. It provides students opportunities to explore security and privacy-related issues manifested by various kinds of IoT devices and systems such as sensors, sensor networks, SCADA systems, vehicular systems, consumer IoT devices, etc.
Graduate Seminar in Computing Security
This course explores current topics in Computing Security. It is intended as a place holder course for faculty to experiment new course offerings in Computing Security undergraduate program. Course specific details change with respect to each specific focal area proposed by faculty.
- Measuring and Improving Public Key Infrastructure on the Internet [Chung]
- Identifying Privacy Leakages in Online Social Network [Chung]
- ARM-based system and software security [Zhao]
- Cache side channel attacks [Zhao]
- RDMA and Container Networking [Kwon, Rafique]
- SDN-based IoT Security [Acharya, Kwon]
- Programmable FIB Caching [Kwon]
- Distributed File Replication [Kwon, Rafique]
- Website Fingerprinting in Tor [Wright]
- Automatic Caching for Distributed Applications in Apache Spark [Mior]
- SparkFHE: Distributed Dataflow Processing with Fully Homomorphic Encryption [Hu]
- Designing and developing mechanism for efficient distributed deep learning on high-performance systems [Rafique]
- Citizen Science Grid [Desell]
- Machine learning for modulation obfuscation and frequency-offset-aware demodulation [Rahbari]
- Trust in emerging wireless systems and communications [Rahbari]
- Exploiting wireless frame preamble to support new physical-layer functions [Rahbari]
- Distributed Computing in Networks of UAVs/Drones [Kumar, Kwon, Hosseini]
- Protocols for Byzantine Fault-tolerance [ Kumar]
- Middleware for IoT-CPS Systems [Kumar]
- https://taejoong.github.io/ [Chung]
- Pervasive Computing Lab [Hu, Kumar, and Kwon]. https://www.cs.rit.edu/~pvcl/
- Center for Cybersecurity Lab [Acharya, Chung, Hu, Kwon, Mirakhorli, Mishra, Pan, Rahbari, Raj, Romanowski, Wright, Zhao]. https://www.rit.edu/cybersecurity/
- CyberspACe securiTy and forensIcs lab (CactiLab) [Zhao]. http://cactilab.rit.edu
- High-Performance Distributed Systems Laboratory [Rafique]. https://www.cs.rit.edu/~hpdsl/